1. 程式人生 > >今日頭條視訊下載器[android下載原始碼]

今日頭條視訊下載器[android下載原始碼]

在家無聊,看到趙四大神 寫的一個python指令碼下載今日頭條的工具,最後他還給出了移動端的樣子,可惜沒有原始碼,在他的虛心教導下,看完了他的文章,我決定自己擼一個,見笑了:
這裡寫圖片描述 這裡寫圖片描述

CSDN圖片最大值只能傳2m,所以用了兩張gif圖,大家見笑了。
下面說一下具體的實現過程,這一點說實在,基本上是翻譯了趙大神 的文章,沒啥要說,但是還是記錄一下吧。

具體的實現步驟大概可以用下的思路概括:
這裡寫圖片描述

說得挺高上,其實實現起來還是蠻簡單的。

1.分享程式碼如下,主要是activity的intent配置,這個一般人都知道,我就簡單貼一下:

  <activity
            android:name
=".MainActivity" android:configChanges="orientation|screenSize|keyboardHidden" android:screenOrientation="portrait">
<intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter> //----------------------分享關鍵程式碼------------------------------ <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data
android:mimeType="image/*"/>
</intent-filter> <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEND_MULTIPLE"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="image/*"/> </intent-filter> </activity> //----------------------分享關鍵程式碼------------------------------

在activity中,我們接收:

if (null != getIntent()) {
            String extra_text = getIntent().getStringExtra(Intent.EXTRA_TEXT);
            Log.d(TAG, "the extra text is " + extra_text);

            if (!TextUtils.isEmpty(extra_text)) {
                Pattern p = Pattern.compile("[a-zA-z]+://[^\\s]*");
                Matcher matcher = p.matcher(extra_text);
                if (matcher.find()) {
                    mBaseUrl = matcher.group();
                    Log.d(TAG, "the target url -->>" + mBaseUrl);
                }
            }
        }

主要是分享的程式碼像這樣的:

【再牛比的美國人也怕開掛的印度阿三,在阿三外掛面前都是弱雞】
http://m.pstatp.com/group/6382357464158831106/?iid=7548236297&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share
(想看更多合你口味的內容,馬上下載 今日頭條)
http://app.toutiao.com/news_article/?utm_source=link

所以需要用正則切一下,把關鍵的網址請求出來:

http://m.pstatp.com/group/6382357464158831106/?iid=7548236297&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

2.網路請求框架是okhttp3
為啥用ok3呢?這主要是抓包的過程中發現了我們搞的地址,會重定向很多次,像這樣的:

這裡寫圖片描述
本來是打算自己寫個HttpUrlConnection,或是使用Volley,但是發現處理這種多次的301,302不是特別方便,所以就使用了sequre的ok3,比較爽。具體的步驟,需要請求哪些引數,大家可以去看看趙四大神的文章,寫的很清楚,雖然是python寫的,相信大家能看懂。

  1. crc32演算法
    這個我當初感覺很難寫,沒想到java大法內部自帶了,很不錯有沒有:
String temp = "hello world";
CRC32 crc32 = new CRC32();
crc32.update(temp.getBytes());
Log.d(TAG, "crc32 code : " + crc32.getValue()));

就是這麼簡單

4.視訊播放軟體
這個是採用的gitbub上的一個知名軟體jiecao,網址是https://github.com/lipangit/JieCaoVideoPlayer, 大家可以看看,蠻不錯的一款視訊播放軟體,都是開源的,越來越屌啊 希望它。

5.側滑播放,刪除
這個不說了,RecyclerView中,比較多的,也就不說了,大家看原始碼就行了。