首页 > 代码库 > 今日头条视频下载器[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中,比较多的,也就不说了,大家看源码就行了。

6.源码
源码是这个:http://download.csdn.net/detail/u013762572/9746448
app_debug版本在这里:http://download.csdn.net/detail/u013762572/9746736,比较小,我也就懒得存了,大家喜欢可以看看。好了,今天第一天上班又加班了,我要回家吃饭了,谢谢。。。。

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    今日头条视频下载器[android下载源码]