コード例 #1
0
    @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;
    }
コード例 #2
0
    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;
    }