aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Taylor <user234683@users.noreply.github.com>2018-12-17 02:24:55 -0800
committerJames Taylor <user234683@users.noreply.github.com>2018-12-17 02:24:55 -0800
commit75b0c52f5743f837f7dc676fb780882388820e4d (patch)
treef2047e26ed8fd69e3830405e9fa8f1c2a0090377
parent4825337f3b4ba7064e83f75c12abf44ff30ab6d7 (diff)
downloadyt-local-75b0c52f5743f837f7dc676fb780882388820e4d.tar.lz
yt-local-75b0c52f5743f837f7dc676fb780882388820e4d.tar.xz
yt-local-75b0c52f5743f837f7dc676fb780882388820e4d.zip
Ability to sort channel videos by oldest and by views
-rw-r--r--youtube/channel.py26
-rw-r--r--youtube/comments.css5
-rw-r--r--youtube/comments.py6
-rw-r--r--youtube/shared.css5
-rw-r--r--youtube/watch.py3
-rw-r--r--yt_channel_items_template.html28
6 files changed, 50 insertions, 23 deletions
diff --git a/youtube/channel.py b/youtube/channel.py
index a2acb23..8bb549e 100644
--- a/youtube/channel.py
+++ b/youtube/channel.py
@@ -146,7 +146,7 @@ def channel_tabs_html(channel_id, current_tab, search_box_value=''):
)
else:
result += channel_tab_template.substitute(
- href_attribute = 'href="' + URL_ORIGIN + "/channel/" + channel_id + "/" + tab_name.lower() + '"',
+ href_attribute = ' href="' + URL_ORIGIN + '/channel/' + channel_id + '/' + tab_name.lower() + '"',
tab_name = tab_name,
)
result += channel_search_template.substitute(
@@ -154,11 +154,26 @@ def channel_tabs_html(channel_id, current_tab, search_box_value=''):
search_box_value = html.escape(search_box_value),
)
return result
-
-
+channel_sort_button_template = Template('''\n<a class="sort-button"$href_attribute>$text</a>''')
+sorts = {1: 'views', 2: 'oldest', 3: 'newest'}
+def channel_sort_buttons_html(channel_id, current_sort):
+ result = ''
+ current_sort = int(current_sort)
+ for i in range(1,4):
+ if i == current_sort:
+ result += channel_sort_button_template.substitute(
+ href_attribute='',
+ text = 'Sorted by ' + sorts[current_sort]
+ )
+ else:
+ result += channel_sort_button_template.substitute(
+ href_attribute=' href="' + URL_ORIGIN + '/channel/' + channel_id + '/videos?sort=' + str(i) + '"',
+ text = 'Sort by ' + sorts[i]
+ )
+ return result
-def channel_videos_html(polymer_json, current_page=1, number_of_videos = 1000, current_query_string=''):
+def channel_videos_html(polymer_json, current_page=1, current_sort=3, number_of_videos = 1000, current_query_string=''):
microformat = polymer_json[1]['response']['microformat']['microformatDataRenderer']
channel_url = microformat['urlCanonical'].rstrip('/')
channel_id = channel_url[channel_url.rfind('/')+1:]
@@ -178,6 +193,7 @@ def channel_videos_html(polymer_json, current_page=1, number_of_videos = 1000, c
header = common.get_header(),
channel_title = microformat['title'],
channel_tabs = channel_tabs_html(channel_id, 'Videos'),
+ sort_buttons = channel_sort_buttons_html(channel_id, current_sort),
avatar = '/' + microformat['thumbnail']['thumbnails'][0]['url'],
page_title = microformat['title'] + ' - Channel',
items = items_html,
@@ -336,7 +352,7 @@ def get_channel_page(url, query_string=''):
gevent.joinall(tasks)
number_of_videos, polymer_json = tasks[0].value, tasks[1].value
- return channel_videos_html(polymer_json, page_number, number_of_videos, query_string)
+ return channel_videos_html(polymer_json, page_number, sort, number_of_videos, query_string)
elif tab == 'about':
polymer_json = common.fetch_url('https://www.youtube.com/channel/' + channel_id + '/about?pbj=1', common.desktop_ua + headers_1)
polymer_json = json.loads(polymer_json)
diff --git a/youtube/comments.css b/youtube/comments.css
index bcd5b30..79d88c3 100644
--- a/youtube/comments.css
+++ b/youtube/comments.css
@@ -43,11 +43,6 @@
grid-column-gap: 10px;
justify-content:start;
}
- .comment-links a{
- background-color: #d0d0d0;
- padding: 2px;
- justify-self:start;
- }
.comments{
margin-top:10px;
diff --git a/youtube/comments.py b/youtube/comments.py
index fe89ac9..abc0a79 100644
--- a/youtube/comments.py
+++ b/youtube/comments.py
@@ -272,11 +272,11 @@ def get_comments_html(comments):
def video_comments(video_id, sort=0, offset=0, lc='', secret_key=''):
if settings.enable_comments:
post_comment_url = common.URL_ORIGIN + "/post_comment?video_id=" + video_id
- post_comment_link = '''<a class="post-comment-link" href="''' + post_comment_url + '''">Post comment</a>'''
+ post_comment_link = '''<a class="sort-button" href="''' + post_comment_url + '''">Post comment</a>'''
other_sort_url = common.URL_ORIGIN + '/comments?ctoken=' + make_comment_ctoken(video_id, sort=1 - sort, lc=lc)
other_sort_name = 'newest' if sort == 0 else 'top'
- other_sort_link = '''<a href="''' + other_sort_url + '''">Sort by ''' + other_sort_name + '''</a>'''
+ other_sort_link = '''<a class="sort-button" href="''' + other_sort_url + '''">Sort by ''' + other_sort_name + '''</a>'''
comment_links = '''<div class="comment-links">\n'''
comment_links += other_sort_link + '\n' + post_comment_link + '\n'
@@ -355,7 +355,7 @@ def get_comments_page(query_string):
other_sort_url = common.URL_ORIGIN + '/comments?ctoken=' + make_comment_ctoken(metadata['video_id'], sort=1 - metadata['sort'])
other_sort_name = 'newest' if metadata['sort'] == 0 else 'top'
- other_sort_link = '''<a href="''' + other_sort_url + '''">Sort by ''' + other_sort_name + '''</a>'''
+ other_sort_link = '''<a class="sort-button" href="''' + other_sort_url + '''">Sort by ''' + other_sort_name + '''</a>'''
comment_links = '''<div class="comment-links">\n'''
diff --git a/youtube/shared.css b/youtube/shared.css
index 1c25b6d..b23f6b7 100644
--- a/youtube/shared.css
+++ b/youtube/shared.css
@@ -365,3 +365,8 @@ address{
font-weight: bold;
text-align: center;
}
+.sort-button{
+ background-color: #d0d0d0;
+ padding: 2px;
+ justify-self: start;
+} \ No newline at end of file
diff --git a/youtube/watch.py b/youtube/watch.py
index 5515616..2d10ec1 100644
--- a/youtube/watch.py
+++ b/youtube/watch.py
@@ -325,9 +325,6 @@ def get_watch_page(query_string):
note = html.escape(downloader._format_note(format)),
)
- post_comment_url = common.URL_ORIGIN + "/post_comment?v=" + id
- post_comment_link = '''<a class="post-comment-link" href="''' + post_comment_url + '''">Post comment</a>'''
-
page = yt_watch_template.substitute(
video_title = html.escape(info["title"]),
diff --git a/yt_channel_items_template.html b/yt_channel_items_template.html
index e208fea..2273956 100644
--- a/yt_channel_items_template.html
+++ b/yt_channel_items_template.html
@@ -9,8 +9,8 @@
<style type="text/css">
main{
display:grid;
- grid-template-rows: 0fr 0fr 0fr;
- grid-template-columns: 0fr 1fr;
+ grid-template-rows: repeat(5, 0fr);
+ grid-template-columns: auto 1fr;
}
main .avatar{
grid-row:1;
@@ -33,6 +33,20 @@
background-color: #aaaaaa;
padding: 3px;
}
+ #links-metadata{
+ display: grid;
+ grid-auto-flow: column;
+ grid-column-gap: 10px;
+ grid-column: 1/span 2;
+ justify-content: start;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ background-color: #bababa;
+ margin-bottom: 10px;
+ }
+ #number-of-results{
+ font-weight:bold;
+ }
.item-grid{
grid-row:4;
grid-column: 1 / span 2;
@@ -43,10 +57,7 @@
.tab{
padding: 5px 75px;
}
- #number_of_results{
- font-weight:bold;
- grid-row:3;
- }
+
</style>
</head>
<body>
@@ -57,7 +68,10 @@ $header
<nav class="channel-tabs">
$channel_tabs
</nav>
- <div id="number-of-results">$number_of_results</div>
+ <div id="links-metadata">
+ <div id="number-of-results">$number_of_results</div>
+$sort_buttons
+ </div>
$items
<nav class="page-button-row">
$page_buttons