diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr index 8e844471..e97ddda2 100644 --- a/src/invidious/videos/parser.cr +++ b/src/invidious/videos/parser.cr @@ -542,14 +542,25 @@ private def convert_url(fmt) LOGGER.debug("convert_url: Decoding '#{cfr}'") - unsig = DECRYPT_FUNCTION.try &.decrypt_signature(cfr["s"]) + # When using Invidious Companion, streaming URLs should already be usable. + # Skip inv-sig-helper based signature decryption in that case. + unsig = if CONFIG.invidious_companion.present? + nil + else + DECRYPT_FUNCTION.try &.decrypt_signature(cfr["s"]) + end params[sp] = unsig if unsig else url = URI.parse(fmt["url"].as_s) params = url.query_params end - n = DECRYPT_FUNCTION.try &.decrypt_nsig(params["n"]) + # Skip nsig decryption when using Invidious Companion + n = if CONFIG.invidious_companion.present? + nil + else + DECRYPT_FUNCTION.try &.decrypt_nsig(params["n"]) + end params["n"] = n if n if token = CONFIG.po_token diff --git a/src/invidious/yt_backend/youtube_api.cr b/src/invidious/yt_backend/youtube_api.cr index b40092a1..21edbd41 100644 --- a/src/invidious/yt_backend/youtube_api.cr +++ b/src/invidious/yt_backend/youtube_api.cr @@ -473,8 +473,12 @@ module YoutubeAPI } of String => String | Int64 if {"WEB", "TVHTML5"}.any? { |s| client_config.name.starts_with? s } - if sts = DECRYPT_FUNCTION.try &.get_sts - playback_ctx["signatureTimestamp"] = sts.to_i64 + # When using Invidious Companion, player requests are proxied there, + # so we skip fetching signatureTimestamp via inv-sig-helper. + if !CONFIG.invidious_companion.present? + if sts = DECRYPT_FUNCTION.try &.get_sts + playback_ctx["signatureTimestamp"] = sts.to_i64 + end end end