refactor(ysearch): Use youtube-dl cookie file instead of redundant cookie config item.

This commit is contained in:
Terry Geng 2022-02-01 21:07:40 -05:00
parent a0eb5b39c3
commit b0ace7b67a
2 changed files with 15 additions and 4 deletions

View File

@ -64,7 +64,6 @@ tmp_folder_max_size = 10
username = botamusique
volume = 0.8
when_nobody_in_channel = nothing
youtube_query_cookie = {}
[webinterface]
access_address = http://127.0.0.1:8181

18
util.py
View File

@ -323,8 +323,8 @@ def youtube_search(query):
import json
try:
cookie_json = var.config.get('bot', 'youtube_query_cookie')
cookie = json.loads(cookie_json if cookie_json else '{}')
cookie_file = var.config.get('youtube_dl', 'cookie_file')
cookie = parse_cookie_file(cookie_file) if cookie_file else {}
r = requests.get("https://www.youtube.com/results", cookies=cookie,
params={'search_query': query}, timeout=5)
result_json_match = re.findall(r">var ytInitialData = (.*?);</script>", r.text)
@ -574,4 +574,16 @@ def check_extra_config(config, template):
if not template.has_option(key, opt):
extra.append((key, opt))
return extra
return extra
def parse_cookie_file(cookiefile):
# https://stackoverflow.com/a/54659484/1584825
cookies = {}
with open (cookiefile, 'r') as fp:
for line in fp:
if not re.match(r'^#', line):
lineFields = line.strip().split('\t')
cookies[lineFields[5]] = lineFields[6]
return cookies