mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 10:51:36 -04:00
Finding channel by destination directory if any.
This commit is contained in:
parent
f1bc29d76f
commit
ddb35448aa
5 changed files with 17 additions and 18 deletions
|
|
@ -13,12 +13,7 @@ class Downloader extends React.Component {
|
|||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
advancedOpen: false,
|
||||
destination: '',
|
||||
downloader: props.downloader,
|
||||
pending: false,
|
||||
urls: '',
|
||||
valid: true,
|
||||
advancedOpen: false, destination: '', downloader: props.downloader, pending: false, urls: '', valid: true,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -27,13 +22,7 @@ class Downloader extends React.Component {
|
|||
if (urls) {
|
||||
this.setState({pending: true});
|
||||
try {
|
||||
let response = await postDownload(
|
||||
urls,
|
||||
downloader,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
destination);
|
||||
let response = await postDownload(urls, downloader, null, null, null, destination);
|
||||
if (response.status === 204) {
|
||||
this.setState({urls: '', pending: false});
|
||||
}
|
||||
|
|
@ -44,9 +33,14 @@ class Downloader extends React.Component {
|
|||
}
|
||||
|
||||
handleInputChange = async (event, {name, value}) => {
|
||||
console.log(name, value);
|
||||
this.setState({[name]: value}, this.validateUrls);
|
||||
}
|
||||
|
||||
handleDestinationChange = (value) => {
|
||||
this.setState({destination: value});
|
||||
}
|
||||
|
||||
validateUrls = async () => {
|
||||
// Validate that all URLs in state are valid.
|
||||
if (this.state.urls) {
|
||||
|
|
@ -78,7 +72,7 @@ class Downloader extends React.Component {
|
|||
<DirectoryInput
|
||||
isDirectory={true}
|
||||
value={destination}
|
||||
setInput={value => this.handleInputChange('directory', value)}
|
||||
setInput={this.handleDestinationChange}
|
||||
placeholder='download/into/custom/directory'
|
||||
/>
|
||||
</FormField>
|
||||
|
|
|
|||
|
|
@ -39,7 +39,8 @@ function VideoPage({videoFile, prevFile, nextFile, setFavorite, ...props}) {
|
|||
|
||||
const handleDeleteVideo = async (video_id) => {
|
||||
try {
|
||||
await deleteVideos(video_id)
|
||||
await deleteVideos([video_id])
|
||||
setDeleteOpen(false);
|
||||
} catch (e) {
|
||||
setDeleteOpen(false);
|
||||
throw e;
|
||||
|
|
|
|||
|
|
@ -241,10 +241,12 @@ class VideoDownloader(Downloader, ABC):
|
|||
settings = download.settings or dict()
|
||||
local_channel_id = settings.get('channel_id')
|
||||
channel_url = settings.get('channel_url')
|
||||
destination = settings.get('destination')
|
||||
if not channel and (local_channel_id or channel_url):
|
||||
# Could not find channel via yt-dlp info_json, use info from ChannelDownloader if it created this Download.
|
||||
logger.info(f'Using download.settings to find channel')
|
||||
channel = get_channel(channel_id=local_channel_id, url=channel_url, return_dict=False)
|
||||
channel = get_channel(channel_id=local_channel_id, url=channel_url, directory=destination,
|
||||
return_dict=False)
|
||||
if channel:
|
||||
found_channel = 'download_settings'
|
||||
|
||||
|
|
@ -256,7 +258,7 @@ class VideoDownloader(Downloader, ABC):
|
|||
logger.info('Could not find channel')
|
||||
|
||||
# Use the default directory if this video has no channel.
|
||||
if settings.get('destination'):
|
||||
if destination:
|
||||
out_dir = pathlib.Path(settings['destination'])
|
||||
else:
|
||||
out_dir = get_no_channel_directory()
|
||||
|
|
|
|||
|
|
@ -446,6 +446,7 @@ async def test_download_result(test_session, test_directory, video_download_mana
|
|||
@pytest.mark.asyncio
|
||||
async def test_download_destination(test_session, test_directory, video_download_manager,
|
||||
mock_video_process_runner, mock_video_extract_info, mock_video_prepare_filename):
|
||||
"""A Video can be downloaded to a directory other than it's Channel's directory."""
|
||||
mock_video_extract_info.return_value = example_video_json
|
||||
|
||||
settings = dict(destination=f'{test_directory}/custom')
|
||||
|
|
|
|||
|
|
@ -221,7 +221,8 @@ async def post_download(_: Request, body: DownloadRequest):
|
|||
downloader = body.downloader
|
||||
if not downloader or downloader in ('auto', 'None', 'null'):
|
||||
downloader = None
|
||||
settings = dict(excluded_urls=excluded_urls, destination=body.destination)
|
||||
destination = get_media_directory() / body.destination if body.destination else None
|
||||
settings = dict(excluded_urls=excluded_urls, destination=str(destination))
|
||||
if body.frequency:
|
||||
download_manager.recurring_download(urls[0], body.frequency, downloader=downloader,
|
||||
sub_downloader=body.sub_downloader, reset_attempts=True,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue