Check whether comment posting was successful
This commit is contained in:
parent
182c6c7c8a
commit
3de6c50c67
@ -1,8 +1,11 @@
|
|||||||
# Contains functions having to do with logging in or requiring that one is logged in
|
# Contains functions having to do with logging in or requiring that one is logged in
|
||||||
|
|
||||||
import urllib
|
import urllib
|
||||||
import json
|
import json
|
||||||
from youtube import common, proto, comments
|
from youtube import common, proto, comments
|
||||||
import re
|
import re
|
||||||
|
import traceback
|
||||||
|
|
||||||
def _post_comment(text, video_id, session_token, cookie):
|
def _post_comment(text, video_id, session_token, cookie):
|
||||||
headers = {
|
headers = {
|
||||||
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',
|
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',
|
||||||
@ -30,6 +33,10 @@ def _post_comment(text, video_id, session_token, cookie):
|
|||||||
req = urllib.request.Request("https://m.youtube.com/service_ajax?name=createCommentEndpoint", headers=headers, data=data)
|
req = urllib.request.Request("https://m.youtube.com/service_ajax?name=createCommentEndpoint", headers=headers, data=data)
|
||||||
response = urllib.request.urlopen(req, timeout = 5)
|
response = urllib.request.urlopen(req, timeout = 5)
|
||||||
content = response.read()
|
content = response.read()
|
||||||
|
content = common.decode_content(content, response.getheader('Content-Encoding', default='identity'))
|
||||||
|
code = json.loads(content)['code']
|
||||||
|
print("Comment posting code: " + code)
|
||||||
|
return code
|
||||||
'''with open('debug/post_comment_response', 'wb') as f:
|
'''with open('debug/post_comment_response', 'wb') as f:
|
||||||
f.write(content)'''
|
f.write(content)'''
|
||||||
|
|
||||||
@ -61,6 +68,10 @@ def _post_comment_reply(text, video_id, parent_comment_id, session_token, cookie
|
|||||||
req = urllib.request.Request("https://m.youtube.com/service_ajax?name=createCommentReplyEndpoint", headers=headers, data=data)
|
req = urllib.request.Request("https://m.youtube.com/service_ajax?name=createCommentReplyEndpoint", headers=headers, data=data)
|
||||||
response = urllib.request.urlopen(req, timeout = 5)
|
response = urllib.request.urlopen(req, timeout = 5)
|
||||||
content = response.read()
|
content = response.read()
|
||||||
|
content = common.decode_content(content, response.getheader('Content-Encoding', default='identity'))
|
||||||
|
code = json.loads(content)['code']
|
||||||
|
print("Comment posting code: " + code)
|
||||||
|
return code
|
||||||
'''with open('debug/post_comment_response', 'wb') as f:
|
'''with open('debug/post_comment_response', 'wb') as f:
|
||||||
f.write(content)'''
|
f.write(content)'''
|
||||||
|
|
||||||
@ -115,11 +126,27 @@ def post_comment(query_string, fields):
|
|||||||
raise Exception("Couldn't find xsrf_token")
|
raise Exception("Couldn't find xsrf_token")
|
||||||
|
|
||||||
if 'parent_id' in parameters:
|
if 'parent_id' in parameters:
|
||||||
_post_comment_reply(fields['comment_text'][0], parameters['video_id'][0], parameters['parent_id'][0], token, cookie_data)
|
code = _post_comment_reply(fields['comment_text'][0], parameters['video_id'][0], parameters['parent_id'][0], token, cookie_data)
|
||||||
return comments.get_comments_page(query_string)
|
try:
|
||||||
|
response = comments.get_comments_page(query_string)
|
||||||
|
except socket.error as e:
|
||||||
|
traceback.print_tb(e.__traceback__)
|
||||||
|
return b'Refreshing comment page yielded error 502 Bad Gateway.\nPost comment status code: ' + code.encode('ascii')
|
||||||
|
except Exception as e:
|
||||||
|
traceback.print_tb(e.__traceback__)
|
||||||
|
return b'Refreshing comment page yielded error 500 Internal Server Error.\nPost comment status code: ' + code.encode('ascii')
|
||||||
|
return response
|
||||||
else:
|
else:
|
||||||
_post_comment(fields['comment_text'][0], fields['video_id'][0], token, cookie_data)
|
code = _post_comment(fields['comment_text'][0], fields['video_id'][0], token, cookie_data)
|
||||||
return comments.get_comments_page('ctoken=' + comments.make_comment_ctoken(video_id, sort=1))
|
try:
|
||||||
|
response = comments.get_comments_page('ctoken=' + comments.make_comment_ctoken(video_id, sort=1))
|
||||||
|
except socket.error as e:
|
||||||
|
traceback.print_tb(e.__traceback__)
|
||||||
|
return b'Refreshing comment page yielded error 502 Bad Gateway.\nPost comment status code: ' + code.encode('ascii')
|
||||||
|
except Exception as e:
|
||||||
|
traceback.print_tb(e.__traceback__)
|
||||||
|
return b'Refreshing comment page yielded error 500 Internal Server Error.\nPost comment status code: ' + code.encode('ascii')
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -137,6 +137,16 @@ medium_channel_item_template = Template('''
|
|||||||
</div>
|
</div>
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
def decode_content(content, encoding_header):
|
||||||
|
encodings = encoding_header.replace(' ', '').split(',')
|
||||||
|
for encoding in reversed(encodings):
|
||||||
|
if encoding == 'identity':
|
||||||
|
continue
|
||||||
|
if encoding == 'br':
|
||||||
|
content = brotli.decompress(content)
|
||||||
|
elif encoding == 'gzip':
|
||||||
|
content = gzip.decompress(content)
|
||||||
|
return content
|
||||||
|
|
||||||
def fetch_url(url, headers=(), timeout=15, report_text=None):
|
def fetch_url(url, headers=(), timeout=15, report_text=None):
|
||||||
if isinstance(headers, list):
|
if isinstance(headers, list):
|
||||||
@ -159,14 +169,7 @@ def fetch_url(url, headers=(), timeout=15, report_text=None):
|
|||||||
read_finish = time.time()
|
read_finish = time.time()
|
||||||
if report_text:
|
if report_text:
|
||||||
print(report_text, ' Latency:', response_time - start_time, ' Read time:', read_finish - response_time)
|
print(report_text, ' Latency:', response_time - start_time, ' Read time:', read_finish - response_time)
|
||||||
encodings = response.getheader('Content-Encoding', default='identity').replace(' ', '').split(',')
|
content = decode_content(content, response.getheader('Content-Encoding', default='identity'))
|
||||||
for encoding in reversed(encodings):
|
|
||||||
if encoding == 'identity':
|
|
||||||
continue
|
|
||||||
if encoding == 'br':
|
|
||||||
content = brotli.decompress(content)
|
|
||||||
elif encoding == 'gzip':
|
|
||||||
content = gzip.decompress(content)
|
|
||||||
return content
|
return content
|
||||||
|
|
||||||
mobile_user_agent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
|
mobile_user_agent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user