RushPlayer流媒体地址提取
RushPlayer是一个不错的播放器,功能挺全的,不过开发起来应该难度不大,因为libvlc基本上把底层的工作做了,只需要做个界面就差不多了,比较有意思的是,内置了一个流媒体,用了vlc的同学很开心,因为地址都有了,直接用vlc打开就可以了啊,相当于RushPlayer为大家整理了一个流媒体列表,相当不错。
RushPlayer的流媒体播放地址在:
http://rushplayer.com/wapstream.aspx?t=1&v=1.53&app=1000
首先写个程序,把这个列表抓下来,然后保存成json格式,方便后期处理,用java确实不是很方便,因为代码太长了,估计Python,10行就能搞定。但是熟能生巧,用起来顺手,没办法。
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* http://rushplayer.com/wapstream.aspx?t=1&v=1.53&app=1000
* 把rushplayer的播放列表转成json格式。
*
* @author GF<gf@gfzj.us>
*
*/
public class RushPlayer {
Logger log = Logger.getLogger("RushPlayer");
private byte[] Input2Byte(InputStream in) {
byte[] buf = new byte[2048];
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
int len = -1;
while ((len = in.read(buf)) > 0) {
bo.write(buf, 0, len);
}
in.close();
buf = bo.toByteArray();
bo.close();
} catch (IOException e) {
e.printStackTrace();
}
return buf;
}
public byte[] get(String url) {
HttpURLConnection con = null;
log.info(url);
try {
con = (HttpURLConnection) new URL(url).openConnection();
con.addRequestProperty("Accept-Language",
"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
con.setRequestProperty(
"User-Agent",
"Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3");
con.setReadTimeout(10000);
con.setConnectTimeout(5000);
return Input2Byte(con.getInputStream());// new
} catch (IOException e) {
e.printStackTrace();
System.out.println(new String(Input2Byte(con.getErrorStream())));
}
return null;
}
public String getStr(String url) {
try {
return new String(get(url), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
Pattern Pone = Pattern.compile("<a href=\\"(.*?)\\">(.*?)</a>",
Pattern.DOTALL | Pattern.MULTILINE);
public String getOne(String url) {
String html = getStr(url);
html = html.substring(html.lastIndexOf("suggestlist"));
Matcher m = Pone.matcher(html);
StringBuilder sb = new StringBuilder();
while (m.find()) {
sb.append(",\\n\\"").append(m.group(1).trim().replace("\\"", "\\\\\\""))
.append("\\":\\"")
.append(m.group(2).trim().replace("\\"", "\\\\\\""))
.append("\\"");
}
return sb.length() > 0 ? sb.substring(2) : "";
}
public String getAll() {
StringBuilder sb = new StringBuilder();
Pattern Ptitle = Pattern.compile("color:Wheat;\\">(.*?)</span>");
Pattern Plist = Pattern.compile("<a href=\\"(.*?)\\">(.*?)</a>",
Pattern.DOTALL | Pattern.MULTILINE);
for (int i = 0; i < 3; i++) {
String html = getStr("http://rushplayer.com/wapstream.aspx?v=1.53&app=1000&t="
+ i);
Matcher m = Ptitle.matcher(html);
if (m.find()) {
String title = m.group(1).trim();
sb.append(",\\n\\"").append(title).append("\\":{\\n");
html = html.substring(html.indexOf("suggestlist"));
Matcher m1 = Plist.matcher(html);
StringBuilder lists = new StringBuilder();
while (m1.find()) {
lists.append(",\\n").append("\\"")
.append(m1.group(2).trim().replace("\\"", "\\\\\\""))
.append("\\":{");
lists.append(
getOne("http://rushplayer.com/"
+ (m1.group(1).trim()))).append("\\n");
lists.append("}");
}
if (lists.length() > 0)
sb.append(lists.substring(2));
sb.append("\\n}");
}
}
return "{\\n" + sb.substring(2) + "\\n}";
}
public static void main(String[] args) {
RushPlayer rp = new RushPlayer();
System.out.println(rp.getAll());
}
}
使用:
- 编译:javac RushPlayer.java -encoding utf-8
- 运行: java RushPlayer > playlist.json
下面就可以通过处理这个json文件来处理这个列表了。javascript或者node.js或者php都可以啊。下面这个列表是我在2014年07月03日提出出来的,rushplayer可能有更新,建议自己生成。点击下载rushplayer流媒体列表
举个例子,我用js处理这个json文件成vlc播放列表:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="rushplayer.json"></script>
</head>
<body>
<textarea id="result" name="" cols="80" rows="10"></textarea>
<script>
var result='<?xml version="1.0" encoding="UTF-8"?>\\n<playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1">\\n<title>RushPlayer</title>\\n<trackList>';
for(var i in s){
console.log(i);
for(var j in s[i]){
console.log(j);
for(var k in s[i][j]){
result+="<track><title>"+(i+"/"+j+"/"+s[i][j][k])+"</title><location>"+k+"</location></track>\\n";
}
}
}
result+="</trackList></playlist>";
result=result.replace(/&/g,'&');
document.getElementById("result").value=result;
</script>
</body>
</html>
现在你可以下载这个播放列表直接用vlc打开:rushplayer.xspf
# 意外发现
今天发现一个朝鲜电视台:mmst://112.170.78.145/chosun 主持人说话都带哭的,真受不鸟。大家一定要自己用MPlayer或者vlc感受一下。