@Override protected Void doInBackground(Void... voids) { try { JSONObject contents = new JSONObject(downloadStringFromUrl(URLUtils.ZHIHU_DAILY_BEFORE_URL + date)); if (isFirstPage) { checkDate(getActivity(), contents.getString("date")); } JSONArray newsArray = contents.getJSONArray("stories"); for (int i = 0; i < newsArray.length(); i++) { JSONObject singleNews = newsArray.getJSONObject(i); DailyNews dailyNews = new DailyNews(); dailyNews.setThumbnailUrl( singleNews.has("images") ? (String) singleNews.getJSONArray("images").get(0) : null); dailyNews.setDailyTitle(singleNews.getString("title")); if (!newsList.contains(dailyNews)) { String newsInfoJson = downloadStringFromUrl( URLUtils.ZHIHU_DAILY_OFFLINE_NEWS_URL + singleNews.getString("id")); Document doc = Jsoup.parse(new JSONObject(newsInfoJson).getString("body")); isTheSameContent = false; boolean shouldPublish = updateDailyNews(doc, singleNews.getString("title"), dailyNews); if (shouldPublish) { publishProgress(dailyNews); } } } } catch (JSONException e) { isRefreshSuccess = false; warning(e); } catch (IOException e) { isRefreshSuccess = false; warning(e); } return null; }
private boolean updateDailyNews(Document doc, String dailyTitle, DailyNews dailyNews) throws JSONException { Elements viewMoreElements = doc.getElementsByClass("view-more"); if (viewMoreElements.size() > 1) { dailyNews.setMulti(true); Elements questionTitleElements = doc.getElementsByClass("question-title"); for (int j = 0; j < viewMoreElements.size(); j++) { if (questionTitleElements.get(j).text().length() == 0) { dailyNews.addQuestionTitle(dailyTitle); } else { dailyNews.addQuestionTitle(questionTitleElements.get(j).text()); } Elements viewQuestionElement = viewMoreElements.get(j).select("a"); if (viewQuestionElement.text().equals("查看知乎讨论")) { dailyNews.addQuestionUrl(viewQuestionElement.attr("href")); } else { return false; } } } else if (viewMoreElements.size() == 1) { dailyNews.setMulti(false); Elements viewQuestionElement = viewMoreElements.select("a"); if (viewQuestionElement.text().equals("查看知乎讨论")) { dailyNews.setQuestionUrl(viewQuestionElement.attr("href")); } else { return false; } // Question title is the same with daily title if (doc.getElementsByClass("question-title").text().length() == 0) { dailyNews.setQuestionTitle(dailyTitle); } else { dailyNews.setQuestionTitle(doc.getElementsByClass("question-title").text()); } } else { return false; } return true; }