fix: make clipious and freetube work by adding some made-up metadata
for the most part ok, but there are some (music) videos which won't work
This commit is contained in:
@@ -31,7 +31,7 @@ def api_global_catchall(received_request):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
ythdd_globals.apiFailedRequests += 1
|
ythdd_globals.apiFailedRequests += 1
|
||||||
stripped_filename = __file__[max(__file__.rfind("/"), __file__.rfind("\\")) + 1:]
|
stripped_filename = __file__[max(__file__.rfind("/"), __file__.rfind("\\")) + 1:]
|
||||||
print(f"\n{c.FAIL}Error! /api/{received_request} -> {stripped_filename}:L{e.__traceback__.tb_lineno} -> {type(e).__name__}{c.ENDC}:"
|
print(f"\n{c.FAIL}Error! /api/{received_request} -> {stripped_filename}:L{e.__traceback__.tb_lineno} -> {type(e).__name__}{c.ENDC}:\n"
|
||||||
+ f"{traceback.format_exc()}")
|
+ f"{traceback.format_exc()}")
|
||||||
status, received, data = 500, f"internal server error: call ended in failure: {e}", []
|
status, received, data = 500, f"internal server error: call ended in failure: {e}", []
|
||||||
if ythdd_globals.config["general"]["debug"]:
|
if ythdd_globals.config["general"]["debug"]:
|
||||||
@@ -56,7 +56,7 @@ def api_global_catchall(received_request):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
ythdd_globals.apiFailedRequests += 1
|
ythdd_globals.apiFailedRequests += 1
|
||||||
stripped_filename = __file__[max(__file__.rfind("/"), __file__.rfind("\\")) + 1:]
|
stripped_filename = __file__[max(__file__.rfind("/"), __file__.rfind("\\")) + 1:]
|
||||||
print(f"\n{c.FAIL}Error! /api/{received_request} -> {stripped_filename}:L{e.__traceback__.tb_lineno} -> {type(e).__name__}{c.ENDC}:"
|
print(f"\n{c.FAIL}Error! /api/{received_request} -> {stripped_filename}:L{e.__traceback__.tb_lineno} -> {type(e).__name__}{c.ENDC}:\n"
|
||||||
+ f"{traceback.format_exc()}")
|
+ f"{traceback.format_exc()}")
|
||||||
status, received, data = 500, f"internal server error: invidious translation call ended in failure: {e}", []
|
status, received, data = 500, f"internal server error: invidious translation call ended in failure: {e}", []
|
||||||
if ythdd_globals.config["general"]["debug"]:
|
if ythdd_globals.config["general"]["debug"]:
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ def send(status, response):
|
|||||||
return Response(json.dumps(response), mimetype='application/json', status=status)
|
return Response(json.dumps(response), mimetype='application/json', status=status)
|
||||||
|
|
||||||
def notImplemented(data):
|
def notImplemented(data):
|
||||||
return send(501, {'error': f"not recognised/implemented: {'/'.join(data)}"})
|
return send(501, {'error': f"not recognised/implemented in Invidious TL: {'/'.join(data)}"})
|
||||||
|
|
||||||
def stats():
|
def stats():
|
||||||
data_to_send = {
|
data_to_send = {
|
||||||
@@ -253,13 +253,16 @@ def rebuildFormatsFromYtdlpApi(ydata: dict):
|
|||||||
if safeTraverse(stream, ["acodec"]) != "none":
|
if safeTraverse(stream, ["acodec"]) != "none":
|
||||||
# audio-only track
|
# audio-only track
|
||||||
type = safeTraverse(stream, ["audio_ext"], default=None)
|
type = safeTraverse(stream, ["audio_ext"], default=None)
|
||||||
|
fnote = safeTraverse(stream, ["format_note"], default="low")
|
||||||
if type is None:
|
if type is None:
|
||||||
type = "mp4"
|
type = "mp4"
|
||||||
newRow[ "type"] = "audio/" + type
|
newRow[ "type"] = "audio/" + type
|
||||||
newRow[ "audioQuality"] = str(safeTraverse(stream, ["abr"], default=128))
|
newRow[ "audioQuality"] = fnote
|
||||||
newRow["audioSampleRate"] = str(safeTraverse(stream, ["asr"], default=44100))
|
newRow["audioSampleRate"] = int(safeTraverse(stream, ["asr"], default="44100"))
|
||||||
newRow[ "audioChannels"] = safeTraverse(stream, ["audio_channels"])
|
newRow[ "audioChannels"] = int(safeTraverse(stream, ["audio_channels"]))
|
||||||
newRow[ "qualityLabel"] = newRow["audioQuality"] + "kbps"
|
newRow[ "qualityLabel"] = str(safeTraverse(stream, ["abr"], default="?"))
|
||||||
|
newRow[ "resolution"] = f"{fnote} quality"
|
||||||
|
newRow[ "size"] = "0x0"
|
||||||
if safeTraverse(stream, ["vcodec"]) != "none":
|
if safeTraverse(stream, ["vcodec"]) != "none":
|
||||||
# either video-only or video+audio
|
# either video-only or video+audio
|
||||||
type = safeTraverse(stream, ["video_ext"], default=None)
|
type = safeTraverse(stream, ["video_ext"], default=None)
|
||||||
@@ -276,6 +279,13 @@ def rebuildFormatsFromYtdlpApi(ydata: dict):
|
|||||||
newRow["clen"] = safeTraverse(params, ["clen"], default=safeTraverse(stream, ["filesize"], default="0"))
|
newRow["clen"] = safeTraverse(params, ["clen"], default=safeTraverse(stream, ["filesize"], default="0"))
|
||||||
newRow["lmt"] = safeTraverse(params, ["lmt"], default="0")
|
newRow["lmt"] = safeTraverse(params, ["lmt"], default="0")
|
||||||
|
|
||||||
|
newRow[ "projectionType"] = "RECTANGULAR" # clipious requires this to be mentioned explicitly and cannot be nulled
|
||||||
|
newRow[ "container"] = safeTraverse(stream, ["ext"], default="unknown_container")
|
||||||
|
newRow[ "encoding"] = safeTraverse(invidious_formats.FORMATS, [int("0" + newRow["itag"].split("-")[0]), "ext"], default="unknown_encoding") # not sure this split is necessary
|
||||||
|
newRow[ "quality"] = newRow["qualityLabel"]
|
||||||
|
newRow[ "init"] = "0-1" # dummy values
|
||||||
|
newRow[ "index"] = "2-3" # dummy values
|
||||||
|
|
||||||
if vcodec != "none" and acodec != "none":
|
if vcodec != "none" and acodec != "none":
|
||||||
# 360p stream
|
# 360p stream
|
||||||
format_streams.append(newRow.copy())
|
format_streams.append(newRow.copy())
|
||||||
|
|||||||
Reference in New Issue
Block a user