mirror of
https://github.com/neosubhamoy/neodlp.git
synced 2025-12-19 15:32:59 +05:30
refactor: added thumbnail embeding option for video files
This commit is contained in:
21
src/App.tsx
21
src/App.tsx
@@ -72,6 +72,7 @@ export default function App({ children }: { children: React.ReactNode }) {
|
|||||||
const ALWAYS_REENCODE_VIDEO = useSettingsPageStatesStore(state => state.settings.always_reencode_video);
|
const ALWAYS_REENCODE_VIDEO = useSettingsPageStatesStore(state => state.settings.always_reencode_video);
|
||||||
const EMBED_VIDEO_METADATA = useSettingsPageStatesStore(state => state.settings.embed_video_metadata);
|
const EMBED_VIDEO_METADATA = useSettingsPageStatesStore(state => state.settings.embed_video_metadata);
|
||||||
const EMBED_AUDIO_METADATA = useSettingsPageStatesStore(state => state.settings.embed_audio_metadata);
|
const EMBED_AUDIO_METADATA = useSettingsPageStatesStore(state => state.settings.embed_audio_metadata);
|
||||||
|
const EMBED_VIDEO_THUMBNAIL = useSettingsPageStatesStore(state => state.settings.embed_video_thumbnail);
|
||||||
const EMBED_AUDIO_THUMBNAIL = useSettingsPageStatesStore(state => state.settings.embed_audio_thumbnail);
|
const EMBED_AUDIO_THUMBNAIL = useSettingsPageStatesStore(state => state.settings.embed_audio_thumbnail);
|
||||||
const USE_COOKIES = useSettingsPageStatesStore(state => state.settings.use_cookies);
|
const USE_COOKIES = useSettingsPageStatesStore(state => state.settings.use_cookies);
|
||||||
const IMPORT_COOKIES_FROM = useSettingsPageStatesStore(state => state.settings.import_cookies_from);
|
const IMPORT_COOKIES_FROM = useSettingsPageStatesStore(state => state.settings.import_cookies_from);
|
||||||
@@ -378,20 +379,26 @@ export default function App({ children }: { children: React.ReactNode }) {
|
|||||||
|
|
||||||
let embedMetadata = 0;
|
let embedMetadata = 0;
|
||||||
if ((!USE_CUSTOM_COMMANDS && !resumeState?.custom_command) && (downloadConfig.embed_metadata || resumeState?.embed_metadata || EMBED_VIDEO_METADATA || EMBED_AUDIO_METADATA)) {
|
if ((!USE_CUSTOM_COMMANDS && !resumeState?.custom_command) && (downloadConfig.embed_metadata || resumeState?.embed_metadata || EMBED_VIDEO_METADATA || EMBED_AUDIO_METADATA)) {
|
||||||
const shouldEmbedForVideo = (fileType === 'video+audio' || fileType === 'video') && (downloadConfig.embed_metadata || resumeState?.embed_metadata || (EMBED_VIDEO_METADATA && downloadConfig.embed_metadata === null));
|
const shouldEmbedMetaForVideo = (fileType === 'video+audio' || fileType === 'video') && (downloadConfig.embed_metadata || resumeState?.embed_metadata || (EMBED_VIDEO_METADATA && downloadConfig.embed_metadata === null));
|
||||||
const shouldEmbedForAudio = fileType === 'audio' && (downloadConfig.embed_metadata || resumeState?.embed_metadata || (EMBED_AUDIO_METADATA && downloadConfig.embed_metadata === null));
|
const shouldEmbedMetaForAudio = fileType === 'audio' && (downloadConfig.embed_metadata || resumeState?.embed_metadata || (EMBED_AUDIO_METADATA && downloadConfig.embed_metadata === null));
|
||||||
const shouldEmbedForUnknown = fileType === 'unknown' && (downloadConfig.embed_metadata || resumeState?.embed_metadata);
|
const shouldEmbedMetaForUnknown = fileType === 'unknown' && (downloadConfig.embed_metadata || resumeState?.embed_metadata);
|
||||||
|
|
||||||
if (shouldEmbedForUnknown || shouldEmbedForVideo || shouldEmbedForAudio) {
|
if (shouldEmbedMetaForUnknown || shouldEmbedMetaForVideo || shouldEmbedMetaForAudio) {
|
||||||
embedMetadata = 1;
|
embedMetadata = 1;
|
||||||
args.push('--embed-metadata');
|
args.push('--embed-metadata');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let embedThumbnail = 0;
|
let embedThumbnail = 0;
|
||||||
if ((!USE_CUSTOM_COMMANDS && !resumeState?.custom_command) && (downloadConfig.embed_thumbnail || resumeState?.embed_thumbnail || (fileType === 'audio' && EMBED_AUDIO_THUMBNAIL && downloadConfig.embed_thumbnail === null))) {
|
if ((!USE_CUSTOM_COMMANDS && !resumeState?.custom_command) && (downloadConfig.embed_thumbnail || resumeState?.embed_thumbnail || EMBED_VIDEO_THUMBNAIL || EMBED_AUDIO_THUMBNAIL)) {
|
||||||
embedThumbnail = 1;
|
const shouldEmbedThumbForVideo = (fileType === 'video+audio' || fileType === 'video') && (downloadConfig.embed_thumbnail || resumeState?.embed_thumbnail || (EMBED_VIDEO_THUMBNAIL && downloadConfig.embed_thumbnail === null));
|
||||||
args.push('--embed-thumbnail');
|
const shouldEmbedThumbForAudio = fileType === 'audio' && (downloadConfig.embed_thumbnail || resumeState?.embed_thumbnail || (EMBED_AUDIO_THUMBNAIL && downloadConfig.embed_thumbnail === null));
|
||||||
|
const shouldEmbedThumbForUnknown = fileType === 'unknown' && (downloadConfig.embed_thumbnail || resumeState?.embed_thumbnail);
|
||||||
|
|
||||||
|
if (shouldEmbedThumbForUnknown || shouldEmbedThumbForVideo || shouldEmbedThumbForAudio) {
|
||||||
|
embedThumbnail = 1;
|
||||||
|
args.push('--embed-thumbnail');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((!USE_CUSTOM_COMMANDS && !resumeState?.custom_command) && USE_PROXY && PROXY_URL) {
|
if ((!USE_CUSTOM_COMMANDS && !resumeState?.custom_command) && USE_PROXY && PROXY_URL) {
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ export default function DownloaderPage() {
|
|||||||
const audioFormat = useSettingsPageStatesStore(state => state.settings.audio_format);
|
const audioFormat = useSettingsPageStatesStore(state => state.settings.audio_format);
|
||||||
const embedVideoMetadata = useSettingsPageStatesStore(state => state.settings.embed_video_metadata);
|
const embedVideoMetadata = useSettingsPageStatesStore(state => state.settings.embed_video_metadata);
|
||||||
const embedAudioMetadata = useSettingsPageStatesStore(state => state.settings.embed_audio_metadata);
|
const embedAudioMetadata = useSettingsPageStatesStore(state => state.settings.embed_audio_metadata);
|
||||||
|
const embedVideoThumbnail = useSettingsPageStatesStore(state => state.settings.embed_video_thumbnail);
|
||||||
const embedAudioThumbnail = useSettingsPageStatesStore(state => state.settings.embed_audio_thumbnail);
|
const embedAudioThumbnail = useSettingsPageStatesStore(state => state.settings.embed_audio_thumbnail);
|
||||||
const useCustomCommands = useSettingsPageStatesStore(state => state.settings.use_custom_commands);
|
const useCustomCommands = useSettingsPageStatesStore(state => state.settings.use_custom_commands);
|
||||||
const customCommands = useSettingsPageStatesStore(state => state.settings.custom_commands);
|
const customCommands = useSettingsPageStatesStore(state => state.settings.custom_commands);
|
||||||
@@ -1155,7 +1156,7 @@ export default function DownloaderPage() {
|
|||||||
<div className="flex items-center space-x-2 mt-3">
|
<div className="flex items-center space-x-2 mt-3">
|
||||||
<Switch
|
<Switch
|
||||||
id="embed-thumbnail"
|
id="embed-thumbnail"
|
||||||
checked={downloadConfiguration.embed_thumbnail !== null ? downloadConfiguration.embed_thumbnail : (selectedFormatFileType && (selectedFormatFileType === 'video' || selectedFormatFileType === 'video+audio')) || activeDownloadModeTab === 'combine' ? false : selectedFormatFileType && selectedFormatFileType === 'audio' ? embedAudioThumbnail : false}
|
checked={downloadConfiguration.embed_thumbnail !== null ? downloadConfiguration.embed_thumbnail : (selectedFormatFileType && (selectedFormatFileType === 'video' || selectedFormatFileType === 'video+audio')) || activeDownloadModeTab === 'combine' ? embedVideoThumbnail : selectedFormatFileType && selectedFormatFileType === 'audio' ? embedAudioThumbnail : false}
|
||||||
onCheckedChange={(checked) => setDownloadConfigurationKey('embed_thumbnail', checked)}
|
onCheckedChange={(checked) => setDownloadConfigurationKey('embed_thumbnail', checked)}
|
||||||
disabled={useCustomCommands}
|
disabled={useCustomCommands}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ export default function SettingsPage() {
|
|||||||
const alwaysReencodeVideo = useSettingsPageStatesStore(state => state.settings.always_reencode_video);
|
const alwaysReencodeVideo = useSettingsPageStatesStore(state => state.settings.always_reencode_video);
|
||||||
const embedVideoMetadata = useSettingsPageStatesStore(state => state.settings.embed_video_metadata);
|
const embedVideoMetadata = useSettingsPageStatesStore(state => state.settings.embed_video_metadata);
|
||||||
const embedAudioMetadata = useSettingsPageStatesStore(state => state.settings.embed_audio_metadata);
|
const embedAudioMetadata = useSettingsPageStatesStore(state => state.settings.embed_audio_metadata);
|
||||||
|
const embedVideoThumbnail = useSettingsPageStatesStore(state => state.settings.embed_video_thumbnail);
|
||||||
const embedAudioThumbnail = useSettingsPageStatesStore(state => state.settings.embed_audio_thumbnail);
|
const embedAudioThumbnail = useSettingsPageStatesStore(state => state.settings.embed_audio_thumbnail);
|
||||||
const useCookies = useSettingsPageStatesStore(state => state.settings.use_cookies);
|
const useCookies = useSettingsPageStatesStore(state => state.settings.use_cookies);
|
||||||
const importCookiesFrom = useSettingsPageStatesStore(state => state.settings.import_cookies_from);
|
const importCookiesFrom = useSettingsPageStatesStore(state => state.settings.import_cookies_from);
|
||||||
@@ -783,7 +784,7 @@ export default function SettingsPage() {
|
|||||||
</div>
|
</div>
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
<TabsContent key="metadata" value="metadata" className="flex flex-col gap-4 min-h-[425px]">
|
<TabsContent key="metadata" value="metadata" className="flex flex-col gap-4 min-h-[425px]">
|
||||||
<div className="embed-video-metadata">
|
<div className="embed-metadata">
|
||||||
<h3 className="font-semibold">Embed Metadata</h3>
|
<h3 className="font-semibold">Embed Metadata</h3>
|
||||||
<p className="text-xs text-muted-foreground mb-3">Wheather to embed metadata in video/audio files (info, chapters)</p>
|
<p className="text-xs text-muted-foreground mb-3">Wheather to embed metadata in video/audio files (info, chapters)</p>
|
||||||
<div className="flex items-center space-x-2 mb-3">
|
<div className="flex items-center space-x-2 mb-3">
|
||||||
@@ -805,15 +806,27 @@ export default function SettingsPage() {
|
|||||||
<Label htmlFor="embed-audio-metadata">Audio</Label>
|
<Label htmlFor="embed-audio-metadata">Audio</Label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="embed-audio-thumbnail">
|
<div className="embed-thumbnail">
|
||||||
<h3 className="font-semibold">Embed Thumbnail in Audio</h3>
|
<h3 className="font-semibold">Embed Thumbnail</h3>
|
||||||
<p className="text-xs text-muted-foreground mb-3">Wheather to embed thumbnail in audio files (as cover art)</p>
|
<p className="text-xs text-muted-foreground mb-3">Wheather to embed thumbnail in video/audio files (as cover art)</p>
|
||||||
<Switch
|
<div className="flex items-center space-x-2 mb-3">
|
||||||
id="embed-audio-thumbnail"
|
<Switch
|
||||||
checked={embedAudioThumbnail}
|
id="embed-video-thumbnail"
|
||||||
onCheckedChange={(checked) => saveSettingsKey('embed_audio_thumbnail', checked)}
|
checked={embedVideoThumbnail}
|
||||||
disabled={useCustomCommands}
|
onCheckedChange={(checked) => saveSettingsKey('embed_video_thumbnail', checked)}
|
||||||
/>
|
disabled={useCustomCommands}
|
||||||
|
/>
|
||||||
|
<Label htmlFor="embed-video-thumbnail">Video</Label>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center space-x-2">
|
||||||
|
<Switch
|
||||||
|
id="embed-audio-thumbnail"
|
||||||
|
checked={embedAudioThumbnail}
|
||||||
|
onCheckedChange={(checked) => saveSettingsKey('embed_audio_thumbnail', checked)}
|
||||||
|
disabled={useCustomCommands}
|
||||||
|
/>
|
||||||
|
<Label htmlFor="embed-audio-thumbnail">Audio</Label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
<TabsContent key="network" value="network" className="flex flex-col gap-4 min-h-[425px]">
|
<TabsContent key="network" value="network" className="flex flex-col gap-4 min-h-[425px]">
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
|
|||||||
always_reencode_video: false,
|
always_reencode_video: false,
|
||||||
embed_video_metadata: false,
|
embed_video_metadata: false,
|
||||||
embed_audio_metadata: true,
|
embed_audio_metadata: true,
|
||||||
|
embed_video_thumbnail: false,
|
||||||
embed_audio_thumbnail: true,
|
embed_audio_thumbnail: true,
|
||||||
use_cookies: false,
|
use_cookies: false,
|
||||||
import_cookies_from: 'browser',
|
import_cookies_from: 'browser',
|
||||||
@@ -233,6 +234,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
|
|||||||
always_reencode_video: false,
|
always_reencode_video: false,
|
||||||
embed_video_metadata: false,
|
embed_video_metadata: false,
|
||||||
embed_audio_metadata: true,
|
embed_audio_metadata: true,
|
||||||
|
embed_video_thumbnail: false,
|
||||||
embed_audio_thumbnail: true,
|
embed_audio_thumbnail: true,
|
||||||
use_cookies: false,
|
use_cookies: false,
|
||||||
import_cookies_from: 'browser',
|
import_cookies_from: 'browser',
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ export interface Settings {
|
|||||||
always_reencode_video: boolean;
|
always_reencode_video: boolean;
|
||||||
embed_video_metadata: boolean;
|
embed_video_metadata: boolean;
|
||||||
embed_audio_metadata: boolean;
|
embed_audio_metadata: boolean;
|
||||||
|
embed_video_thumbnail: boolean;
|
||||||
embed_audio_thumbnail: boolean;
|
embed_audio_thumbnail: boolean;
|
||||||
use_cookies: boolean;
|
use_cookies: boolean;
|
||||||
import_cookies_from: string;
|
import_cookies_from: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user