Go to file
Alexey Kostin cca7869d2a
Full refactor. Introduce tests (#35)
* start refactor

* default golang loyaout
separate qbittorrent and torrent structures

* stage

* move flags handle to module and cover it with tests
change handle sep with path.join

* ugly remove unneeded fields from resume.dat

* use path joing
prepare for resume structs

* Introduce subtests

* fix behavior

* Move to structures instead of using interfaces

* Make main cmd clean, decomposite functions

* Make main cmd clean, decomposite functions

* Detect torrents functions and tests

* Fixes

* Fixes

* New tests for content layout and file paths
reformat code for project
change libtorrent version
append torrent v2 schema in torrent structs

* filepath helper module
fix some tests

* fileHelpers new functions and tests

* new function with cut last part with tests

* function description and small fix

* rename some variables and structures

* beautiful tests handle for savePaths
starting refactor savepaths

* Refactor HandleSavePath func. Cover with tests
Move replace field creation to handle and assign pointer, instead of generate each time with handle resumeItem.
Moved opts to transferStructure.

* fix some tests

* HandleSavePaths covered with tests and little bit fixed

* Another one additional test for fully function cover

* check for tests

* Remove PiecePriority

* Refactored HandlePieces functions
Removed unused functions

* Rename variables. Introduced new tests

* Append tests

* Rename test funcs

* New tests

* New tests

* move modules

* introduce Makefile

* Adapt fileHelpers for both windows and linux. Linux tests passed
Use slashed paths for search torrents

* remove test template

* test fileset

* Makefile. Version introduce

* Fix darwin i386 version build

* Bug fix with mappedfiles
Need more tests and append new functionality.

* tests for HandleSavePaths with absoulte paths in mapped files

* additional tests with fileshare

* all tests OK

* Fix torrent state. Added tests

* fixes after code inspection

* Magnet link support. Tests

* README.md update

Co-authored-by: Alexey Kostin <a.kostin@corp.mail.ru>
2022-03-30 02:30:29 +03:00
.github/ISSUE_TEMPLATE Update issue templates 2019-03-12 01:05:52 +03:00
internal Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00
pkg Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00
test Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00
.gitignore Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00
bt2qbt.go Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00
go.mod Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00
go.sum Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00
LICENSE Create LICENSE 2019-03-12 01:05:03 +03:00
Makefile Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00
README.md Full refactor. Introduce tests (#35) 2022-03-30 02:30:29 +03:00

bt2qbt

bt2qbt is cli tool for export from uTorrent\Bittorrent into qBittorrent (convert)

Important

Actual version tested with uTorrent 3.5.5 (build 46206) and qBittorrent 4.4.2

Feature:

  • 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 *
  • Processing magnet links
  • Processing modified torrent names
  • Save date, metrics, status. **
  • Import of tags and labels
  • Multithreading
  • Covered with tests

Note

* This torrents will not be done (0%) and will need force recheck (right click on torrent -> Force recheck)

[!NOTE] * If you migrate from windows to linux and use replace function attention that multiple flags -r processing one by one

Note

* If you migrate from windows to linux and yours torrent files saves to some place you must use flag --search with actual paths in yours system

Note

* If you migrate from windows to linux you may need to define path separathor with --sep flag

Note

** The calculation of the completed parts is based only on the priority of the files in torrent. Don't transfer global uTorrent/BitTorrent statistics.

Note

*** Partially downloaded torrents will be visible as 100% completed, but in fact you will need to do a recheck (right click on torrent -> Force recheck). Without recheck 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.

Important

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

[!IMPORTANT] You must previously disable option "Append .!ut/.!bt to incomplete files" in preferences of uTorrent/Bittorrent, or that files wouldn't be handled

Help:

Help (from cmd or powershell)

Usage:
  bt2qbt_v1.999_amd64.exe [OPTIONS]

Application Options:
  -s, --source=         Source directory that contains resume.dat and torrents files (default: C:\Users\user\AppData\Roaming\uTorrent)
  -d, --destination=    Destination directory BT_backup (as default) (default: C:\Users\user\AppData\Local\qBittorrent\BT_backup)
  -c, --config=         qBittorrent config file (for write tags) (default: C:\Users\user\AppData\Roaming\qBittorrent\qBittorrent.ini)
      --without-labels  Do not export/import labels
      --without-tags    Do not export/import tags
  -t, --search=         Additional search path for torrents files
                        Example: --search='/mnt/olddisk/savedtorrents' --search='/mnt/olddisk/workstorrents'
  -r, --replace=        Replace save paths. Important: you have to use single slashes in paths
                        Delimiter for from/to is comma - ,
                        Example: -r "D:/films,/home/user/films" -r "D:/music,/home/user/music"

      --sep=            Default path separator that will use in all paths. You may need use this flag if you migrating from windows to linux in some cases
                        (default: \)
  -v, --version         Show version

Help Options:
  -h, --help            Show this help message

Usage examples:

  • If you just run application, it will handle torrents from %APPDATA%\uTorrent\ to %LOCALAPPDATA%\qBittorrent\BT_BACKUP\
C:\Users\user\Downloads> .\bt2qbt.exe
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.
Check that you previously disable option "Append .!ut/.!bt to incomplete files" in preferences of uTorrent/Bittorrent 


Press Enter to start

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

Press Enter to exit
  • Run application from cmd or powershell with keys, if you want change source dir or destination dir, or export/import behavior
C:\Users\user\Downloads> .\bt2qbt.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.
Check that you previously disable option "Append .!ut/.!bt to incomplete files" in preferences of uTorrent/Bittorrent 


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