各位matlabER,在MATLAB编程的同时,难道你还要重复打开QQMUSIC、百度音乐吗?
一个MATLAB函数帮你解决所有问题。
清除暂时请用wmp.close 如果无WMP,自动存为ans,即为ans.close
function wmp=music(songname)
%
%输出: wmp——COM.wmplayer_ocx组件对象
%
%输入:songname——歌曲名称
%
%示例:
% music('好心分手');
%
%停止播放:wmp.close 如果无WMP,自动存为ans。
%
% 音量调节 wmp.setting.volume=10
clear wmp
clear ans
str=dec2hex(unicode2native(songname));
str=[repmat('%',size(str,1),1) str];
str=reshape(str',1,[]);
% str=songname
song_url=['http://mp3.baidu.com/m?f=ms&rf=idx&tn=baidump3&ct=134217728&lf=&rn=&word=',str,'&lm=-1'];
webfile_stream=urlread(song_url);
%filelist=regexp(webfile_stream,'http://box\.zhangmen\.baidu\.com/m\?word=mp3.{1,300}target','match');
music_page_url=regexp(webfile_stream,'http://mp3\.baidu\.com/d\?song=.{1,400} target="_blank" onclick="return ','match');
music_page_url;
if ~isempty(music_page_url)
spc = strfind(music_page_url{1}, ' ') ;
music_page_url{1}=[music_page_url{1}(1:spc-1) '%20' music_page_url{1}(spc+1:end)];
music_page=urlread(music_page_url{1}(1:end-47));
else
% wmp=nan;
disp(['没有找到与《',songname,'》相关的歌曲']);
return;
end
filelist=regexp(music_page,'a id="downlink" href=".{1,200}" onclick','match'); %22 ***** 1
fileurl=['http://mp3.baidu.com' filelist{1}(23:end-9)];
% http...... " target
close all;
figure('visible','off');
disp(['作者:@王小川@matlab & @baby_wolf 新浪微博:http://weibo.com/hgsz2003/ ; http://weibo.com/n/%E8%9C%80%E5%B1%B1%E6%8E%8C%E9%97%A8V'])
disp('歌曲连接成功');
disp(['歌曲下载链接:', music_page_url{1}(1:end-46),'' ]);
% disp(music_page_url{1}(1:end-46));
clipboard('copy',fileurl);
% fprintf('%s\n',song_url);
% fprintf('%s\n',filelist{1}(1:end-8));
% web=actxcontrol('shell.explorer.2',[0 0 400 400 ]);
% web.Navigate(filelist{1}(1:end-8))
% web(filelist{1}(1:end-8),'-browser');
wmp=actxserver('wmplayer.ocx');
wmp.url=fileurl;
% wmp.setting.volume=10;
disp(['当前的播放状态为:',wmp.status]);
disp('停止播放请清除在变量空间清除COM.wmplayer_ocx,或者输入:名称.close');
disp('如需要调整音量,请按照如下设置:名称.setting.volume=10');
end
% end
|