Add video proxy support with live toggle for Invidious/Piped instances

Adds a "Proxy videos" toggle in instance settings that routes video
streams through the instance instead of connecting directly to YouTube
CDN. Includes auto-detection of 403 blocks and live re-application of
proxy settings without requiring app restart or video reload.
This commit is contained in:
Arkadiusz Fal
2026-02-16 19:40:55 +01:00
parent 1fa6d7a4a5
commit c8b4ae5422
9 changed files with 305 additions and 4 deletions

View File

@@ -3,6 +3,9 @@
"strings" : {
"" : {
},
"-%@" : {
},
"%@" : {
@@ -94,6 +97,12 @@
}
}
}
},
"• %@" : {
},
"↑↓ scroll • click to close" : {
},
"+%lld" : {
@@ -419,6 +428,9 @@
}
}
}
},
"Cancel" : {
},
"channel.menu.disableNotifications" : {
"localizations" : {
@@ -717,6 +729,12 @@
}
}
}
},
"click to expand" : {
},
"Comments" : {
},
"comments.disabled" : {
"comment" : "Shown when comments are disabled for a video",
@@ -1809,6 +1827,9 @@
}
}
}
},
"Description" : {
},
"discovery.empty.description" : {
"comment" : "Description when no network shares are found",
@@ -4455,6 +4476,9 @@
}
}
}
},
"Info" : {
},
"Initializing player..." : {
@@ -4612,6 +4636,9 @@
}
}
}
},
"LIVE" : {
},
"login.email" : {
"comment" : "Email field label in login form",
@@ -5581,6 +5608,15 @@
}
}
}
},
"Off" : {
},
"OK" : {
},
"On" : {
},
"onboarding.cloud.complete.description" : {
"comment" : "iCloud sync complete description on onboarding",
@@ -7275,6 +7311,9 @@
}
}
}
},
"Quality" : {
},
"queue.action.addToQueue" : {
"comment" : "Add to queue action in action sheet",
@@ -7766,6 +7805,9 @@
}
}
}
},
"Remove" : {
},
"resume.action.continueAt %@" : {
"comment" : "Continue watching action with timestamp",
@@ -7788,6 +7830,15 @@
}
}
}
},
"Search bookmarks" : {
},
"Search channels" : {
},
"Search history" : {
},
"search.clearAllRecents" : {
"comment" : "Button to clear all recent searches, channels, and playlists",
@@ -14598,6 +14649,17 @@
}
}
},
"sources.field.proxiesVideos" : {
"comment" : "Toggle label for video proxy option",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Proxy videos"
}
}
}
},
"sources.field.password" : {
"comment" : "Field label for password",
"localizations" : {
@@ -14730,6 +14792,17 @@
}
}
},
"sources.footer.proxiesVideos" : {
"comment" : "Footer text explaining video proxy option",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Route video streams through this instance instead of connecting directly. Enable if direct video playback is blocked."
}
}
}
},
"sources.footer.auth" : {
"comment" : "Footer text for authentication section",
"localizations" : {
@@ -14906,6 +14979,17 @@
}
}
},
"sources.header.proxy" : {
"comment" : "Section header for video proxy settings",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Video Proxy"
}
}
}
},
"sources.header.security" : {
"comment" : "Section header for security settings",
"localizations" : {