一直都想嘗試開發本身還沒接觸過的某類APP,之前剛入門的時候,就有一個夢想:開發社交類、地圖類、新聞類、支付、電商類、直播類、遊戲類這些APP。社交類的大二的時候已經開發過一款即時通信的APP,用的是網易雲信的SDK;地圖、支付、電商也接觸過了;遊戲的話作過一個植物大戰殭屍的demo,算是Cocos2D的入門;新聞和直播以前公司尚未接到過這些項目的開發,因此一直沒機會接觸,因此一直很想把當初的夢想實現,作完新聞類和直播類的APP。html
今日七月份告別了母校,正式畢業了,同時也辭職了,大二時和同窗們一塊兒建立公司接項目作,如今已經一年了,想着出去闖一闖,因此辭去了工做,這個項目是6月份多的時候動工的,那時候下班就擠出時間寫代碼,用的是目前的流行框架,RxJava + Retrofit + MVP,原本在七月份上旬就接近完成本身定下的那些功能,只是期間遇到一些問題。java
問題一:今日頭條封閉了老接口,原先是參考大神 wey ye作過的今日頭條,根據他之前抓包知道的接口來獲取新聞列表,後臺接口都獲取不到數據了,因此只好想辦法解決,以前雖然有使用過fidder抓包,但是用得不是很熟悉,遇到一些https加密過的數據包就一籌莫展,後來瞭解到fidder能夠解https的數據包,今日頭條的新聞數據獲取問題就迎刃而解了;android
問題二:新聞數據的規律,新聞列表的item佈局有好多種,在沒有接口文檔的前提下,須要根據返回的json數據進行分析,找出規律,知道根據哪一個字段來判斷屬於哪一個佈局,這個也是至關耗時間。git
問題三:視頻解析,原先參考的項目中,用到的解析視頻方法,這個時候也莫名失效了,因此只好本身去尋找新的解析視頻的方法,找到很多的方法,有的是讀取新聞詳情頁的html頁面,經過正則匹配出對應視頻的地址,還有其餘的一些方法,可是以爲仍是不合心意,知道找到了一個解析今日頭條視頻地址的網站,經過傳入詳情頁的網址就可以獲取到對應視頻的地址,因此開始抓包獲取那個接口,視頻解析的問題迎刃而解。github
但是問題老是接踵而來,本想着今天能夠高高興興地寫博客,分享本身寫的這個開源項目,彼此交流下,誰知早上播放視頻的時候,視頻地址又解析出錯了,此時,個人心裏是崩潰的。調試之後才知道原來那個解析視頻的接口,做者對接口的訪問作了驗證,估計是爲了防止別人直接調用他的接口,必定要經過他的網站來訪問,分析了他的js代碼後,發現他接口新增了兩個參數,參數名沒有什麼意義,是"r"和"s","r"是一段隨機產生的數字,"s"則是根據 視頻地址 + "@" + r拼接後,進行一系列的處理,與運算、左移、右移,而後生成的對應的一端數字,後臺應該也是根據這個算法進行驗證,驗證r和s是否有效。面試
知道做者新增了驗證後,也知道了其加密的js代碼,本想將加密的js函數轉換成java代碼寫的方法,可最後發現太過複雜,因此放棄了這個念頭,找到了java能夠讀取js腳本,不過在android中用不了,沒有對應的ScriptEngine類,只好經過WebView加載本地的js腳本進行解析 ,實現java代碼與js互調,而後獲取js產生的加密後的哪兩個參數"r"和"s"的值。算法
目前已經完成以前頂下的那些功能,好比新聞的多item佈局展現(新聞列表)、視頻列表、新聞詳情、視頻詳情、點擊頁簽下拉刷新、查看評論列表等。很是高興能夠作本身喜歡作的項目,並不是爲了工做而作在,純粹爲了接觸一些新的事物,嘗試作本身沒有開發過的APP,最近也在找新的工做,雖然已經面試了幾個工做,但最後仍是因爲薪資不符合本身的要求以及公司的發展前景,從而拒絕了,以爲找工做不該該求急,應該一直找,找到本身心中心儀的工做,這樣工做的時候纔會愉快,事半功倍。數據庫
精仿今日頭條,數據是抓取今日頭條App的數據。使用RxJava + Retrofit + MVP開發的開源項目,僅供學習用途。json
項目github地址:github.com/chaychan/To…併發
感謝大神 wey ye,項目中參考到他作過的仿今日頭條項目
[點擊下載體驗]
##查看和保存圖片
1.獲取各類頻道的新聞列表,包括視頻和非視頻新聞;
2.查看新聞詳情,包括視頻和非視頻新聞的詳情;
3.查看新聞評論列表;
4.新聞數據本地存儲,已經獲取到的新聞數據保存在本地數據庫中,上拉加載更多時可查看歷史新聞;
5.底部頁籤點擊下拉刷新;
6.視頻列表播放中的視頻不可見時中止播放。
7.查看和保存圖片。(8.23更新)
1.新聞數據的抓取和分析,使用fidder抓取,具體使用可參考下面的網址:
2.新聞列表多種Item佈局的展現,使用的是BaseRecyclerViewAdapterHelper,ReclerView萬能適配器,多佈局使用可參考下面的網址:
3.視頻源地址的解析,原先參照大神 wey ye的解析已經失效,目前是經過今日頭條視頻解析這個網址解析的,傳入新聞詳情頁地址,獲取到對應視頻下載地址的json數據。
這個屬於我的開發做品,僅作學習交流使用,如用到實際項目還需多考慮其餘因素如併發等,請多多斟酌。諸位勿傳播於非技術人員,拒絕用於商業用途,數據均屬於非正常渠道獲取,原做公司擁有全部權利。