吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 87838|回复: 462
收起左侧

[其他原创] 【Android】利用爬虫将电影网站打包成一个APP(8.26更新)

    [复制链接]
wushaominkk 发表于 2018-8-21 11:18
本帖最后由 wushaominkk 于 2018-8-26 15:14 编辑

以前总是通过HDMI线将电脑连接电视看剧看电影,但是每次想快进啊进行一些操作过于麻烦,手机上的APP的资源又太少,于是想到将电影网站打包成一个APP!
APP已经差不多做好了,最近也比较忙,没什么时间去弄,界面很丑,这里我讲讲我的主要思路,自己动手才有乐趣!
在做之前整理下思路,怎样才能把网站搬到APP上呢?
有两个方法:
1.通过WebView简单粗暴将整个网站搬过来,几十行代码搞定!但是用户体验不是很好,广告多,字体小,操作也不是很方便
2.利用爬虫,需要什么爬什么!然后将数据显示在自己做的界面上!

Let'go
首先我们搭一个界面大概的界面出来

[Java] 纯文本查看 复制代码
  ButterKnife.bind(this);
        mTabBar.init(getSupportFragmentManager())
                .setImgSize(50, 50)
                .setFontSize(10)
                .setTabPadding(4, 6, 10)
                .setChangeColor(Color.RED, Color.DKGRAY)
                .addTabItem("首页", R.mipmap.ic_launcher_round, HomeFragment.class)
                .addTabItem("电影", R.mipmap.ic_launcher_round, MoveFragment.class)
                .addTabItem("电视剧", R.mipmap.ic_launcher_round, TVplayFragment.class)
                .addTabItem("动漫", R.mipmap.ic_launcher_round, CartoonFragment.class);


一个4个Fragment绑定一个activity,每个fragment
上面是个recyclerview
底部是BottomTabBar

QQ图片20180821100217.png

界面搭好了就差数据了
导入图片加载和网络请求依赖
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.mcxiaoke.volley:library:1.0.19'打开网站,F12查看当前网页源码,找到需要的数据
QQ图片20180821101830.png
首先通过网络请求获取整个页面数据,然后正则匹配找到我们需要的数据,图片,链接,标题和评分,新建一个Bean类将数据储存到里面
[Java] 纯文本查看 复制代码
public class DataBean {
    private String DataName;
    private String DataScore;
    private String DataImg;
    private String DataNetWork;

    public String getDataName() {
        return DataName;
    }

    public void setDataName(String dataName) {
        DataName = dataName;
    }

    public String getDataScore() {
        return DataScore;
    }

    public void setDataScore(String dataScore) {
        DataScore = dataScore;
    }

    public String getDataImg() {
        return DataImg;
    }

    public void setDataImg(String dataImg) {
        DataImg = dataImg;
    }

    public String getDataNetWork() {
        return DataNetWork;
    }

    public void setDataNetWork(String dataNetWork) {
        DataNetWork = dataNetWork;
    }
}

通过recyclerView将数据显示到界面上,通过接口回调设置点击事件点击图片跳转到详情页
[Java] 纯文本查看 复制代码
RequestQueue queue = Volley.newRequestQueue(getActivity());
        MyStringRequest stringRequest = new MyStringRequest(getHosturl(), new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                String regEx = "<li><div class=li-box><div class=img-box></div><a href=\"(.+?)\"><img src=\"(.+?)\" onerror=\".+?\"><span class=back></span><span>(.+?)</span></div><P><a href=\".+?\" target=\"_blank\">(.+?)</a></P></li>";
                
                Pattern pattern = Pattern.compile(regEx);
                mMatcher = pattern.matcher(response);
                if (mData != null) {
                    mData.clear();
                }
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        while (mMatcher.find()) {
                            //Log.e(TAG, matcher.group());
                            /*Log.e(TAG, mMatcher.group(1));
                            Log.e(TAG, mMatcher.group(2));
                            Log.e(TAG, mMatcher.group(3));
                            Log.e(TAG, mMatcher.group(4));*/
                            DataBean dataBean = new DataBean();
                            dataBean.setDataNetWork(mMatcher.group(1));
                            dataBean.setDataImg(mMatcher.group(2));
                            dataBean.setDataName(mMatcher.group(4));
                            dataBean.setDataScore(mMatcher.group(3));
                            mData.add(dataBean);
                        }
                    }
                }).start();
                if (mHomeAdapter == null) {
                    mHomeAdapter = new homeAdapter(getContext(), mData, mGridLayoutManager);
                }
                mRecyclerView.setAdapter(mHomeAdapter);
                mHomeAdapter.notifyDataSetChanged();
                mTvThisPage.setText("第"+mThisPage+"页");
                Toast.makeText(getContext(), "第" + mThisPage + "页", Toast.LENGTH_SHORT).show();
                mHomeAdapter.setItemClickListener(new homeAdapter.OnItemClickListener() {
                    @Override
                    public void onItemClick(int position) {
                        String url = mData.get(position).getDataNetWork();
                        String title = mData.get(position).getDataName();
                        String img_url = mData.get(position).getDataImg();
                        String requestUrl = getHosturl() + url;
                        //Toast.makeText(getContext(), requestUrl, Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(getContext(), DetailsActivity.class);
                        intent.putExtra("title", title);
                        intent.putExtra("img_url", img_url);
                        intent.putExtra("requestUrl", requestUrl);
                        startActivity(intent);
                    }
                });

                //Log.e(TAG, response);

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, error.getMessage(), error);
                mThisPage--;
                Toast.makeText(getContext(), "网络不稳定!加载失败!请稍后重试!", Toast.LENGTH_SHORT).show();

            }
        });
        queue.add(stringRequest);
    }


QQ图片20180821102547.png

为了便于维护将首页封装成基类,然后将电影,电视剧和动漫页面继承,稍加改动,这样4个页面就出来了

[Java] 纯文本查看 复制代码
public class MoveFragment extends HomeFragment implements View.OnClickListener {

    @Override
    protected void intitView() {
        hostUrl = "http://m.yiybb.com/dianying/";
        super.intitView();
        mThisPage = 1;
        listTpye = "List_15_";
        mTvThisPage.setVisibility(View.VISIBLE);


    }

    @Override
    protected void initData() {
        super.initData();
    }

    @Override
    protected String setTitle() {
        return "电影";
    }

    @Override
    protected void setViibilly() {
        page.setVisibility(View.VISIBLE);
    }


第二大步:
然后我们来做详情页
通过Intent获取到上个页面传递过来的URL,图片链接和标题,通过URL获取整个页面数据,然后正则匹配,其他需要的数据

QQ图片20180821103136.png

[Java] 纯文本查看 复制代码
 RequestQueue queue = Volley.newRequestQueue(this);
        MyStringRequest stringRequest = new MyStringRequest(mRequestUrl, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                //Log.e(TAG, response );
                String regEx = "<li><a href=\"/(.+?)\" >(.+?)</a></li>";
                /*
                <div class="movie"><ul><div class="img"><div class="img-box-2"></div><img src="http://88.meenke.com/img_buyhi/201805/2018052876045761.jpg" alt="帝王攻略" border="0"></div><h1>帝王攻略</h1><li>更新至:[17]</li><li>年 代:2018</li><li>类 型:<a href="/dhp_lianzai/Index.html" target="_blank">动画连载</a></li><li class="cksc"><a id="shoucang" href="#sc">收藏</a></li></ul></div>
                 */

                Pattern pattern = Pattern.compile(regEx);
                mMatcher = pattern.matcher(response);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        while (mMatcher.find()) {
                            //Toast.makeText(DetailsActivity.this, mMatcher.group() + "", Toast.LENGTH_SHORT).show();
                            //Log.e(TAG, mMatcher.group());
                            //Log.e(TAG, mMatcher.group(1));
                            //Log.e(TAG, mMatcher.group(2));
                            String url = mMatcher.group(1);
                            String title = mMatcher.group(2);
                            //Log.e(TAG, mMatcher.group(3));
                            //Log.e(TAG, mMatcher.group(4));
                            DetailsBean dataBean = new DetailsBean();
                            dataBean.setTitle(title);
                            dataBean.setUrl(url);
                            mData.add(dataBean);
                        }
                    }
                }).start();
                DetailAdapter adapter = new DetailAdapter(DetailsActivity.this,mData,mGridLayoutManager);
                mDaRecyView.setAdapter(adapter);
               adapter.setItemClickListener(new DetailAdapter.OnItemClickListener() {
                   @Override
                   public void onItemClick(int position) {
                       String url = "http://m.yiybb.com/"+mData.get(position).getUrl();
                       Intent intent = new Intent(DetailsActivity.this,PlayActivity.class);
                       intent.putExtra("url",url);
                       startActivity(intent);
                   }
               });
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, error.getMessage(), error);
                Toast.makeText(DetailsActivity.this, "网络不稳定!", Toast.LENGTH_SHORT).show();

            }
        });
        queue.add(stringRequest);
    }


第三大步:
最重要就是播放页面了,这里费了点时间
刚开始我也是按照前2步骤去操作,但是发现怎么都爬不到获取不到链接打开原网站才发现播放链接是动态加载的而且还3层加密了!MMP
打开播放页面,F12选择sources,查看源码

QQ图片20180821104201.png

<div class="playing">就是播放页面,但是里面空的,证明这是动态加载了这个标签
继续看源码找script标签看下里面做了什么
<script language="javascript">var StrHtml;var url=set_code(unescape("JN0HT%250G%256B%256BJeN.Ty6l.167%256Bx%256BlDvoVW%256B1dTw8xE.mkyw",0,0));var nexturl="no";var nextpath="no";var Player={Url:url,Height:240,Width:600,Show:null};function $ShowPlayer(w,h){document.write($Showhtml());}</script>
<script language="javascript" src="Play/23.js"></script><script language="javascript">$ShowPlayer(600,240);</script>
JN0HT%250G%256B%256BJeN.Ty6l.167%256Bx%256BlDvoVW%256B1dTw8xE.mkyw是第一加密后的链接,至于怎么来的,我们不管他,这个数据是可以爬出来的
unescape()方法是JS自带解密方法
set_code()再次加密


找到了主要的逻辑,顺着思路往下走,
在netWork刷新页面看下加载了那些东西,主要看js,发现加载了这么几个东东


QQ图片20180821105232.png

一个个查看吧,里面搜索set_code这个方法


QQ图片20180821105417.png

找到了set_code方法:
大概看了下,里面又调用了____e() 和 ____d()
以为这样就找到了链接,我刚开始也这么觉得,但是在网页上打开还是错误的
继续回到sources,查看源码

<script language="javascript" src="Play/23.js"></script><script language="javascript">$ShowPlayer(600,240);</script>
这个才是主要动态加载标签的主要逻辑,在源码了找到Play/23.js
function $ShowPlayer(width,height){
        StrHtml = '<iframe id="ffplayer" src="/ck/ck.html?'+url+'|" width="96%" height="94%"  allowfullscreen="true" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>';
        document.write(StrHtml);
}

将之前加密的URL再一次拼接!
找到了加密方法,那我们来做一个工具类将其解密


[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html>

        <head>
                <meta charset="utf-8" />
                <title></title>
        </head>

        <body>
                <script language="JavaScript">
                        var StrHtml;
                        function ____e(){
                                return"0123456789,ABCDEFG,HIJKLMN,OPQRST,UVWXYZ,abcdefg,hijklmn,opqrst,uvwxyz"
                                }
                        function ____d(){
                                return"4560123987,GFEDCBA,MHIJLNK,PQRSTO,ZUVWXY,gfedcba,mhijlnk,pqrsto,zuvwxy"
                                }
                        function set_code(s,en,isN){ 
                                var e_s = en?____e():____d(), d_s = en?____d():____e(),str=""; 
                                e_s=isN?e_s.split(",")[0]:e_s,d_s=isN?d_s.split(",")[0]:d_s; 
                                for(var i=0;i<s.length;i++){ 
                                        n=-1;n=e_s.indexOf(s.charAt(i)); 
                                        if(n!=-1){ 
                                                str+=d_s.charAt(n) 
                                        }else{ 
                                                str+=s.charAt(i) 
                                        } 
                                }
                                return str 
                        }; 

                        function getUrl(first_url){
                                var url = set_code(unescape(first_url, 0, 0));
                                StrHtml="http://m.yiybb.com/ck/ck.html?" +url+ "|";
                                window.open(StrHtml);
                        }

                </script>
                
                        
                 </body>

</html>


接下来将HTML放到asset/index.html

[Java] 纯文本查看 复制代码
mWebView.loadUrl("file:///android_asset/index.html");
        WebSettings settings = mWebView.getSettings();
        settings.setJavaScriptEnabled(true);
        mWebView.addJavascriptInterface(this, "android");
        mWebView.setWebChromeClient(webChromeClient);
        mWebView.setWebViewClient(mWebViewClient);
        settings.setDomStorageEnabled(true);

这样就可以通过webView与本地的HTML文件交互,
接下来获取到播放页面第一次加密的链接,
[Java] 纯文本查看 复制代码
 RequestQueue queue = Volley.newRequestQueue(this);
        MyStringRequest stringRequest = new MyStringRequest(mUrl, new Response.Listener<String>() {
            @RequiresApi(api = Build.VERSION_CODES.KITKAT)
            @Override
            public void onResponse(String response) {
                Log.d(TAG, response);
                String regEx = "unescape\\(\"(.+?)\",0,0\\)";
                Pattern pattern = Pattern.compile(regEx);
                mMatcher = pattern.matcher(response);

                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        while (mMatcher.find()) {
                            Log.e(TAG, mMatcher.group(1));
                            mFirst_url = mMatcher.group(1);
                            final String requestUrl = "javascript:getUrl('"+mFirst_url+"')";
                            Log.e(TAG, requestUrl );
                            mWebView.post(new Runnable() {
                                @Override
                                public void run() {
                                    mWebView.loadUrl(requestUrl);

                                }
                            });

                        }
                    }
                }).start();

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, error.getMessage(), error);

                Toast.makeText(PlayActivity.this, "网络不稳定!加载失败!请稍后重试!", Toast.LENGTH_SHORT).show();

            }
        });
        queue.add(stringRequest);

    }



调用html自己写的工具类getUrl方法


将获取到的参数传进去,然后再加载网页


大功告成!
可能步骤比较多,说的比较乱,没看懂的可以留言咨询!
我拿的4.3系统的破手机测试没问题,其他没测试,可能会有很多BUG,UI没什么时间弄,源码放出来,自己修改,仅供娱乐!
8.26更新
修复了详情页西瓜视频不能播放的无效链接
修复了播放页面参数错误

链接:https://pan.baidu.com/s/1YLkuMZ-s5XO27Wq3ZqH4fw 密码:1anw





免费评分

参与人数 157吾爱币 +156 热心值 +136 收起 理由
毒油漆 + 1 + 1 不明觉厉
bbsky3099A + 1 谢谢@Thanks!
AllHan + 1 + 1 谢谢@Thanks!
moguangying2008 + 1 + 1 热心回复!
alen456 + 1 热心回复!
qqzz8858 + 1 + 1 热心回复!
1229186544 + 1 + 1 用心讨论,共获提升!
liangpu0505 + 1 我很赞同!
cdk005 + 1 + 1 热心回复!
baconzh + 1 + 1 鼓励转贴优秀软件安全工具和文档!
xiaomayi2012 + 1 + 1 谢谢@Thanks!
a731062834 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
白月初 + 1 + 1 谢谢@Thanks!
a523058664 + 1 + 1 不明觉厉 大神栽树 我们乘凉评分
RH + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zysh_2001 + 1 + 1 我很赞同!
码怪 + 1 + 1 目测是大佬
TongSir + 1 + 1 谢谢@Thanks!
zerglurker + 1 + 1 用心讨论,共获提升!
panjingweb + 1 + 1 我很赞同!
六七英里 + 1 + 1 用心讨论,共获提升!
Wjr7god + 1 用心讨论,共获提升!
zttevo千 + 1 我很赞同!
Gust + 1 用心讨论,共获提升!
zhcxt + 1 + 1 谢谢@Thanks!
小飞侠666 + 1 我很赞同!
cq3501 + 1 热心回复!
hjdx001 + 1 + 1 虽然看不懂。。。
Mouse + 1 + 1 谢谢@Thanks!
照片依旧 + 1 热心回复!
szrock118 + 1 用心讨论,共获提升!
bingbingbd + 1 + 1 我很赞同!
Crappy_Designer + 1 + 1 我很赞同!
kizzlepc + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小鱼敏哲 + 1 谢谢Thanks!
chaines + 1 热心回复!
天游客 + 1 + 1 我很赞同!
Lowell7 + 1 + 1 谢谢@Thanks!
610294467 + 1 + 1 我很赞同!
认定666 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yjs0370 + 1 + 1 用心讨论,共获提升!
whjywwx + 1 + 1 谢谢@Thanks!
fengmosir + 1 + 1 谢谢@Thanks!
xuehaiyouya + 1 + 1 我很赞同!
刘曰天 + 1 + 1 谢谢@Thanks!
wt135081 + 1 用心讨论,共获提升!
jnez112358 + 1 + 1 谢谢@Thanks!
feshinzs + 1 + 1 热心回复!
Zhao5970 + 1 + 1 谢谢@Thanks!//以关注 楼主的更新
不知火龙果 + 1 谢谢@Thanks!
sayhi1984 + 1 + 1 大神,膜拜!
swt1990 + 2 + 1 鼓励转贴优秀软件安全工具和文档!
shinehuang82 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
timepj + 1 + 1 谢谢@Thanks!
s3nake + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Sen + 1 哇, 钢需。 源码好评
fengshu + 1 + 1 谢谢@Thanks!
安尼大大 + 1 + 1 我很赞同!
风衣地象 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
dagonlau + 1 + 1 厉害,太厉害了
Mr丶天蝎 + 2 + 1 大佬这个网站还可以开车,真棒!
天道酬勤180611 + 1 谢谢@Thanks!
seoke + 1 + 1 谢谢@Thanks!
Aimervs + 1 + 1 好厉害,就是有点累
liphily + 3 + 1 就喜欢看这种硬怼的文章。不愧是版主之位
Pig-let + 1 + 1 码住
丶懒喵喵 + 2 + 1 年薪千万大佬日常
wdyy + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
皮一下很嗨 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yzy9943 + 1 + 1 大佬牛比
yangld + 1 用心讨论,共获提升!
不安 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hellohappy0 + 1 666 向你学习
shenweb + 1 + 1 用心讨论,共获提升!
Ww吾爱破解 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Limit-fly + 1 + 1 厉害厉害,mark了。
花落雨 + 1 + 1 用心讨论,共获提升!
zhaojunkai + 1 + 1 谢谢@Thanks!
小北风 + 1 + 1 热心回复!
xiashanyu + 2 + 1 热心回复!
破小白 + 1 + 1 我很赞同!
ahhh1hhha + 1 + 1 谢谢@Thanks!
ydpll + 1 + 1 虽然看不懂,但很佩服大神
dpp + 1 + 1 热心回复!
spll6 + 1 谢谢@Thanks!
yubing2261 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kgdin + 1 + 1 谢谢@Thanks!
_Deity + 1 + 1 我很赞同!
温馨提示 + 1 + 1 真的是6
Frank6120ci + 1 + 1 我很赞同!
Core-i7 + 1 好东西,太好了
给我一个拥抱 + 1 + 1 用心讨论,共获提升!
云月明 + 1 + 1 用心讨论,共获提升!
dechong + 1 + 1 谢谢@Thanks!
独行风云 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xkwdm + 1 + 1 用心讨论,共获提升!
mxd7340729 + 1 + 1 谢谢@Thanks!
dou023 + 1 + 1 谢谢@Thanks!
gghh1101 + 1 + 1 瞻仰大佬
王七岁 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mararmyjj 发表于 2018-8-22 17:06
本帖最后由 mararmyjj 于 2018-8-22 17:41 编辑

看了set_code加密方法,就是 ____d中的字符变成____e中对应的字符,en参数就是倒过来(____e中的字符变成____d中对应的字符),isN参数是只转换数字,不存在____d中则原字符。
核心js方法:
str.charAt(0)就是按下标0取第一个字符,数字下标=》某个字符。
strs.indexOf("J")就是J在strs中的下标,某个字符=》数字下标。
简化过后的代码:
d="4560123987,GFEDCBA,MHIJLNK,PQRSTO,ZUVWXY,gfedcba,mhijlnk,pqrsto,zuvwxy"
e="0123456789,ABCDEFG,HIJKLMN,OPQRST,UVWXYZ,abcdefg,hijklmn,opqrst,uvwxyz"
function set_code(s){
        str=""
        for(var i=0;i<s.length;i++){
    str+=d.indexOf(s.charAt(i))!=-1?e.charAt(d.indexOf(s.charAt(i))):s.charAt(i)
  }
  return str
}
str=set_code(unescape("JN0HT%250G%256B%256BJeN.Ty6l.167%256Bx%256BlDvoVW%256B1dTw8xE.mkyw"))
document.write(str)

同样看懂的点个热心!

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
夏雨微凉 + 1 + 1 用心讨论,共获提升!
wushaominkk + 1 + 1 用心讨论,共获提升!
左三圈 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

js01 发表于 2018-8-21 11:48
feizao 发表于 2018-8-21 11:23
大神你的成品了,怎么没找到链接哦

点评

成品比较大,上传太慢了,就不发了  详情 回复 发表于 2018-8-21 11:31
彬哥有礼了 发表于 2018-8-22 17:32
感谢分享
 楼主| wushaominkk 发表于 2018-8-21 11:31
feizao 发表于 2018-8-21 11:23
大神你的成品了,怎么没找到链接哦

成品比较大,上传太慢了,就不发了
feizao 发表于 2018-8-21 11:33
wushaominkk 发表于 2018-8-21 11:31
成品比较大,上传太慢了,就不发了

哦哦,虽然看不懂代码破解的过程,还是谢谢分享过程,让别人学习
mk723508 发表于 2018-8-21 11:39
这个APP成品会有多大啊,大神把你的APP发出来啊

点评

百度云上传太慢了,晚点发源码吧!  详情 回复 发表于 2018-8-21 11:43
 楼主| wushaominkk 发表于 2018-8-21 11:43
mk723508 发表于 2018-8-21 11:39
这个APP成品会有多大啊,大神把你的APP发出来啊

百度云上传太慢了,晚点发源码吧!

点评

期待楼主的源码  详情 回复 发表于 2018-8-21 11:44
苏紫方璇 发表于 2018-8-21 11:44
wushaominkk 发表于 2018-8-21 11:43
百度云上传太慢了,晚点发源码吧!

期待楼主的源码
头像被屏蔽
mengqiu 发表于 2018-8-21 11:54
wushaominkk 发表于 2018-8-21 11:43
百度云上传太慢了,晚点发源码吧!

期待中......
rhknzp 发表于 2018-8-21 11:56
太白 表示看不懂  还是期待成品和源码吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 13:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表