aboutsummaryrefslogtreecommitdiffstats
path: root/youtube/youtube.py
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2015-10-10 22:06:02 +0200
committerGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2015-10-10 22:06:02 +0200
commit2f2bd135d3dfd34cfef327b2d35012cfa2062701 (patch)
treebe1343e8a6e6a9246d584b8e6e55687dfca7c8d6 /youtube/youtube.py
parent7778f0a6a01d5b8c9a9cd1547623bc0ba46eaff5 (diff)
downloadyoutube-podcaster-2f2bd135d3dfd34cfef327b2d35012cfa2062701.tar.gz
youtube-podcaster-2f2bd135d3dfd34cfef327b2d35012cfa2062701.tar.bz2
youtube-podcaster-2f2bd135d3dfd34cfef327b2d35012cfa2062701.zip
Initial code import
Diffstat (limited to 'youtube/youtube.py')
-rw-r--r--youtube/youtube.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/youtube/youtube.py b/youtube/youtube.py
new file mode 100644
index 0000000..bcbff21
--- /dev/null
+++ b/youtube/youtube.py
@@ -0,0 +1,44 @@
1#!/usr/bin/env python3
2
3from urllib import parse, request
4import json
5
6
7class Youtube:
8
9 def __init__(self, api_key):
10 self.api_key = api_key
11
12 def _api_call(self, section, parameters):
13 parameters["key"] = self.api_key
14 data = parse.urlencode(parameters)
15 api_base = "https://www.googleapis.com/youtube/v3"
16 response = request.urlopen("%s/%s?%s" % (api_base, section, data))
17 return json.loads(response.read().decode("UTF-8"))["items"]
18
19 def search(self, query):
20 return self._api_call("search", {"part": "snippet",
21 "q": query})
22
23 def get_channel(self, username):
24 return self._api_call("channels", {"part": "snippet",
25 "forUsername": username})
26
27 def get_uploads(self, channel):
28 content_details = self._api_call("channels", {"part": "contentDetails",
29 "id": channel["id"]})
30 uploads_id = content_details[0]["contentDetails"]["relatedPlaylists"]["uploads"]
31 return self._api_call("playlists", {"part": "snippet",
32 "id": uploads_id})
33
34 def get_playlists(self, channel, max_results=5):
35 return self._api_call("playlists", {"part": "snippet",
36 "channelId": channel["id"],
37 "maxResults": max_results})
38
39 def get_playlist_items(self, playlist, max_results=5):
40 return self._api_call("playlistItems", {"part": "snippet",
41 "playlistId": playlist["id"],
42 "maxResults": max_results})
43
44# vim: set ts=8 sw=4 tw=0 et :