Linux tool for migration from Bittorrent/uTorrent/Deluge to qBittorrent

Linux specific questions, problems.

Moderators: Global Moderator, Moderator

Post Reply
rumanzo
VIP
VIP
Posts: 74
Joined: Fri Dec 29, 2017 6:46 pm

Linux tool for migration from Bittorrent/uTorrent/Deluge to qBittorrent

Post by rumanzo » Sun Feb 16, 2020 2:44 pm

Original topic viewtopic.php?f=14&t=5889

Disappointed in the existing application on the ruby, which could not handle all my torrents, I wrote my own application on golang.
I tested it on my own torrent database (3k+) and test torrents on Bittorrent/uTorrent clients (version 3+).
Features:
  • Processing all torrents
  • Processing torrents with subdirectories and without subdirectories
  • Processing torrents with renamed files
  • Processing torrents with non-standard encodings (for example, cp1251)
  • Processing of torrents in the not ready state *
  • Save date, metrics, status. **
  • Import of tags and labels
  • Multithreading
  • Path replace mechanism
* This torrents will not be done (0%) and will need force rehash
** The calculation of the completed parts is based only on the priority of the files in torrent
*** Partially downloaded torrents will be visible as 100% completed, but in fact you will need to do a rehash. Without rehash torrents not will be valid. This is due to the fact that conversion of .dat files in which parts of objects are stored is not implemented.

Don't forget before use make backup bittorrent\utorrent, qbittorrent folder. and config %APPDATA%/Roaming/qBittorrent/qBittorrent.ini. Close all this program before.

Usage:
If you MacOs user or Linux user don't forget to make the file executable:

Code: Select all

$ chmod +x bt2qbt_v1.2_amd64_macos
1.) Help (from cmd or powerwhell)

Code: Select all

C:\Users\user\Downloads> .\bt2qbt_v1.2_amd64.exe -h
Usage of C:\Users\user\Downloads\bt2qbt_v1.2_amd64.exe:
-c, --qconfig (= "C:\\Users\\user\\AppData\\Roaming\\qBittorrent\\qBittorrent.ini")
    qBittorrent config files (for write tags)
-d, --destination (= "C:\\Users\\user\\AppData\\Local\\qBittorrent\\BT_backup\\")
    Destination directory BT_backup (as default)
--replace (= "")
    Replace paths.
        Delimiter for replaces - ;
        Delimiter for from/to - ,
        Example: "D:\films,/home/user/films;\,/"
        If you use path separator different from you system, declare it mannually    
-s, --source (= "C:\\Users\\user\\AppData\\Roaming\\uTorrent\\")
    Source directory that contains resume.dat and torrents files
--without-labels  (= false)
    Do not export/import labels
--without-tags  (= false)
    Do not export/import tags
2.) If you just run application, it will processing torrents from %APPDATA%\uTorrent\ to %LOCALAPPDATA%\qBittorrent\BT_BACKUP\
Example:

Code: Select all

It will be performed processing from directory C:\Users\user\AppData\Roaming\uTorrent\ to directory C:\Users\user\AppData\Local\qBittorrent\BT_backup\
Check that the qBittorrent is turned off and the directory C:\Users\user\AppData\Local\qBittorrent\BT_backup\ and config C:\Users\user\AppData\Roaming\qBittorrent\qBittorrent.ini is backed up.


Press Enter to start

Started
1/2 Sucessfully imported 1.torrent
2/2 Sucessfully imported 2.torrent

Press Enter to exit
3.) Run application from cmd or powershell with keys, if you want change source dir or destination dir, or export/import behavior
Example:

Code: Select all

C:\Users\user\Downloads> .\bt2qbt_v1.2_amd64.exe -s C:\Users\user\AppData\Roaming\BitTorrent\
It will be performed processing from directory C:\Users\user\AppData\Roaming\BitTorrent\ to directory C:\Users\user\AppData\Local\qBittorrent\BT_backup\
Check that the qBittorrent is turned off and the directory C:\Users\user\AppData\Local\qBittorrent\BT_backup\ is backed up.

Press Enter to start
Started
1/3233 Sucessfully imported 1.torrent
2/3233 Sucessfully imported 2.torrent
3/3233 Sucessfully imported 3.torrent
...
3231/3233 Sucessfully imported 3231.torrent
3232/3233 Sucessfully imported 3232.torrent
3233/3233 Sucessfully imported 3233.torrent

Press Enter to exit
Known issuses:
  • Unknown
Here's the project: https://github.com/rumanzo/bt2qbt
Code:  https://github.com/rumanzo/bt2qbt/blob/master/bt2qbt.go
Releases: https://github.com/rumanzo/bt2qbt/releases
x86_64 binary: https://github.com/rumanzo/bt2qbt/relea ... _amd64.exe
i386 binary: https://github.com/rumanzo/bt2qbt/relea ... 2_i386.exe
x86_64 Linux binary: https://github.com/rumanzo/bt2qbt/relea ... md64_linux
i386 Linux binary: https://github.com/rumanzo/bt2qbt/relea ... i386_linux
x86_64 MacOs binary: https://github.com/rumanzo/bt2qbt/relea ... md64_macos
i386 MacOs binary: https://github.com/rumanzo/bt2qbt/relea ... i386_macos

Deluge branch:
Here's the project: https://github.com/rumanzo/deluge2qbt
code: https://github.com/rumanzo/deluge2qbt/b ... uge2qbt.go
Releases: https://github.com/rumanzo/deluge2qbt/releases
x86_64 binary: https://github.com/rumanzo/deluge2qbt/r ... _amd64.exe
i386 binary: https://github.com/rumanzo/deluge2qbt/r ... 3_i386.exe
x86_64 Linux binary: https://github.com/rumanzo/deluge2qbt/r ... md64_linux
i386 Linux binary: https://github.com/rumanzo/deluge2qbt/r ... i386_linux
x86_64 MacOs binary: https://github.com/rumanzo/deluge2qbt/r ... md64_macos
i386 MacOs binary: https://github.com/rumanzo/deluge2qbt/r ... i386_macos

If there are any errors or if it help you - write there

DarthDobber
Newbie
Newbie
Posts: 2
Joined: Thu Apr 02, 2020 7:42 am

Re: Linux tool for migration from Bittorrent/uTorrent/Deluge to qBittorrent

Post by DarthDobber » Thu Apr 02, 2020 7:48 am

Thank you for the work you have put into this tool!

I am attempting to use it to migrate from utorrent 3.2.1 running on Windows to qbittorrent running on Ubuntu 18.04. I have ran the following command but I must be doing something wrong with the replace function.

Code: Select all

./bt2qbt_v1.2_amd64_linux -s /media/utorrent/john/AppData/Roaming/uTorrent/ --replace "S:\,/media/torrents;\,/"
I'm using that replace statement because my torrents are not stored in the same directory as the resume.dat. They are all saved in my S: drive. When I run this command it doesn't import my torrents and gives this error message for all torrents.

Code: Select all

XXXX/XXXX Can't decode torrent file /media/utorrent/john/AppData/Roaming/uTorrent/S:\Torrent\Completed\TorrentName.torrent for S:\Torrents\Completed\TorrentName.torrent
Thanks again!

rumanzo
VIP
VIP
Posts: 74
Joined: Fri Dec 29, 2017 6:46 pm

Re: Linux tool for migration from Bittorrent/uTorrent/Deluge to qBittorrent

Post by rumanzo » Thu Apr 02, 2020 5:40 pm

DarthDobber wrote:
Thu Apr 02, 2020 7:48 am
Thank you for the work you have put into this tool!

I am attempting to use it to migrate from utorrent 3.2.1 running on Windows to qbittorrent running on Ubuntu 18.04. I have ran the following command but I must be doing something wrong with the replace function.

Code: Select all

./bt2qbt_v1.2_amd64_linux -s /media/utorrent/john/AppData/Roaming/uTorrent/ --replace "S:\,/media/torrents;\,/"
I'm using that replace statement because my torrents are not stored in the same directory as the resume.dat. They are all saved in my S: drive. When I run this command it doesn't import my torrents and gives this error message for all torrents.

Code: Select all

XXXX/XXXX Can't decode torrent file /media/utorrent/john/AppData/Roaming/uTorrent/S:\Torrent\Completed\TorrentName.torrent for S:\Torrents\Completed\TorrentName.torrent
Thanks again!
Seems like a bug. I fix this soon

DarthDobber
Newbie
Newbie
Posts: 2
Joined: Thu Apr 02, 2020 7:42 am

Re: Linux tool for migration from Bittorrent/uTorrent/Deluge to qBittorrent

Post by DarthDobber » Thu Apr 02, 2020 6:39 pm

Thank you so much!

Let me know if you need any more data from me.

Thanks!

rumanzo
VIP
VIP
Posts: 74
Joined: Fri Dec 29, 2017 6:46 pm

Re: Linux tool for migration from Bittorrent/uTorrent/Deluge to qBittorrent

Post by rumanzo » Thu Apr 02, 2020 9:17 pm

DarthDobber wrote:
Thu Apr 02, 2020 6:39 pm
Thank you so much!

Let me know if you need any more data from me.

Thanks!
I check you case, and it's difficult case. It's not about the replace flag. The fact is that when a utorrent saves a torrent, it puts the torrent file in its directory (in AppData\Roaming\uTorrent) and the key in the resume.dat is relative torrent file name, but if the torrent file is saved in another place, then the key is absolute torrent file path such as S:\Torrent\Completed\TorrentName.torrent . In code I use construction

Code: Select all

if ok := filepath.IsAbs(key); ok {
		newstructure.TorrentFilePath = key
	} else {
		newstructure.TorrentFilePath = flags.bitDir + key
	}
In Linux system windows file path not considered as absolute path in function in filepath.IsAbs (https://golang.org/pkg/path/filepath/#IsAbs).
This could be circumvented, but access to the torrent file is needed, and in the case of a system migrated to Linux, it is impossible to determine whether the former paths were mounted and where they were mounted. In other words, I can’t find in the Linux system where the torrent file is located, which was previously on the way S:\Torrent\Completed\TorrentName.torrent
I can try adding a flag to search for torrent files in a specific directory, may be it helps
Torrent files with utorrent can be in different directories or in only one?

Post Reply