Save channel id when adding account

This commit is contained in:
James Taylor 2018-12-30 05:06:42 -08:00
parent d86b4704f8
commit 248c2e1415

View File

@ -26,15 +26,17 @@ def save_accounts():
def add_account(username, password, save, use_tor): def add_account(username, password, save, use_tor):
cookiejar = http.cookiejar.LWPCookieJar() cookiejar = http.cookiejar.LWPCookieJar()
successful = _login(username, password, cookiejar, use_tor) result = _login(username, password, cookiejar, use_tor)
if successful: if isinstance(result, dict):
accounts[username] = { accounts[username] = {
"save":save, "save":save,
"channel_id": result["channel_id"],
"cookies":cookiejar.as_lwp_str(ignore_discard=False, ignore_expires=False).split('\n'), "cookies":cookiejar.as_lwp_str(ignore_discard=False, ignore_expires=False).split('\n'),
} }
if save: if save:
save_accounts() save_accounts()
return successful return True
return False
def cookiejar_from_lwp_str(lwp_str): def cookiejar_from_lwp_str(lwp_str):
lwp_str = "#LWP-Cookies-2.0\n" + lwp_str # header required by _really_load for reading from "file" lwp_str = "#LWP-Cookies-2.0\n" + lwp_str # header required by _really_load for reading from "file"
@ -194,6 +196,7 @@ _TWOFACTOR_URL = 'https://accounts.google.com/signin/challenge'
_LOOKUP_URL = 'https://accounts.google.com/_/signin/sl/lookup' _LOOKUP_URL = 'https://accounts.google.com/_/signin/sl/lookup'
_CHALLENGE_URL = 'https://accounts.google.com/_/signin/sl/challenge' _CHALLENGE_URL = 'https://accounts.google.com/_/signin/sl/challenge'
_TFA_URL = 'https://accounts.google.com/_/signin/challenge?hl=en&TL={0}' _TFA_URL = 'https://accounts.google.com/_/signin/challenge?hl=en&TL={0}'
_CHANNEL_ID_RE = re.compile(r'"channelUrl"\s*:\s*"\\/channel\\/(UC[\w-]{22})"')
def _login(username, password, cookiejar, use_tor): def _login(username, password, cookiejar, use_tor):
""" """
Attempt to log in to YouTube. Attempt to log in to YouTube.
@ -372,4 +375,12 @@ def _login(username, password, cookiejar, use_tor):
warn('Unable to log in') warn('Unable to log in')
return False return False
return True select_site_page = common.fetch_url('https://m.youtube.com/select_site', headers=common.mobile_ua, report_text="Retrieved page for channel id", cookiejar_send=cookiejar, use_tor=use_tor).decode('utf-8')
match = _CHANNEL_ID_RE.search(select_site_page)
if match is None:
warn('Failed to find channel id')
return False
channel_id = match.group(1)
return {'channel_id': channel_id}