aboutsummaryrefslogtreecommitdiffstats
path: root/youtube
diff options
context:
space:
mode:
Diffstat (limited to 'youtube')
-rw-r--r--youtube/channel.py12
-rw-r--r--youtube/common.py11
2 files changed, 19 insertions, 4 deletions
diff --git a/youtube/channel.py b/youtube/channel.py
index 3238341..4d7b563 100644
--- a/youtube/channel.py
+++ b/youtube/channel.py
@@ -178,7 +178,15 @@ def channel_playlists_html(polymer_json):
except KeyError:
items = []
else:
- items = contents['twoColumnBrowseResultsRenderer']['tabs'][2]['tabRenderer']['content']['sectionListRenderer']['contents'][0]['itemSectionRenderer']['contents'][0]['gridRenderer']['items']
+ item_section = contents['twoColumnBrowseResultsRenderer']['tabs'][2]['tabRenderer']['content']['sectionListRenderer']['contents'][0]['itemSectionRenderer']['contents'][0]
+ try:
+ items = item_section['gridRenderer']['items']
+ except KeyError:
+ if "messageRenderer" in item_section:
+ items = []
+ else:
+ raise
+
items_html = grid_items_html(items, {'author': microformat['title']})
return yt_channel_items_template.substitute(
@@ -256,6 +264,8 @@ def get_channel_page(url, query_string=''):
return channel_about_page(polymer_json)
elif tab == 'playlists':
polymer_json = common.fetch_url('https://www.youtube.com/channel/' + channel_id + '/playlists?pbj=1', headers_1)
+ '''with open('debug/channel_playlists_debug', 'wb') as f:
+ f.write(polymer_json)'''
polymer_json = json.loads(polymer_json)
return channel_playlists_html(polymer_json)
else:
diff --git a/youtube/common.py b/youtube/common.py
index d9429a2..42d1381 100644
--- a/youtube/common.py
+++ b/youtube/common.py
@@ -60,7 +60,7 @@ medium_playlist_item_template = Template('''
<a class="title" href="$url" title="$title">$title</a>
- <address><a href="$author_url">$author</a></address>
+ <div class="stats">$stats</div>
</div>
''')
medium_video_item_template = Template('''
@@ -446,7 +446,7 @@ stat_templates = (
Template('''<span class="views">$views</span>'''),
Template('''<time datetime="$datetime">$published</time>'''),
)
-def get_video_stats(html_ready):
+def get_stats(html_ready):
stats = []
if 'author' in html_ready:
if 'author_url' in html_ready:
@@ -479,7 +479,7 @@ def video_item_html(item, template, html_exclude=set()):
for key in html_exclude:
del html_ready[key]
- html_ready['stats'] = get_video_stats(html_ready)
+ html_ready['stats'] = get_stats(html_ready)
return template.substitute(html_ready)
@@ -489,6 +489,11 @@ def playlist_item_html(item, template, html_exclude=set()):
html_ready['url'] = URL_ORIGIN + "/playlist?list=" + html_ready['id']
html_ready['datetime'] = '' #TODO
+
+ for key in html_exclude:
+ del html_ready[key]
+ html_ready['stats'] = get_stats(html_ready)
+
return template.substitute(html_ready)