library 3.2.5__tar.gz → 3.2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {library-3.2.5 → library-3.2.6}/.github/README.md +13 -1
- {library-3.2.5 → library-3.2.6}/PKG-INFO +14 -2
- {library-3.2.5 → library-3.2.6}/library/__main__.py +1 -1
- {library-3.2.5 → library-3.2.6}/library/playback/torrents_info.py +40 -26
- {library-3.2.5 → library-3.2.6}/library/usage.py +12 -0
- {library-3.2.5 → library-3.2.6}/library/utils/arggroups.py +10 -0
- {library-3.2.5 → library-3.2.6}/pyproject.toml +1 -1
- {library-3.2.5 → library-3.2.6}/LICENSE +0 -0
- {library-3.2.5 → library-3.2.6}/library/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/assets/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/assets/calibre.css +0 -0
- {library-3.2.5 → library-3.2.6}/library/assets/kotobago.png +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/av.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/computer_info.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/computers_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/fs_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/fs_add_metadata.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/gallery_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/gallery_backend.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/getty_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/hn_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/links_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/nicotine_import.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/places_import.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/reddit_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/row_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/site_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/substack.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/subtitle.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/tables_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/tabs_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/tildes.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/torrents_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/tube_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/tube_backend.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/createdb/web_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/data/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/data/dictionary.pkl +0 -0
- {library-3.2.5 → library-3.2.6}/library/data/ffmpeg_errors.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/data/http_errors.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/data/imagemagick_errors.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/data/unar_errors.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/data/wordbank.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/data/yt_dlp_errors.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/editdb/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/editdb/dedupe_db.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/editdb/dedupe_media.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/editdb/merge_online_local.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/editdb/mpv_watchlater.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/editdb/pushshift.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/editdb/reddit_selftext.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/files/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/files/christen.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/files/sample_compare.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/files/sample_hash.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/files/similar_files.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/big_dirs.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/filter_src.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/merge_mv.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/mergerfs_cp.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/mount_stats.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/move_list.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/scatter.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/folders/similar_folders.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/fsdb/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/fsdb/disk_usage.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/fsdb/filesystem.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/fsdb/folder_stats.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/fsdb/search_db.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/lb.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/block.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/db_history.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/db_media.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/db_playlists.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/download.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/download_status.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/history.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/history_add.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/optimize_db.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/playlists.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/redownload.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/search.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediadb/stats.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/images_to_pdf.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/media_check.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/pdf_edit.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/process_ffmpeg.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/process_image.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/process_media.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/process_text.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/torrents_dump.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/torrents_start.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/mediafiles/unardel.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/misc/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/misc/dedupe_czkawka.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/misc/export_text.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/misc/search_help.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/multidb/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/multidb/allocate_torrents.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/multidb/copy_play_counts.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/multidb/merge_dbs.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/links_open.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/media_player.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/media_printer.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/play_actions.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/playback_control.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/post_actions.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/surf.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/tabs_open.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/playback/torrents_remaining.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/readme.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/tablefiles/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/tablefiles/columns.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/tablefiles/eda.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/tablefiles/incremental_diff.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/tablefiles/markdown_tables.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/tablefiles/mcda.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/tablefiles/plot.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/cluster_sort.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/combinations.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/expand_links.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/extract_links.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/extract_text.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/json_keys_rename.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/markdown_links.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/nouns.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/regex_sort.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/text/timestamps.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/__init__.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/arg_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/argparse_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/consts.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/date_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/db_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/devices.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/file_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/filter_engine.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/gui.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/iterables.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/log_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/mpv_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/nums.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/objects.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/path_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/pd_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/printing.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/processes.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/remote_processes.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/shell_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/sql_utils.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/sqlgroups.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/strings.py +0 -0
- {library-3.2.5 → library-3.2.6}/library/utils/web.py +0 -0
|
@@ -99,7 +99,7 @@ To stop playing press Ctrl+C in either the terminal or mpv
|
|
|
99
99
|
<details><summary>List all subcommands</summary>
|
|
100
100
|
|
|
101
101
|
$ library
|
|
102
|
-
library (v3.2.
|
|
102
|
+
library (v3.2.006; 102 subcommands)
|
|
103
103
|
|
|
104
104
|
Create database subcommands:
|
|
105
105
|
╭─────────────────┬──────────────────────────────────────────╮
|
|
@@ -3042,6 +3042,18 @@ Inspired somewhat by https://nikkhokkho.sourceforge.io/?page=FileOptimizer
|
|
|
3042
3042
|
|
|
3043
3043
|
library torrents query
|
|
3044
3044
|
|
|
3045
|
+
Positional torrent searches use the path aligned with torrent status by default.
|
|
3046
|
+
Search a specific path field or both fields with --path-search:
|
|
3047
|
+
|
|
3048
|
+
library torrents --dl --path-search save /mnt/d4/
|
|
3049
|
+
library torrents --dl --path-search both /mnt/d4/
|
|
3050
|
+
|
|
3051
|
+
Find incomplete torrents whose temp and final paths use different drives.
|
|
3052
|
+
--different-drives searches both path fields unless --path-search is specified:
|
|
3053
|
+
|
|
3054
|
+
library torrents --dl --different-drives
|
|
3055
|
+
library torrents --dl --different-drives /mnt/d4/
|
|
3056
|
+
|
|
3045
3057
|
Aggregate torrent info (torrents-status)
|
|
3046
3058
|
|
|
3047
3059
|
library torrents -pa
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: library
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.6
|
|
4
4
|
Summary: xk media library
|
|
5
5
|
Author-Email: Jacob Chapman <7908073+chapmanjacobd@users.noreply.github.com>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -207,7 +207,7 @@ To stop playing press Ctrl+C in either the terminal or mpv
|
|
|
207
207
|
<details><summary>List all subcommands</summary>
|
|
208
208
|
|
|
209
209
|
$ library
|
|
210
|
-
library (v3.2.
|
|
210
|
+
library (v3.2.006; 102 subcommands)
|
|
211
211
|
|
|
212
212
|
Create database subcommands:
|
|
213
213
|
╭─────────────────┬──────────────────────────────────────────╮
|
|
@@ -3150,6 +3150,18 @@ Inspired somewhat by https://nikkhokkho.sourceforge.io/?page=FileOptimizer
|
|
|
3150
3150
|
|
|
3151
3151
|
library torrents query
|
|
3152
3152
|
|
|
3153
|
+
Positional torrent searches use the path aligned with torrent status by default.
|
|
3154
|
+
Search a specific path field or both fields with --path-search:
|
|
3155
|
+
|
|
3156
|
+
library torrents --dl --path-search save /mnt/d4/
|
|
3157
|
+
library torrents --dl --path-search both /mnt/d4/
|
|
3158
|
+
|
|
3159
|
+
Find incomplete torrents whose temp and final paths use different drives.
|
|
3160
|
+
--different-drives searches both path fields unless --path-search is specified:
|
|
3161
|
+
|
|
3162
|
+
library torrents --dl --different-drives
|
|
3163
|
+
library torrents --dl --different-drives /mnt/d4/
|
|
3164
|
+
|
|
3153
3165
|
Aggregate torrent info (torrents-status)
|
|
3154
3166
|
|
|
3155
3167
|
library torrents -pa
|
|
@@ -297,6 +297,8 @@ def filter_torrents_by_criteria(args, torrents):
|
|
|
297
297
|
|
|
298
298
|
if args.private is not None:
|
|
299
299
|
torrents = [t for t in torrents if args.private is t.private]
|
|
300
|
+
if args.different_drives:
|
|
301
|
+
torrents = [t for t in torrents if torrent_paths_on_different_drives(t)]
|
|
300
302
|
if args.no_tagged:
|
|
301
303
|
tags = set(args.no_tagged)
|
|
302
304
|
torrents = [t for t in torrents if tags.isdisjoint(t.tags.split(", "))]
|
|
@@ -309,7 +311,7 @@ def filter_torrents_by_criteria(args, torrents):
|
|
|
309
311
|
for t in torrents
|
|
310
312
|
if strings.glob_match_all(
|
|
311
313
|
args.torrent_search,
|
|
312
|
-
[t.name, t.comment,
|
|
314
|
+
[t.name, t.comment, *torrent_paths_for_search(args, t), t.hash],
|
|
313
315
|
)
|
|
314
316
|
]
|
|
315
317
|
if args.torrent_exclude:
|
|
@@ -318,7 +320,7 @@ def filter_torrents_by_criteria(args, torrents):
|
|
|
318
320
|
for t in torrents
|
|
319
321
|
if not strings.glob_match_any(
|
|
320
322
|
args.torrent_exclude,
|
|
321
|
-
[t.name, t.comment,
|
|
323
|
+
[t.name, t.comment, *torrent_paths_for_search(args, t), t.hash],
|
|
322
324
|
)
|
|
323
325
|
]
|
|
324
326
|
if args.torrent_include:
|
|
@@ -327,7 +329,7 @@ def filter_torrents_by_criteria(args, torrents):
|
|
|
327
329
|
for t in torrents
|
|
328
330
|
if strings.glob_match_any(
|
|
329
331
|
args.torrent_include,
|
|
330
|
-
[t.name, t.comment,
|
|
332
|
+
[t.name, t.comment, *torrent_paths_for_search(args, t), t.hash],
|
|
331
333
|
)
|
|
332
334
|
]
|
|
333
335
|
if args.file_search:
|
|
@@ -502,6 +504,36 @@ def map_value_status(t, status):
|
|
|
502
504
|
return MAP_VALUE.get(status, t.state == status)
|
|
503
505
|
|
|
504
506
|
|
|
507
|
+
def torrent_paths_for_search(args, t):
|
|
508
|
+
path_search = getattr(args, "path_search", None)
|
|
509
|
+
if path_search is None:
|
|
510
|
+
path_search = "both" if getattr(args, "different_drives", False) else "status"
|
|
511
|
+
if path_search == "download":
|
|
512
|
+
return [t.download_path]
|
|
513
|
+
if path_search == "save":
|
|
514
|
+
return [t.save_path]
|
|
515
|
+
if path_search == "both":
|
|
516
|
+
return [t.download_path, t.save_path]
|
|
517
|
+
return [t.save_path if t.state_enum.is_complete else t.download_path]
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
def torrent_paths_on_different_drives(t):
|
|
521
|
+
if not t.download_path or not t.save_path:
|
|
522
|
+
return False
|
|
523
|
+
return path_utils.mountpoint(t.download_path) != path_utils.mountpoint(t.save_path)
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
def set_torrent_paths(qbt_client, t, temp_path, download_path):
|
|
527
|
+
save_path = download_path if download_path is not None else t.save_path
|
|
528
|
+
if save_path:
|
|
529
|
+
print(" ", t.save_path, "==>", save_path)
|
|
530
|
+
qbt_client.torrents_set_location(str(save_path), torrent_hashes=[t.hash])
|
|
531
|
+
|
|
532
|
+
if temp_path is not None:
|
|
533
|
+
print(" ", t.download_path, "-->", temp_path)
|
|
534
|
+
qbt_client.torrents_set_download_path(str(temp_path), torrent_hashes=[t.hash])
|
|
535
|
+
|
|
536
|
+
|
|
505
537
|
def torrents_info():
|
|
506
538
|
args = parse_args()
|
|
507
539
|
|
|
@@ -914,21 +946,6 @@ def torrents_info():
|
|
|
914
946
|
k not in args.defaults for k in ["temp_drive", "temp_prefix", "download_drive", "download_prefix"]
|
|
915
947
|
)
|
|
916
948
|
if args.move or alt_move_syntax:
|
|
917
|
-
|
|
918
|
-
def set_temp_path(t, temp_path):
|
|
919
|
-
if temp_path is None:
|
|
920
|
-
return
|
|
921
|
-
|
|
922
|
-
print(" ", t.download_path, "-->", temp_path)
|
|
923
|
-
qbt_client.torrents_set_download_path(str(temp_path), torrent_hashes=[t.hash])
|
|
924
|
-
|
|
925
|
-
def set_download_path(t, download_path):
|
|
926
|
-
if download_path is None:
|
|
927
|
-
return
|
|
928
|
-
|
|
929
|
-
print(" ", t.save_path, "==>", download_path)
|
|
930
|
-
qbt_client.torrents_set_save_path(str(download_path), torrent_hashes=[t.hash])
|
|
931
|
-
|
|
932
949
|
for idx, t in enumerate(torrents):
|
|
933
950
|
print("Moving", idx + 1, "of", len(torrents))
|
|
934
951
|
|
|
@@ -993,28 +1010,25 @@ def torrents_info():
|
|
|
993
1010
|
log.debug("download_path %s", download_path)
|
|
994
1011
|
|
|
995
1012
|
new_path = download_path if t.state_enum.is_complete else temp_path
|
|
1013
|
+
if new_path is None:
|
|
1014
|
+
new_path = t.save_path if t.state_enum.is_complete else t.download_path
|
|
996
1015
|
if args.simulate:
|
|
997
1016
|
print("Moving", t.content_path, "to", new_path)
|
|
998
1017
|
continue
|
|
999
1018
|
|
|
1000
1019
|
content_path = Path(t.content_path) if t.content_path else None
|
|
1001
|
-
if content_path and content_path.exists():
|
|
1020
|
+
if content_path and content_path.exists() and new_path is not None:
|
|
1002
1021
|
if content_path.is_file():
|
|
1003
1022
|
print("Moving file", content_path, "to", new_path)
|
|
1004
1023
|
merge_mv.move(args, [str(content_path)], str(new_path))
|
|
1005
1024
|
else:
|
|
1006
|
-
new_path
|
|
1025
|
+
new_path = Path(new_path) / content_path.name
|
|
1007
1026
|
print("Moving folder", content_path, "to", new_path)
|
|
1008
1027
|
merge_mv.move(args, [str(content_path)], str(new_path))
|
|
1009
1028
|
|
|
1010
1029
|
if not (args.delete_files or args.delete_rows):
|
|
1011
1030
|
# update metadata
|
|
1012
|
-
|
|
1013
|
-
set_temp_path(t, temp_path)
|
|
1014
|
-
set_download_path(t, download_path)
|
|
1015
|
-
else: # download path first
|
|
1016
|
-
set_download_path(t, download_path)
|
|
1017
|
-
set_temp_path(t, temp_path)
|
|
1031
|
+
set_torrent_paths(qbt_client, t, temp_path, download_path)
|
|
1018
1032
|
|
|
1019
1033
|
if not originally_stopped:
|
|
1020
1034
|
qbt_client.torrents_start(torrent_hashes=[t.hash])
|
|
@@ -1991,6 +1991,18 @@ torrents_info = """library torrents-info
|
|
|
1991
1991
|
|
|
1992
1992
|
library torrents query
|
|
1993
1993
|
|
|
1994
|
+
Positional torrent searches use the path aligned with torrent status by default.
|
|
1995
|
+
Search a specific path field or both fields with --path-search:
|
|
1996
|
+
|
|
1997
|
+
library torrents --dl --path-search save /mnt/d4/
|
|
1998
|
+
library torrents --dl --path-search both /mnt/d4/
|
|
1999
|
+
|
|
2000
|
+
Find incomplete torrents whose temp and final paths use different drives.
|
|
2001
|
+
--different-drives searches both path fields unless --path-search is specified:
|
|
2002
|
+
|
|
2003
|
+
library torrents --dl --different-drives
|
|
2004
|
+
library torrents --dl --different-drives /mnt/d4/
|
|
2005
|
+
|
|
1994
2006
|
Aggregate torrent info (torrents-status)
|
|
1995
2007
|
|
|
1996
2008
|
library torrents -pa
|
|
@@ -2795,6 +2795,16 @@ def qBittorrent_torrents(parent_parser):
|
|
|
2795
2795
|
help="Include torrents with files currently in use by processes",
|
|
2796
2796
|
)
|
|
2797
2797
|
parser.add_argument("--private", action=argparse.BooleanOptionalAction, help="Match only private torrents")
|
|
2798
|
+
parser.add_argument(
|
|
2799
|
+
"--different-drives",
|
|
2800
|
+
action=argparse.BooleanOptionalAction,
|
|
2801
|
+
help="Include torrents whose incomplete and final paths are on different mountpoints",
|
|
2802
|
+
)
|
|
2803
|
+
parser.add_argument(
|
|
2804
|
+
"--path-search",
|
|
2805
|
+
choices=["status", "download", "save", "both"],
|
|
2806
|
+
help="Path used by positional torrent searches: status, download, save, or both",
|
|
2807
|
+
)
|
|
2798
2808
|
|
|
2799
2809
|
parser.add_argument(
|
|
2800
2810
|
"--sizes",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|