From f1ddf104809017784aa136ebb8ff7e2cfb96d5f4 Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Sun, 11 Oct 2015 00:15:23 +0200 Subject: Changed directory structure to use pyscaffold --- youtube_podcaster/youtube/youtube.py | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 youtube_podcaster/youtube/youtube.py (limited to 'youtube_podcaster/youtube/youtube.py') diff --git a/youtube_podcaster/youtube/youtube.py b/youtube_podcaster/youtube/youtube.py new file mode 100644 index 0000000..bcbff21 --- /dev/null +++ b/youtube_podcaster/youtube/youtube.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 + +from urllib import parse, request +import json + + +class Youtube: + + def __init__(self, api_key): + self.api_key = api_key + + def _api_call(self, section, parameters): + parameters["key"] = self.api_key + data = parse.urlencode(parameters) + api_base = "https://www.googleapis.com/youtube/v3" + response = request.urlopen("%s/%s?%s" % (api_base, section, data)) + return json.loads(response.read().decode("UTF-8"))["items"] + + def search(self, query): + return self._api_call("search", {"part": "snippet", + "q": query}) + + def get_channel(self, username): + return self._api_call("channels", {"part": "snippet", + "forUsername": username}) + + def get_uploads(self, channel): + content_details = self._api_call("channels", {"part": "contentDetails", + "id": channel["id"]}) + uploads_id = content_details[0]["contentDetails"]["relatedPlaylists"]["uploads"] + return self._api_call("playlists", {"part": "snippet", + "id": uploads_id}) + + def get_playlists(self, channel, max_results=5): + return self._api_call("playlists", {"part": "snippet", + "channelId": channel["id"], + "maxResults": max_results}) + + def get_playlist_items(self, playlist, max_results=5): + return self._api_call("playlistItems", {"part": "snippet", + "playlistId": playlist["id"], + "maxResults": max_results}) + +# vim: set ts=8 sw=4 tw=0 et : -- cgit v1.2.3