各位 matlab爱好者,在MATLAB编程的时,我们还想听听music,为什么不考虑用matlab来实现呢?
一个MATLAB函数帮你解决所有问题。
music.m
- function wmp=music(songname)
- %
- %输出: wmp——COM.wmplayer_ocx组件对象
- %
- %输入:songname——歌曲名称
- %
- %示例:
- % music('好心分手');
- %
- %停止播放:wmp.close 如果无WMP,自动存为ans。
- %
- % 音量调节 wmp.setting.volume=10
- % @王小川_matlab 制作 http://weibo.com/hgsz2003/
- % @baby_wolf 制作 http://weibo.com/n/%E8%9C%80%E5%B1%B1%E6%8E%8C%E9%97%A8V
-
- 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('%sn',song_url);
- % fprintf('%sn',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
复制代码
清除暂时请用wmp.close 如果无WMP,自动存为ans,即为ans.close
大家觉得这个cool吗?
2
|
|
|
|
用windows media player播放音乐,编程简单些,多谢楼主分享。
|
|
|
|
|
楼主好人 下来看看
|
|
|
|
|
楼主,怎么在点击run的时候总是提示songname呢?
|
|
|
|
|