@nikolay-borzov/torrent-clean v3.0.0
torrent-clean
CLI utility deletes files not listed in the selected torrent. Useful when torrent is updated and some files have been removed.
Prerequisites
- Node.js 18 or later
 
Install
npm i -g @nikolay-borzov/torrent-cleanUsage
C:\Downloads\NaturePack\torrent-clean -t C:\torrents\nature-pack.torrentgets files' paths from nature-pack.torrent and compares them with files from C:\Downloads\NaturePack\. Then files not presented in nature-pack.torrent can be deleted.
torrent-clean has tc alias.
Arguments
--torrent (or -t) - Torrent ID (as described in webtorrent api)
- Magnet URI (e.g. 
magnet:?xt=urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36) - Info Hash (e.g. 
d2474e86c95b19b8bcfdb92bc12c9d44667cfa36) - http/https URL to a torrent file
 - Filesystem path to a torrent file
 
--dir (or -d) - Path to directory with downloaded files
--version - Outputs the app version
Config files
torrent-clean allows specifying some parameters via config file (.torrent-cleanrc, .torrent-cleanrc.json, .torrent-cleanrc.yaml, .torrent-cleanrc.yml). There might be many files - torrent-clean will collect and merge all files up to root directory. The closer config to the directory is, the higher its priority.
Parameter are:
ignore: string[]- an array of globs (picomatch is used) or filenames that will be excluded from the list of extra files.rememberLastTorrent: boolean- Enable remembering last specified torrent ID for specified directory tolastTorrentconfig parameter. Only string values are saved.lastTorrentis used when--torrentargument is not set.
API
cleanTorrentDirectory accepts options object:
{
  torrentId: '6a9759bffd5c0af65319979fb7832189f4f3c35d',
  // Directory to clean
  directoryPath: 'C:/Downloads/wallpapers/nature',
  // Do not delete files immediately. Instead return `deleteFiles` function
  dryRun: true,
  // Config with highest priority
  customConfig: { ignore: ['**/*\(edited\)*'] },
  // Called when config is loaded
  onConfigLoaded({ torrent }) { console.log(`Parsed ${torrent}`) }
}import { cleanTorrentDirectory } from 'torrent-clean'
const { extraFiles } = await cleanTorrentDirectory({
  torrentId: 'C:/torrents/nature wallpapers.torrent',
  directoryPath: 'C:/Downloads/wallpapers/nature',
})
console.log('Removed', extraFiles)import cleanTorrentDirectory from 'torrent-clean'
const { extraFiles, deleteFiles } = await cleanTorrentDirectory({
  torrentId: '6a9759bffd5c0af65319979fb7832189f4f3c35d',
  directoryPath: 'C:/Downloads/wallpapers/nature',
  dryRun: true,
  customConfig: { ignore: ['**/*(edited)*'] },
})
console.log('Removing', extraFiles)
await deleteFiles(extraFiles)Known issues
- Torrent files with names containing unicode characters (e.g. 𝗚𝗪𝗔 1.txt) cannot be parsed correctly.
 - Parsing torrent by hash can sometimes hang. It's better to pass path to torrent file.