Add explaination of new settings in Application settings page
Add 's' to AudioMultistream variables/methods to stay consistent with yt-dlp's naming of the --audio-multistream flag
This commit is contained in:
parent
1ba03489ff
commit
4efea375d6
|
|
@ -48,8 +48,8 @@ const ChannelAbout = () => {
|
|||
|
||||
const [downloadFormat, setDownloadFormat] = useState<string | null>(null);
|
||||
const [downloadContainer, setDownloadContainer] = useState<'mp4' | 'mkv' | null>(null);
|
||||
const [audioMultistream, setAudioMultistream] = useState<boolean | null>(null);
|
||||
const [audioMultistreamWarning, setAudioMultistreamWarning] = useState<string | null>(null);
|
||||
const [audioMultistreams, setAudioMultistreams] = useState<boolean | null>(null);
|
||||
const [audioMultistreamsWarning, setAudioMultistreamsWarning] = useState<string | null>(null);
|
||||
const [audioLanguages, setAudioLanguages] = useState<string | null>(null);
|
||||
const [autoDeleteAfter, setAutoDeleteAfter] = useState<number | null>(null);
|
||||
const [indexPlaylists, setIndexPlaylists] = useState(false);
|
||||
|
|
@ -73,10 +73,10 @@ const ChannelAbout = () => {
|
|||
setDownloadContainer(
|
||||
channelResponseData?.channel_overwrites?.download_container ?? null,
|
||||
);
|
||||
setAudioMultistream(
|
||||
setAudioMultistreams(
|
||||
channelResponseData?.channel_overwrites?.audio_multistream ?? null,
|
||||
);
|
||||
setAudioMultistreamWarning(null);
|
||||
setAudioMultistreamsWarning(null);
|
||||
setAudioLanguages(channelResponseData?.channel_overwrites?.audio_languages ?? null);
|
||||
setAutoDeleteAfter(channelResponseData?.channel_overwrites?.autodelete_days ?? null);
|
||||
setIndexPlaylists(channelResponseData?.channel_overwrites?.index_playlists ?? false);
|
||||
|
|
@ -105,12 +105,12 @@ const ChannelAbout = () => {
|
|||
if (!channel) return;
|
||||
const response = await updateChannelOverwrites(channel.channel_id, configKey, configValue);
|
||||
if (response?.error?.error) {
|
||||
setAudioMultistreamWarning(response.error.error);
|
||||
setAudioMultistreamsWarning(response.error.error);
|
||||
return;
|
||||
}
|
||||
setAudioMultistreamWarning(null);
|
||||
setAudioMultistreamsWarning(null);
|
||||
if (configKey === 'audio_multistream') {
|
||||
setAudioMultistream(configValue === null ? null : Boolean(configValue));
|
||||
setAudioMultistreams(configValue === null ? null : Boolean(configValue));
|
||||
}
|
||||
setRefresh(true);
|
||||
};
|
||||
|
|
@ -322,21 +322,21 @@ const ChannelAbout = () => {
|
|||
const value = event.target.value as 'mp4' | 'mkv' | '';
|
||||
|
||||
if (value === '') {
|
||||
if (audioMultistream) {
|
||||
if (audioMultistreams) {
|
||||
// Always clear channel multistream FIRST when switching to global container.
|
||||
// This avoids stale global-container state causing persistent override drift.
|
||||
await handleUpdateConfig('audio_multistream', null);
|
||||
setAudioMultistream(null);
|
||||
setAudioMultistreams(null);
|
||||
}
|
||||
await handleUpdateConfig('download_container', null);
|
||||
setDownloadContainer(null);
|
||||
return;
|
||||
}
|
||||
|
||||
if (value !== 'mkv' && audioMultistream) {
|
||||
if (value !== 'mkv' && audioMultistreams) {
|
||||
// Clear multistream first when switching to single-audio container preference.
|
||||
await handleUpdateConfig('audio_multistream', null);
|
||||
setAudioMultistream(null);
|
||||
setAudioMultistreams(null);
|
||||
}
|
||||
|
||||
await handleUpdateConfig('download_container', value);
|
||||
|
|
@ -355,23 +355,23 @@ const ChannelAbout = () => {
|
|||
</div>
|
||||
<ToggleConfig
|
||||
name="audio_multistream"
|
||||
value={audioMultistream ?? false}
|
||||
value={audioMultistreams ?? false}
|
||||
helperText={
|
||||
audioMultistream
|
||||
audioMultistreams
|
||||
? 'If multiple audio tracks are selected/found, Tube Archivist will automatically save as mkv. Single-audio downloads keep the selected/effective container.'
|
||||
: 'Enable to include multiple audio languages when available for this channel.'
|
||||
}
|
||||
updateCallback={handleUpdateConfig}
|
||||
resetCallback={() => {
|
||||
handleUpdateConfig('audio_multistream', null);
|
||||
setAudioMultistream(null);
|
||||
setAudioMultistreams(null);
|
||||
}}
|
||||
/>
|
||||
{audioMultistreamWarning && (
|
||||
<p className="settings-error">{audioMultistreamWarning}</p>
|
||||
{audioMultistreamsWarning && (
|
||||
<p className="settings-error">{audioMultistreamsWarning}</p>
|
||||
)}
|
||||
</div>
|
||||
{audioMultistream && (
|
||||
{audioMultistreams && (
|
||||
<div className="settings-box-wrapper">
|
||||
<div>
|
||||
<p>Audio Languages</p>
|
||||
|
|
|
|||
|
|
@ -56,10 +56,10 @@ const SettingsApplication = () => {
|
|||
const [downloadsFormatSort, setDownloadsFormatSort] = useState<string | null>(null);
|
||||
const [downloadsExtractorLang, setDownloadsExtractorLang] = useState<string | null>(null);
|
||||
const [embedMetadata, setEmbedMetadata] = useState(false);
|
||||
const [audioMultistream, setAudioMultistream] = useState(false);
|
||||
const [audioMultistreams, setAudioMultistreams] = useState(false);
|
||||
const [downloadContainer, setDownloadContainer] = useState<'mp4' | 'mkv'>('mp4');
|
||||
const [audioLanguages, setAudioLanguages] = useState<string | null>(null);
|
||||
const [audioMultistreamWarning, setAudioMultistreamWarning] = useState<string | null>(null);
|
||||
const [audioMultistreamsWarning, setAudioMultistreamsWarning] = useState<string | null>(null);
|
||||
|
||||
// Subtitles
|
||||
const [subtitleLang, setSubtitleLang] = useState<string | null>(null);
|
||||
|
|
@ -116,10 +116,10 @@ const SettingsApplication = () => {
|
|||
setDownloadsFormatSort(appSettingsConfigData?.downloads.format_sort || null);
|
||||
setDownloadsExtractorLang(appSettingsConfigData?.downloads.extractor_lang || null);
|
||||
setEmbedMetadata(appSettingsConfigData?.downloads.add_metadata || false);
|
||||
setAudioMultistream(appSettingsConfigData?.downloads.audio_multistream || false);
|
||||
setAudioMultistreams(appSettingsConfigData?.downloads.audio_multistream || false);
|
||||
setAudioLanguages(appSettingsConfigData?.downloads.audio_languages || null);
|
||||
setDownloadContainer(appSettingsConfigData?.downloads.container || 'mp4');
|
||||
setAudioMultistreamWarning(null);
|
||||
setAudioMultistreamsWarning(null);
|
||||
|
||||
// Subtitles
|
||||
setSubtitleLang(appSettingsConfigData?.downloads.subtitle || null);
|
||||
|
|
@ -157,10 +157,10 @@ const SettingsApplication = () => {
|
|||
const updatedConfig = { [group]: { [key]: configValue } } as Partial<AppSettingsConfigType>;
|
||||
const response = await updateAppsettingsConfig(updatedConfig);
|
||||
if (response?.error?.error) {
|
||||
setAudioMultistreamWarning(response.error.error);
|
||||
setAudioMultistreamsWarning(response.error.error);
|
||||
return;
|
||||
}
|
||||
setAudioMultistreamWarning(null);
|
||||
setAudioMultistreamsWarning(null);
|
||||
setRefresh(true);
|
||||
};
|
||||
|
||||
|
|
@ -476,12 +476,17 @@ const SettingsApplication = () => {
|
|||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Embedding metadata adds additional metadata and thumbnails directly to the mp4
|
||||
file.
|
||||
Download container sets the default file type: mp4 is most browser-friendly,
|
||||
while mkv is better for multi-audio tracks.
|
||||
</li>
|
||||
<li>
|
||||
Enable multistream audio to download all available audio languages (maps to
|
||||
<i>--audio-multistream</i>). This can increase file size.
|
||||
Embedding metadata adds additional metadata and thumbnails directly to mp4
|
||||
files. Mkv downloads are not embedded by this option.
|
||||
</li>
|
||||
<li>
|
||||
Enable multistream audio to download multiple audio languages (maps to{' '}
|
||||
<i>--audio-multistreams</i>). This increases file size and may use mkv when
|
||||
multiple tracks are selected.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -560,19 +565,19 @@ const SettingsApplication = () => {
|
|||
</div>
|
||||
<ToggleConfig
|
||||
name="downloads.audio_multistream"
|
||||
value={audioMultistream}
|
||||
value={audioMultistreams}
|
||||
helperText={
|
||||
audioMultistream
|
||||
audioMultistreams
|
||||
? 'If multiple audio tracks are selected/found, Tube Archivist will automatically save as mkv. Single-audio downloads keep your selected container.'
|
||||
: 'Enable to include multiple audio languages when available.'
|
||||
}
|
||||
updateCallback={handleUpdateConfig}
|
||||
/>
|
||||
{audioMultistreamWarning && (
|
||||
<p className="settings-error">{audioMultistreamWarning}</p>
|
||||
{audioMultistreamsWarning && (
|
||||
<p className="settings-error">{audioMultistreamsWarning}</p>
|
||||
)}
|
||||
</div>
|
||||
{audioMultistream && (
|
||||
{audioMultistreams && (
|
||||
<div className="settings-box-wrapper">
|
||||
<div>
|
||||
<p>Audio languages</p>
|
||||
|
|
|
|||
Loading…
Reference in New Issue