add support for lc parameter

This commit is contained in:
James Taylor 2018-10-01 17:57:31 -07:00
parent 6c61472daf
commit 03f5ccbacb
2 changed files with 14 additions and 8 deletions

View File

@ -59,7 +59,7 @@ with open("yt_comments_template.html", "r") as file:
# *Old ASJN's continue to work, and start at the same comment even if new comments have been posted since
# *The ASJN has no relation with any of the data in the response it came from
def make_comment_ctoken(video_id, sort=0, offset=0, secret_key=''):
def make_comment_ctoken(video_id, sort=0, offset=0, lc='', secret_key=''):
video_id = proto.as_bytes(video_id)
secret_key = proto.as_bytes(secret_key)
@ -68,8 +68,12 @@ def make_comment_ctoken(video_id, sort=0, offset=0, secret_key=''):
offset_information = proto.nested(4, page_info) + proto.uint(5, offset)
if secret_key:
offset_information = proto.string(1, secret_key) + offset_information
result = proto.nested(2, proto.string(2, video_id)) + proto.uint(3,6) + proto.nested(6, offset_information)
page_params = proto.string(2, video_id)
if lc:
page_params += proto.string(6, proto.percent_b64encode(proto.string(15, lc)))
result = proto.nested(2, page_params) + proto.uint(3,6) + proto.nested(6, offset_information)
return base64.urlsafe_b64encode(result).decode('ascii')
def comment_replies_ctoken(video_id, comment_id, max_results=500):
@ -264,12 +268,12 @@ def get_comments_html(comments):
)
return html_result
def video_comments(video_id, sort=0, offset=0, secret_key=''):
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>'''
other_sort_url = common.URL_ORIGIN + '/comments?ctoken=' + make_comment_ctoken(video_id, sort=1 - sort)
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>'''
@ -277,7 +281,7 @@ def video_comments(video_id, sort=0, offset=0, secret_key=''):
comment_links += other_sort_link + '\n' + post_comment_link + '\n'
comment_links += '''</div>'''
comment_info = parse_comments_polymer(request_comments(make_comment_ctoken(video_id, sort, offset, secret_key)))
comment_info = parse_comments_polymer(request_comments(make_comment_ctoken(video_id, sort, offset, lc, secret_key)))
ctoken = comment_info['ctoken']
if ctoken == '':

View File

@ -223,10 +223,12 @@ music_list_table_row = Template('''<tr>
<td>$value</td>
''')
def get_watch_page(query_string):
id = urllib.parse.parse_qs(query_string)['v'][0]
parsed_qs = urllib.parse.parse_qs(query_string)
id = parsed_qs['v'][0]
lc = common.default_multi_get(parsed_qs, 'lc', 0, default='')
downloader = YoutubeDL(params={'youtube_include_dash_manifest':False})
tasks = (
gevent.spawn(comments.video_comments, id, int(settings.default_comment_sorting) ),
gevent.spawn(comments.video_comments, id, int(settings.default_comment_sorting), lc=lc ),
gevent.spawn(extract_info, downloader, "https://www.youtube.com/watch?v=" + id, download=False)
)
gevent.joinall(tasks)