(feat): added strict downloadablity check option in settings

This commit is contained in:
2025-07-11 21:12:33 +05:30
parent c78cad0034
commit f2589d78b7
4 changed files with 15 additions and 0 deletions

View File

@@ -55,6 +55,7 @@ export default function App({ children }: { children: React.ReactNode }) {
const MAX_PARALLEL_DOWNLOADS = useSettingsPageStatesStore(state => state.settings.max_parallel_downloads);
const DOWNLOAD_DIR = useSettingsPageStatesStore(state => state.settings.download_dir);
const PREFER_VIDEO_OVER_PLAYLIST = useSettingsPageStatesStore(state => state.settings.prefer_video_over_playlist);
const SHOW_DOWNLOADABLE_STREAMS_ONLY = useSettingsPageStatesStore(state => state.settings.show_downloadable_streams_only);
const USE_PROXY = useSettingsPageStatesStore(state => state.settings.use_proxy);
const PROXY_URL = useSettingsPageStatesStore(state => state.settings.proxy_url);
const VIDEO_FORMAT = useSettingsPageStatesStore(state => state.settings.video_format);
@@ -95,6 +96,7 @@ export default function App({ children }: { children: React.ReactNode }) {
if (formatId) args.push('-f', formatId);
if (playlistIndex) args.push('--playlist-items', playlistIndex);
if (PREFER_VIDEO_OVER_PLAYLIST) args.push('--no-playlist');
if (SHOW_DOWNLOADABLE_STREAMS_ONLY) args.push('--check-all-formats');
if (USE_PROXY && PROXY_URL) args.push('--proxy', PROXY_URL);
const command = Command.sidecar('binaries/yt-dlp', args);

View File

@@ -60,6 +60,7 @@ export default function SettingsPage() {
const appTheme = useSettingsPageStatesStore(state => state.settings.theme);
const maxParallelDownloads = useSettingsPageStatesStore(state => state.settings.max_parallel_downloads);
const preferVideoOverPlaylist = useSettingsPageStatesStore(state => state.settings.prefer_video_over_playlist);
const showDownloadableStreamsOnly = useSettingsPageStatesStore(state => state.settings.show_downloadable_streams_only);
const useProxy = useSettingsPageStatesStore(state => state.settings.use_proxy);
const proxyUrl = useSettingsPageStatesStore(state => state.settings.proxy_url);
const videoFormat = useSettingsPageStatesStore(state => state.settings.video_format);
@@ -341,6 +342,15 @@ export default function SettingsPage() {
onCheckedChange={(checked) => saveSettingsKey('prefer_video_over_playlist', checked)}
/>
</div>
<div className="show-downloadable-streams-only">
<h3 className="font-semibold">Show Downloadable Streams Only (Strict)</h3>
<p className="text-xs text-muted-foreground mb-3">Check, filter-out and show the streams that are actualy downloadable (high quality results, takes longer time to search, start a download)</p>
<Switch
id="show-downloadable-streams-only"
checked={showDownloadableStreamsOnly}
onCheckedChange={(checked) => saveSettingsKey('show_downloadable_streams_only', checked)}
/>
</div>
</TabsContent>
<TabsContent key="appearance" value="appearance" className="flex flex-col gap-4 min-h-[235px]">
<div className="app-theme">

View File

@@ -107,6 +107,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
theme: 'system',
download_dir: '',
prefer_video_over_playlist: true,
show_downloadable_streams_only: false,
max_parallel_downloads: 2,
use_proxy: false,
proxy_url: '',
@@ -147,6 +148,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
theme: 'system',
download_dir: '',
prefer_video_over_playlist: true,
show_downloadable_streams_only: false,
max_parallel_downloads: 2,
use_proxy: false,
proxy_url: '',

View File

@@ -10,6 +10,7 @@ export interface Settings {
download_dir: string;
max_parallel_downloads: number;
prefer_video_over_playlist: boolean;
show_downloadable_streams_only: boolean;
use_proxy: boolean;
proxy_url: string;
video_format: string;