Skip to main content

qBt Migrate, change the paths of existing torrents in qBittorrent, as well as convert paths to Windows/Linux/Mac

Project description

qBt Migrate

Python

This tool changes the paths of existing torrents in qBittorrent in a bulk fashion. It can also convert slashes when migrating between Windows and Linux/Mac.

Demo

Also check out my Chrome Extension for handling TV Episode torrents.

qBt TV Torrent Upload

Chrome Web Store

Source

Usage

ALWAYS ensure qBittorrent is closed before running qbt_migrate. Either quit through File -> Exit, task tray icon, or task manager for your system.

Install from PyPi using pip, or jump to Examples for Docker

pip install qbt_migrate

Run the script and follow prompts or use CLI arguments with command qbt_migrate

usage: qbt_migrate [-h] [-e EXISTING_PATH] [-n NEW_PATH] [-r] [-t {Windows,Linux,Mac}] [-b BT_BACKUP_PATH] [-s] [-l {DEBUG,INFO}] [-v]

options:
  -h, --help            show this help message and exit
  -e EXISTING_PATH, --existing-path EXISTING_PATH
                        Existing root of path to look for.
  -n NEW_PATH, --new-path NEW_PATH
                        New root path to replace existing root path with.
  -r, --regex           Existing and New paths are regex patterns. (Capture groups recommended).
  -t {Windows,Linux,Mac}, --target-os {Windows,Linux,Mac}
                        Target OS (converts slashes). Default will auto-detect if conversion is needed based on existing vs new.
  -b BT_BACKUP_PATH, --bt-backup-path BT_BACKUP_PATH
                        BT_backup Path Override.
  -s, --skip-bad-files  Skips bad .fastresume files instead of exiting. Default behavior is to exit.
  -l {DEBUG,INFO}, --log-level {DEBUG,INFO}
                        Log Level, Default is INFO.
  -v, --version         Prints the current version number and exits.

By default, everything happens in the BT_backup directory defined by the OS the script is running on. Override BT_backup path if needed.

Default BT_backup paths:

  • Windows: %LOCALAPPDATA%/qBittorrent/BT_backup
  • Linux/Mac: $HOME/.local/share/data/qBittorrent/BT_backup
  • Docker: /config/qBittorrent/BT_backup

A backup zip archive is automatically created in the BT_backup directory.

Examples

Assuming all of our torrents are in X:\Torrents when coming from Windows, or /torrents when coming from Linux/Mac

NOTE: When running qbt_migrate on a Linux/Mac machine, Windows paths will require double \. Ex. C:\\Users\\user\\Downloads\\Torrents

NOTE: Take note of trailing slash replacement when changing from Windows <-> Linux. -e X:\ -n /torrents will result in /torrentsxxxxx, not /torrents/xxxxx. The correct pattern for this would be -e X: -n /torrents or -e X:\ -n /torrents/.

qbt_migrate -e X:\ -n Z:\ -t Windows  # Windows to Windows (Drive letter change)
qbt_migrate -e X:\Torrents -n X:\NewDir\Torrents -t Windows  # Windows to Windows (Directory Change)
qbt_migrate -e X:\Torrents -n Z:\NewDir\Torrents -t Windows  # Windows to Windows (Drive letter change with directory change)
qbt_migrate -e X: -n /torrents -t Linux  # Windows to Linux/Mac (converts slashes)  # When running on Linux machine \\ is needed for Windows Paths  # Note Trailing Slash
qbt_migrate -e X:\Torrents -n /torrents -t Linux  # Windows to Linux/Mac (converts slashes)  # When running on Linux machine \\ is needed for Windows Paths
qbt_migrate -e X:\\Torrents -n /torrents -t Linux  # Windows to Linux/Mac (converts slashes)  # When running on Linux machine \\ is needed for Windows Paths

qbt_migrate -e /torrents -n /new/path/for/torrents  # Changes torrent root path on Linux/Mac
qbt_migrate -e /torrents -n Z:\Torrents -t Windows  # Linux/Mac to Windows (converts slashes)
qbt_migrate -e /torrents -n Z:\\Torrents -t Windows  # Linux/Mac to Windows (converts slashes)  # When running on Linux machine \\ is needed for Windows Paths

# Adavanced Usage with RegEx
# Example would replace /some/test/with/a/path with /test/matched/path
qbt_migrate -r -e /some/(\w+)/.*$ -n \1/matched/path -t Linux  # Matches using regex patterns and replaces using capture groups.
qbt_migrate --regex -e /some/(\w+)/.*$ -n \1/matched/path -t Linux  # Matches using regex patterns and replaces using capture groups.

Docker

You can also run this tool with Docker if you don't have Python, or don't want to install the package to your system directly. The BT_backup path is automatically overridden to /tmp/BT_backup, so mount your BT_backup there.

NOTE: When running qbt_migrate Docker image on a Linux/Mac machine, Windows paths will require double \. Ex. C:\\Users\\user\\Downloads\\Torrents

The Docker image has all functionality as the pip install, following the same arguments/patterns listed in the above examples.

For example, mounting in the default BT_backup path on a Windows machine running Docker

docker run -v %LOCALAPPDATA%/qBittorrent/BT_backup:/tmp/BT_backup jslay88/qbt_migrate -e X:\ -n Z:\  # Windows to Windows (Drive letter change)
docker run -v %LOCALAPPDATA%/qBittorrent/BT_backup:/tmp/BT_backup jslay88/qbt_migrate -e X:\Torrents -n X:\NewDir\Torrents -t Windows  # Windows to Windows (Directory Change)
...

Mounting in the default BT_backup path on a Linux/Mac machine running Docker

docker run -v $HOME/.local/share/data/qBittorrent/BT_backup:/tmp/BT_backup jslay88/qbt_migrate -e X:\ -n Z:\  # Windows to Windows (Drive letter change)
docker run -v $HOME/.local/share/data/qBittorrent/BT_backup:/tmp/BT_backup jslay88/qbt_migrate -e X:\Torrents -n X:\NewDir\Torrents -t Windows  # Windows to Windows (Directory Change)
...

If for some reason you wanted to override BT_backup path from /tmp/BT_backup within the container, simply set environment variable BT_BACKUP_PATH on the container to where you will be mounting in.

The -e for environment variable override must go before the image jslay88/qbt_migrate as the -e after the image is for --existing-path

docker run -v %LOCALAPPDATA%/qBittorrent/BT_backup:/opt/qbt_migrate/fastresume -e BT_BACKUP_PATH=/opt/qbt_migrate/fastresume jslay88/qbt_migrate -e X:\ -n Z:\  # Windows to Windows (Drive letter change)
...

You can also clone this repository, build the image, and run your own built image

docker build . -t qbt_migrate
docker run -v %LOCALAPPDATA%/qBittorrent/BT_backup:/tmp/BT_backup qbt_migrate -e X:\ -n Z:\  # Windows to Windows (Drive letter change)
...

Python Module

This project has also been built to be modular and used as a Python Module. If you feel like utilizing this project within your own, please feel free to do so, and let me know!

Use Cases:

  • UI for qbt_migrate
  • FastResume Class
  • Torrent Manager

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qbt_migrate-2.3.2.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

qbt_migrate-2.3.2-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file qbt_migrate-2.3.2.tar.gz.

File metadata

  • Download URL: qbt_migrate-2.3.2.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for qbt_migrate-2.3.2.tar.gz
Algorithm Hash digest
SHA256 a9a5102bf6ca17893012dc604db0d71436cbd120b972a878587fba47edeb0b10
MD5 dd4573b4bf73e7329a9ab1fcca950c53
BLAKE2b-256 80bd8f0a3474f117096db1d9c4570ec660ea29db38f1726ec1c8b809456c2d0d

See more details on using hashes here.

File details

Details for the file qbt_migrate-2.3.2-py3-none-any.whl.

File metadata

  • Download URL: qbt_migrate-2.3.2-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.1

File hashes

Hashes for qbt_migrate-2.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9287300cfe617f07667132857103c237559e06901bcf60517a116152cabeb501
MD5 643783f5fc56b483d3081c043573197b
BLAKE2b-256 3d017a771290fa715c577226e8a61e8247c25944426752aff467a58e2097a09a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page