遭遇
经常在网页看电影(小电影)的朋友可能会经常遇到点击播放按钮,却出来个“是兄弟就来砍我”的页游页面,很烦。上一秒气的想摔手机,下一秒还是乖乖的返回再点一次。每每想自己搞一个app来看电影,却苦于没有资源。
偶遇
根据神的指引,偶然接触到了https://jsoup.org/,哇,真的会上瘾的。
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
- 从一个URL,文件或字符串中解析HTML;
- 使用DOM或CSS选择器来查找、取出数据;
- 可操作HTML元素、属性、文本;
小试牛刀
打开www.kk3.tv,按下F12再刷新一下就可以查看页面源代码了。此时,就可以根据Html标签相应的class即可获取到内容了。
举个栗子,想要得到上图①中的推荐内容,那么就可以根据图中②出的Html来一层一层的剥开它。
//将Html解析成Document
Document doc = Jsoup.connect(url).get();
//获取“最新推荐影片”div
Element divElement = doc.select("div.lside").select(".side-box").first();
//获取“最新推荐影片”div下的所有li
Elements liElements = divElement.select("li");
for(Element e : liElements){
Element aElement = e.selectFirst("a");
//电影名称
String movieName = aElement.text();
//电影详情页url
String url = aElement.attr("href");
}
所见即所得,当我们将所需的信息全部解析出来,那么,我们就可以为网站做个a。。。桥豆麻袋,顺着刚才我们拿到的详情页的url跟进去,出来的html里面根本没有电影的播放链接。What is this? Are you kidding me?
一路向北
界面都写好了,总不能算了吧,写都写了,这大过年的。
F5、F5、F5。。。
从上图中可以看到js、jpg、html、m3u8、png。。。桥豆麻袋,看到m3u8,如获至宝。继续跟。
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000,RESOLUTION=1080x420
/ppvod/E2D8DED09B2C26B00E76EAD5B6D202DE.m3u8
跟进去看看
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4,
/20190115/UWMFnxw6/800kb/hls/q5DrmBA8987000.ts
播放链接找到了,那么怎么得到的呢?往上找找play.js、player.js。黎明就在眼前,却如此的黑暗。跟着js转来转去迷路了。
一路向西
薅了许久头发发现,这电影真好k。。。呸,浏览器是怎么拿到的?浏览器能拿到,我应该也能拿到吧。
抱着试试看的态度,通过WebView来显示详情页。点击播放,好high哟,感觉人生已经到达了高潮。
WebViewClient webViewClient = new WebViewClient() {
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
//过滤出视频格式url
if (url.contains(".mp4") || url.contains(".m3u8") || url.contains(".avi") ||
url.contains(".mov") || url.contains(".mkv") || url.contains(".flv") ||
url.contains(".f4v") || url.contains(".rmvb")) {
log("播放url:" + url);
}
return super.shouldInterceptRequest(view, url);
}
};
终于,废了一小撮头发拿到了视频url。
功能需求、界面优化、发现bug都可以进群交流哦:847083651
项目地址:https://github.com/Mitaxing/MiTaMovie
感兴趣的小伙伴可以扫码体验一下(使用浏览器打开),提出宝贵的意见哦~