|
- from json import loads
- from urllib.parse import unquote
-
- import requests
-
- def getinitialdata(html: str):
- for line in html.splitlines():
- if line.strip().startswith('window["ytInitialData"] = '):
- return loads(line.split('window["ytInitialData"] = ', 1)[1].strip()[:-1])
- return {}
-
- def getapikey(html: str):
- return html.split('"INNERTUBE_API_KEY":"', 1)[-1].split('"', 1)[0]
-
- #extract latest version automatically
- def getlver(initialdata: dict):
- try:
- return initialdata["responseContext"]["serviceTrackingParams"][2]["params"][2]["value"]
- except:
- return "2.20201002.02.01"
-
- def fullyexpand(inputdict: dict, mysession: requests.session, continuationheaders: dict):
- lastrequestj = inputdict
- while "continuations" in lastrequestj.keys():
- lastrequest = mysession.get("https://www.youtube.com/browse_ajax?continuation="+unquote(lastrequestj["continuations"][0]["nextContinuationData"]["continuation"]), headers=continuationheaders)
- lastrequestj = lastrequest.json()[1]["response"]["continuationContents"]["gridContinuation"]
- inputdict["items"].extend(lastrequestj["items"])
-
- return inputdict
|