# TorrentFile
![torrentfile](https://github.com/alexpdev/torrentfile/blob/master/site/images/torrentfile.png?raw=true)
* * *
![GitHub repo size](https://img.shields.io/github/repo-size/alexpdev/torrentfile?color=orange)
![GitHub License](https://img.shields.io/github/license/alexpdev/torrentfile?color=red&logo=apache)
![PyPI - Downloads](https://img.shields.io/pypi/dm/torrentfile?color=brown)
![GitHub Last Commit](https://badgen.net/github/last-commit/alexpdev/torrentfile?color=blue)
[![CI](https://github.com/alexpdev/TorrentFile/actions/workflows/pyworkflow.yml/badge.svg?branch=master&event=push)](https://github.com/alexpdev/torrentfile/actions/workflows/pyworkflow.yml)
[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/b67ff65b3d574025b65b6587266bbab7)](https://www.codacy.com/gh/alexpdev/torrentfile/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexpdev/torrentfile&utm_campaign=Badge_Coverage)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/b67ff65b3d574025b65b6587266bbab7)](https://www.codacy.com/gh/alexpdev/torrentfile/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexpdev/torrentfile&utm_campaign=Badge_Grade)
[![DeepSource](https://deepsource.io/gh/alexpdev/TorrentFile.svg/?label=active+issues&token=16Sl_dF7nTU8YgPilcqhvHm8)](https://deepsource.io/gh/alexpdev/torrentfile/)
[![codecov](https://codecov.io/gh/alexpdev/torrentfile/branch/master/graph/badge.svg?token=EWF7NIL9SQ)](https://codecov.io/gh/alexpdev/torrentfile?color=navy&logo=codecov)
## 🌐 Overview
A command line interface for creating, reviewing, editing, or verifying bittorrent meta files (`.torrent` files).
_`torrentfile`_ is open source, and supports all versions of Bittorrent files, including hybrid meta files. The code base
is also importable and can easily be used as a library for creating or manipulating torrent files in external projects.
Documentation is available at [https://alexpdev.github.io/torrentfile](https://alexpdev.github.io/torrentfile).
> A GUI frontend for this project can be found at <https://github.com/alexpdev/TorrentfileQt>
## 🔌 Requirements
- Python 3.6+
- Tested on Linux, Windows and Mac
## 💻 Install
**PyPi:**
```bash
pip install torrentfile
```
**Git:**
```bash
git clone https://github.com/alexpdev/torrentfile.git
cd torrentfile
pip install .
```
> Download pre-compiled binaries from the [release page](https://github.com/alexpdev/torrentfile/releases).
## 📚 Documentation
### torrentfile documentation available at [https://alexpdev.github.io/torrentfile](https://alexpdev.github.io/torrentfile)
## 🚀 Usage
![Basic Usage](https://github.com/alexpdev/torrentfile/blob/master/assets/Torrentfile.gif?raw=True)
> Usage examples can be found in the project documentation on the [examples page.](https://alexpdev.github.io/torrentfile/usage)
## 📝 License
Apache Software License v2.0 - See [LICENSE]("https://github.com/alexpdev/torrentfile/blob/master/LICENSE")
## 💡 Issues & Requests & PRs
If you encounter any bugs or would like to request a new feature please open a new issue.
PRs and other contributions that are meaningful and add value to the project are welcome.
* * *
## Usage Examples
### Creating Bittorrent Files
Creating a basic torrent file is as easy as using the create subcommand with the path to the torrent file.
```bash
torrentfile create /path/to/content
```
You can add one or more trackers by using any one of `-a`, `--announce`
flags and listing their URL as a space separated list.
```bash
torrentfile create /path/to/content -a http://tracker1.com http://tracker2.net
```
If you intend to distribute the file on a private tracker then you should use one
of `-p`, `--private` flags, which tells your Bittorrent clients to disable DHT and
multitracker protocols.
```bash
torrentfile create /path/to/content --private
```
By default **`torrentfile`** displays a progress bar indicating how much of the content
has already been processed. To turn off this display you can either use `--quiet` mode in
as a global flag or you can set the `--prog` flag to 0.
```bash
torrentfile create /path/to/content --prog 0
```
**`torrentfile`** extracts the name of the contents top level file or directory
and saves the torrent file to the current working directory with the extracted title.
For example running the follwing command would create `./content.torrent`.
```bash
torrentfile create /path/to/content
```
To specify an alternative path or filename you may use the `-o`, `--out` flags
followed by the path to the preferred destination.
```bash
torrentfile create /path/to/content -o /some/other/path/torrent.torrent
```
If the path specified is an existing directory, then the torrent file will be
saved to that directory, with same filename as the default top level path name.
For example the following command would create a torrent file at `/some/other/path/content.torrent`.
```bash
torrentfile create /path/to/content -o /some/other/path/
```
_`torrentfile`_ creates Bittorrent v1 files by default. To create a V2 or hybrid (v1 and v2)
torrent file, use the `--meta-version` option followed by the preferred version number option.
The options include: `1`(v1 default), `2`(v2), or `3`(v1 & v2).
```bash
torrentfile create /path/to/content --meta-version 2
```
```bash
torrentfile create /path/to/content --meta-version 3
```
`torrentfile` includes the option to command line flags for the `create` sub-command from an `ini` style
configuration file, by using the `--config` and optional `--config-path` options to specify the path
to the configuration file. If `--config-path` is ommited, then `torrentfile` will look by default in the current
working directory for a file named `torrentfile.ini`. If the file is not discovered in the current working directory,
it will move on to look `~/.torrentfile/torrentfile.ini` followed by `~/.config/torrentfile.ini`. Please see the
[documentation](https://alexpdev.github.io/torrentfile/overview/) for more details on how the configuration file should be
formatted.
### Check/Recheck Torrent
The `recheck` subcommand allows you to scan a Bittorrent file and compare it's contents,
against a file or directory containing the contents the torrent file was created from.
The output provided by this process gives a detailed perspective if any files are missing
or have been corrupted in any way. Supports any version of Bittorrent file.
```bash
torrentfile recheck /path/to/some.torrent /path/to/content
```
### Edit Torrent
To edit specific fields of the torrent file, there is the `edit` subcommand. Using this
subcommand you can specify the field with one of the available field flags, for example
`--announce` and specify the value you wish to change it to.
```bash
torrentfile edit /path/to/content --announce https://new.tracker.url1.com https://newtracker.url/2
```
You can use the `-h` flag for a full list of available fields that can be edited.
```bash
torrentfile edit -h
```
### Create Magnet
To create a magnet URI for a pre-existing torrent meta file, use the sub-command
`magnet` with the path to the torrent file.
```bash
torrentfile magnet /path/to/some.torrent
```
### GUI
If you prefer a windowed GUI please check out the official GUI frontend [here](https://github.com/alexpdev/TorrentFileQt)
Raw data
{
"_id": null,
"home_page": "",
"name": "torrentfile",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "Bittorrent,torrent,bittorrent-metafiles,CLI,torrentfile",
"author": "",
"author_email": "alexpdev <alexpdev@pm.me>",
"download_url": "https://files.pythonhosted.org/packages/ec/23/6e3399dc8965cca7da2073bce66ba58a5ff656c7cb90a2201da0138642a0/torrentfile-0.9.2.tar.gz",
"platform": null,
"description": "# TorrentFile\r\n\r\n![torrentfile](https://github.com/alexpdev/torrentfile/blob/master/site/images/torrentfile.png?raw=true)\r\n\r\n* * *\r\n\r\n![GitHub repo size](https://img.shields.io/github/repo-size/alexpdev/torrentfile?color=orange)\r\n![GitHub License](https://img.shields.io/github/license/alexpdev/torrentfile?color=red&logo=apache)\r\n![PyPI - Downloads](https://img.shields.io/pypi/dm/torrentfile?color=brown)\r\n![GitHub Last Commit](https://badgen.net/github/last-commit/alexpdev/torrentfile?color=blue)\r\n[![CI](https://github.com/alexpdev/TorrentFile/actions/workflows/pyworkflow.yml/badge.svg?branch=master&event=push)](https://github.com/alexpdev/torrentfile/actions/workflows/pyworkflow.yml)\r\n[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/b67ff65b3d574025b65b6587266bbab7)](https://www.codacy.com/gh/alexpdev/torrentfile/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexpdev/torrentfile&utm_campaign=Badge_Coverage)\r\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/b67ff65b3d574025b65b6587266bbab7)](https://www.codacy.com/gh/alexpdev/torrentfile/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexpdev/torrentfile&utm_campaign=Badge_Grade)\r\n[![DeepSource](https://deepsource.io/gh/alexpdev/TorrentFile.svg/?label=active+issues&token=16Sl_dF7nTU8YgPilcqhvHm8)](https://deepsource.io/gh/alexpdev/torrentfile/)\r\n[![codecov](https://codecov.io/gh/alexpdev/torrentfile/branch/master/graph/badge.svg?token=EWF7NIL9SQ)](https://codecov.io/gh/alexpdev/torrentfile?color=navy&logo=codecov)\r\n\r\n## \ud83c\udf10 Overview\r\n\r\nA command line interface for creating, reviewing, editing, or verifying bittorrent meta files (`.torrent` files).\r\n_`torrentfile`_ is open source, and supports all versions of Bittorrent files, including hybrid meta files. The code base\r\nis also importable and can easily be used as a library for creating or manipulating torrent files in external projects.\r\nDocumentation is available at [https://alexpdev.github.io/torrentfile](https://alexpdev.github.io/torrentfile).\r\n\r\n> A GUI frontend for this project can be found at <https://github.com/alexpdev/TorrentfileQt>\r\n\r\n## \ud83d\udd0c Requirements\r\n\r\n- Python 3.6+\r\n- Tested on Linux, Windows and Mac\r\n\r\n## \ud83d\udcbb Install\r\n\r\n**PyPi:**\r\n\r\n```bash\r\npip install torrentfile\r\n```\r\n\r\n**Git:**\r\n\r\n```bash\r\ngit clone https://github.com/alexpdev/torrentfile.git\r\ncd torrentfile\r\npip install .\r\n```\r\n\r\n> Download pre-compiled binaries from the [release page](https://github.com/alexpdev/torrentfile/releases).\r\n\r\n## \ud83d\udcda Documentation\r\n\r\n### torrentfile documentation available at [https://alexpdev.github.io/torrentfile](https://alexpdev.github.io/torrentfile)\r\n\r\n## \ud83d\ude80 Usage\r\n\r\n![Basic Usage](https://github.com/alexpdev/torrentfile/blob/master/assets/Torrentfile.gif?raw=True)\r\n\r\n> Usage examples can be found in the project documentation on the [examples page.](https://alexpdev.github.io/torrentfile/usage)\r\n\r\n## \ud83d\udcdd License\r\n\r\nApache Software License v2.0 - See [LICENSE](\"https://github.com/alexpdev/torrentfile/blob/master/LICENSE\")\r\n\r\n## \ud83d\udca1 Issues & Requests & PRs\r\n\r\nIf you encounter any bugs or would like to request a new feature please open a new issue.\r\nPRs and other contributions that are meaningful and add value to the project are welcome.\r\n\r\n* * *\r\n\r\n## Usage Examples\r\n\r\n### Creating Bittorrent Files\r\n\r\nCreating a basic torrent file is as easy as using the create subcommand with the path to the torrent file.\r\n\r\n```bash\r\ntorrentfile create /path/to/content\r\n```\r\n\r\nYou can add one or more trackers by using any one of `-a`, `--announce`\r\nflags and listing their URL as a space separated list.\r\n\r\n```bash\r\ntorrentfile create /path/to/content -a http://tracker1.com http://tracker2.net\r\n```\r\n\r\nIf you intend to distribute the file on a private tracker then you should use one \r\nof `-p`, `--private` flags, which tells your Bittorrent clients to disable DHT and \r\nmultitracker protocols.\r\n\r\n```bash\r\ntorrentfile create /path/to/content --private\r\n```\r\n\r\nBy default **`torrentfile`** displays a progress bar indicating how much of the content \r\nhas already been processed. To turn off this display you can either use `--quiet` mode in \r\nas a global flag or you can set the `--prog` flag to 0.\r\n\r\n```bash\r\ntorrentfile create /path/to/content --prog 0\r\n```\r\n\r\n**`torrentfile`** extracts the name of the contents top level file or directory \r\nand saves the torrent file to the current working directory with the extracted title.\r\n\r\nFor example running the follwing command would create `./content.torrent`.\r\n\r\n```bash\r\ntorrentfile create /path/to/content\r\n```\r\n\r\nTo specify an alternative path or filename you may use the `-o`, `--out` flags \r\nfollowed by the path to the preferred destination.\r\n\r\n```bash\r\ntorrentfile create /path/to/content -o /some/other/path/torrent.torrent\r\n```\r\n\r\nIf the path specified is an existing directory, then the torrent file will be\r\nsaved to that directory, with same filename as the default top level path name.\r\n\r\nFor example the following command would create a torrent file at `/some/other/path/content.torrent`.\r\n\r\n```bash\r\ntorrentfile create /path/to/content -o /some/other/path/\r\n```\r\n\r\n_`torrentfile`_ creates Bittorrent v1 files by default. To create a V2 or hybrid (v1 and v2)\r\ntorrent file, use the `--meta-version` option followed by the preferred version number option.\r\nThe options include: `1`(v1 default), `2`(v2), or `3`(v1 & v2).\r\n\r\n```bash\r\ntorrentfile create /path/to/content --meta-version 2\r\n```\r\n\r\n```bash\r\ntorrentfile create /path/to/content --meta-version 3 \r\n```\r\n\r\n`torrentfile` includes the option to command line flags for the `create` sub-command from an `ini` style\r\nconfiguration file, by using the `--config` and optional `--config-path` options to specify the path\r\nto the configuration file. If `--config-path` is ommited, then `torrentfile` will look by default in the current\r\nworking directory for a file named `torrentfile.ini`. If the file is not discovered in the current working directory,\r\nit will move on to look `~/.torrentfile/torrentfile.ini` followed by `~/.config/torrentfile.ini`. Please see the\r\n[documentation](https://alexpdev.github.io/torrentfile/overview/) for more details on how the configuration file should be\r\nformatted.\r\n\r\n### Check/Recheck Torrent\r\n\r\nThe `recheck` subcommand allows you to scan a Bittorrent file and compare it's contents,\r\nagainst a file or directory containing the contents the torrent file was created from.\r\nThe output provided by this process gives a detailed perspective if any files are missing\r\nor have been corrupted in any way. Supports any version of Bittorrent file.\r\n\r\n```bash\r\ntorrentfile recheck /path/to/some.torrent /path/to/content\r\n```\r\n\r\n### Edit Torrent\r\n\r\nTo edit specific fields of the torrent file, there is the `edit` subcommand. Using this\r\nsubcommand you can specify the field with one of the available field flags, for example\r\n`--announce` and specify the value you wish to change it to.\r\n\r\n```bash\r\ntorrentfile edit /path/to/content --announce https://new.tracker.url1.com https://newtracker.url/2\r\n```\r\n\r\nYou can use the `-h` flag for a full list of available fields that can be edited.\r\n\r\n```bash\r\ntorrentfile edit -h\r\n```\r\n\r\n### Create Magnet\r\n\r\nTo create a magnet URI for a pre-existing torrent meta file, use the sub-command \r\n`magnet` with the path to the torrent file.\r\n\r\n```bash\r\ntorrentfile magnet /path/to/some.torrent\r\n```\r\n\r\n### GUI\r\n\r\nIf you prefer a windowed GUI please check out the official GUI frontend [here](https://github.com/alexpdev/TorrentFileQt)\r\n",
"bugtrack_url": null,
"license": "",
"summary": "Terminal based command line tool for creating Bittorrent files.",
"version": "0.9.2",
"project_urls": {
"changelog": "https://alexpdev.github.io/torrentfile/changelog/",
"documentation": "https://alexpdev.github.io/torrentfile",
"homepage": "https://github.com/alexpdev/torrentfile",
"issues": "https://github.com/alexpdev/torrentfile/issues",
"repository": "https://github.com"
},
"split_keywords": [
"bittorrent",
"torrent",
"bittorrent-metafiles",
"cli",
"torrentfile"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "106ebcdfc144a112e67c784ff1fa683b9500bf5ed61ee89072b0f53d3e2362e0",
"md5": "990a2faba303bee5e17723b84a85076e",
"sha256": "0ac9cc3eafa870e6b1e8f2b4ee7fabcadba5d89952308ec698eea579b9f1e88a"
},
"downloads": -1,
"filename": "torrentfile-0.9.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "990a2faba303bee5e17723b84a85076e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 51742,
"upload_time": "2023-08-28T05:05:04",
"upload_time_iso_8601": "2023-08-28T05:05:04.740717Z",
"url": "https://files.pythonhosted.org/packages/10/6e/bcdfc144a112e67c784ff1fa683b9500bf5ed61ee89072b0f53d3e2362e0/torrentfile-0.9.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ec236e3399dc8965cca7da2073bce66ba58a5ff656c7cb90a2201da0138642a0",
"md5": "d62ebad07fb62223f1375c9b62579240",
"sha256": "f74aea1b1b4b3fdfb3af8806eb17c858b5c527127354f829db9cbe2023a00b38"
},
"downloads": -1,
"filename": "torrentfile-0.9.2.tar.gz",
"has_sig": false,
"md5_digest": "d62ebad07fb62223f1375c9b62579240",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 395716,
"upload_time": "2023-08-28T05:05:07",
"upload_time_iso_8601": "2023-08-28T05:05:07.717194Z",
"url": "https://files.pythonhosted.org/packages/ec/23/6e3399dc8965cca7da2073bce66ba58a5ff656c7cb90a2201da0138642a0/torrentfile-0.9.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-28 05:05:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "alexpdev",
"github_project": "torrentfile",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "torrentfile"
}