예제 #1
0
    @Override
    protected void onPostExecute(String result) {

      if (isCancelled()) return;
      else {
        if (isNew) {
          youtubeChannelSearch.clear();
          searchAdapter.notifyDataSetChanged();
        }
        try {
          JSONObject res = new JSONObject(response);

          if (Var.isJsonString(res, "nextPageToken")) pageToken = res.getString("nextPageToken");

          if (Var.isJsonArray(res, "items")) {
            JSONArray items = res.getJSONArray("items");
            for (int i = 0; i < items.length(); i++) {
              JSONObject item = items.getJSONObject(i);

              YoutubeChannel channel = new YoutubeChannel();
              if (Var.isJsonObject(item, "id")) { // Channel Id
                JSONObject id = item.getJSONObject(("id"));
                if (Var.isJsonString(id, "channelId")) {
                  channel.setFeedId(id.getString("channelId"));
                }
              }

              if (Var.isJsonObject(item, "snippet")) { // Channel Name
                JSONObject snippet = item.getJSONObject("snippet");
                if (Var.isJsonString(snippet, "title")) {
                  channel.setName(snippet.getString("title"));
                }

                if (Var.isJsonObject(snippet, "thumbnails")) { // Channel Thumbnail
                  JSONObject thumbnails = snippet.getJSONObject("thumbnails");
                  if (Var.isJsonObject(thumbnails, "default")) {
                    JSONObject def = thumbnails.getJSONObject("default");
                    if (Var.isJsonString(def, "url")) {
                      channel.setThumbnail(def.getString("url"));
                    }
                  }
                }

                youtubeChannelSearch.add(channel);
              }
            }
            searchAdapter.notifyDataSetChanged();
            if (youtubeChannelSearch.size() >= maxResults)
              searchBusy = false; // Keep busy if nothing is returned
          }

        } catch (Throwable t) {
          t.printStackTrace();
        }
      }
    }
예제 #2
0
    @Override
    protected String doInBackground(Void... params) {
      searchBusy = true;
      try {

        searchChannel.getYoutubeFeeds().clear();

        // TODO check the internet connection here
        String channelUrl =
            "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id="
                + searchChannel.getFeedId()
                + "&fields=items%2FcontentDetails&key="
                + Var.DEVELOPER_KEY;
        String playlists = "";
        String channel = Var.HTTPGet(channelUrl);

        JSONObject res = new JSONObject(channel);
        if (Var.isJsonArray(res, "items")) {
          JSONArray items = res.getJSONArray("items");
          if (items.length() > 0) {
            JSONObject item = items.getJSONObject(0);
            if (Var.isJsonObject(item, "contentDetails")) {
              JSONObject contentDetails = item.getJSONObject(("contentDetails"));
              if (Var.isJsonObject(contentDetails, "relatedPlaylists")) { // Channel Name
                JSONObject relatedPlaylists = contentDetails.getJSONObject("relatedPlaylists");
                if (Var.isJsonString(relatedPlaylists, "uploads"))
                  playlists +=
                      (Var.isEmpty(playlists) ? "" : ",") + relatedPlaylists.getString("uploads");
                if (Var.isJsonString(relatedPlaylists, "likes"))
                  playlists +=
                      (Var.isEmpty(playlists) ? "" : ",") + relatedPlaylists.getString("likes");
                if (Var.isJsonString(relatedPlaylists, "favorites"))
                  playlists +=
                      (Var.isEmpty(playlists) ? "" : ",") + relatedPlaylists.getString("favorites");
              }
            }
          }
        }

        String playlistUrl =
            "https://www.googleapis.com/youtube/v3/playlists?part=snippet&id="
                + URLEncoder.encode(playlists, "UTF-8")
                + "&fields=items(id%2Csnippet)&key="
                + Var.DEVELOPER_KEY;
        String playlist = Var.HTTPGet(playlistUrl);

        JSONObject play = new JSONObject(playlist);
        if (Var.isJsonArray(play, "items")) {
          JSONArray items = play.getJSONArray("items");
          for (int i = 0; i < items.length(); i++) {
            JSONObject item = items.getJSONObject(i);

            if (Var.isJsonString(item, "id")) { // Feed Id
              YoutubeFeed feed = new YoutubeFeed(item.getString("id"));
              feed.setType(Var.TYPE_YOUTUBE_PLAYLIST);
              feed.setChannelHandle(searchChannel.getFeedId());

              if (Var.isJsonObject(item, "snippet")) { // Feed Name
                JSONObject snippet = item.getJSONObject("snippet");
                if (Var.isJsonString(snippet, "title")) {
                  if (snippet.getString("title").startsWith("Upload")) feed.setName("Uploads");
                  else feed.setName(snippet.getString("title"));
                }

                if (Var.isJsonObject(snippet, "thumbnails")) { // Feed Thumbnail
                  JSONObject thumbnails = snippet.getJSONObject("thumbnails");
                  if (Var.isJsonObject(thumbnails, "default")) {
                    JSONObject def = thumbnails.getJSONObject("default");
                    if (Var.isJsonString(def, "url")) {
                      feed.setThumbnail(def.getString("url"));
                    }
                  }
                }
              }

              searchChannel.getYoutubeFeeds().add(feed);

              Log.d(TAG, "youtube feed added " + feed.getName());
            }
          }

          YoutubeFeed activityFeed = new YoutubeFeed();
          activityFeed.setChannelHandle(searchChannel.getFeedId());
          searchChannel.getYoutubeFeeds().add(activityFeed); // Activity
        }

      } catch (Throwable t) {
        t.printStackTrace();
      }
      return null;
    }