Skip to content

Commit bbc0c1e

Browse files
committed
rework torrent moving pt 3
1 parent 0e306ba commit bbc0c1e

File tree

1 file changed

+46
-33
lines changed

1 file changed

+46
-33
lines changed

library/playback/torrents_info.py

+46-33
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from library import usage
88
from library.mediafiles import torrents_start
99
from library.utils import arggroups, argparse_utils, consts, iterables, nums, path_utils, printing, processes, strings
10+
from library.utils.log_utils import log
1011
from library.utils.path_utils import domain_from_url, fqdn_from_url
1112

1213

@@ -472,8 +473,11 @@ def gen_row(t):
472473
file_path.unlink(missing_ok=True)
473474
break # Stop after deleting first valid path
474475

475-
alt_move_syntax = any(k not in args.defaults for k in ["temp_drive", "temp_prefix", "download_drive", "download_prefix"])
476+
alt_move_syntax = any(
477+
k not in args.defaults for k in ["temp_drive", "temp_prefix", "download_drive", "download_prefix"]
478+
)
476479
if args.move or alt_move_syntax:
480+
477481
def set_temp_path(t, temp_path):
478482
if temp_path is None:
479483
return
@@ -489,43 +493,51 @@ def set_download_path(t, download_path):
489493
qbt_client.torrents_set_save_path(str(download_path), torrent_hashes=[t.hash])
490494

491495
for idx, t in enumerate(torrents):
496+
print("Moving", idx + 1, "of", len(torrents))
497+
492498
originally_stopped = t.state_enum.is_stopped
493499
qbt_client.torrents_stop(torrent_hashes=[t.hash])
494500

495-
print("Moving", idx + 1, "of", len(torrents))
496-
497501
if "temp_drive" not in args.defaults:
498502
temp_path = Path(args.temp_drive)
499503
elif "temp_prefix" not in args.defaults:
500-
temp_path = Path(path_utils.mountpoint(t.download_path)) # keep existing drive
504+
temp_path = Path(path_utils.mountpoint(t.download_path or t.content_path)) # keep existing drive
505+
log.debug("temp_path: using t.download_path %s mountpoint %s", t.download_path, temp_path)
501506
else:
502507
temp_path = args.move
503508

504509
if "download_drive" not in args.defaults:
505510
download_path = Path(args.download_drive)
506511
elif "download_prefix" not in args.defaults:
507-
download_path = Path(path_utils.mountpoint(t.save_path)) # keep existing drive
512+
download_path = Path(path_utils.mountpoint(t.save_path or t.content_path)) # keep existing drive
513+
log.debug("download_path: using t.save_path %s mountpoint %s", t.save_path, download_path)
508514
else:
509515
download_path = args.move
510516

511-
# --temp-drive or --move could be relative
512-
if not temp_path.is_absolute():
513-
mountpoint = path_utils.mountpoint(t.content_path)
514-
temp_path = Path(mountpoint) / temp_path
515-
if not download_path.is_absolute():
516-
mountpoint = path_utils.mountpoint(t.content_path)
517-
download_path = Path(mountpoint) / download_path
518-
519-
if "temp_prefix" not in args.defaults:
520-
temp_path /= args.temp_prefix
521-
if "download_prefix" not in args.defaults:
522-
download_path /= args.download_prefix
523-
524-
if args.tracker_dirnames:
525-
domain = t.tracker_domain()
526-
if domain:
527-
temp_path /= domain
528-
download_path /= domain
517+
if temp_path is not None:
518+
if not temp_path.is_absolute(): # --X-drive or --move could be relative
519+
mountpoint = path_utils.mountpoint(t.content_path)
520+
temp_path = Path(mountpoint) / temp_path
521+
if args.temp_prefix:
522+
temp_path /= args.temp_prefix
523+
if args.tracker_dirnames:
524+
domain = t.tracker_domain()
525+
if domain:
526+
temp_path /= domain
527+
528+
if download_path is not None:
529+
if not download_path.is_absolute():
530+
mountpoint = path_utils.mountpoint(t.content_path)
531+
download_path = Path(mountpoint) / download_path
532+
if args.download_prefix:
533+
download_path /= args.download_prefix
534+
if args.tracker_dirnames:
535+
domain = t.tracker_domain()
536+
if domain:
537+
download_path /= domain
538+
539+
log.debug("temp_path %s", temp_path)
540+
log.debug("download_path %s", download_path)
529541

530542
new_path = download_path if t.state_enum.is_complete else temp_path
531543
if args.simulate:
@@ -536,16 +548,17 @@ def set_download_path(t, download_path):
536548
new_path.mkdir(parents=True, exist_ok=True)
537549
shutil.move(t.content_path, new_path)
538550

539-
# update metadata
540-
if t.state_enum.is_complete: # temp path first
541-
set_temp_path(t, temp_path)
542-
set_download_path(t, download_path)
543-
else: # download path first
544-
set_download_path(t, download_path)
545-
set_temp_path(t, temp_path)
546-
547-
if not originally_stopped:
548-
qbt_client.torrents_start(torrent_hashes=[t.hash])
551+
if not (args.delete_files or args.delete_rows):
552+
# update metadata
553+
if t.state_enum.is_complete: # temp path first
554+
set_temp_path(t, temp_path)
555+
set_download_path(t, download_path)
556+
else: # download path first
557+
set_download_path(t, download_path)
558+
set_temp_path(t, temp_path)
559+
560+
if not originally_stopped:
561+
qbt_client.torrents_start(torrent_hashes=[t.hash])
549562

550563
if args.start is not None:
551564
print("Starting", len(torrents))

0 commit comments

Comments
 (0)