Description: Bittorrent Meta File Creator.

# TorrentFile

## :globe_with_meridians: Overview

A `simple` and `convenient` tool for creating, reviewing, editing, and/or
checking/validating bittorrent meta files (aka torrent files). `torrentfile`
supports all versions of Bittorrent files, including hybrid meta files.

> A GUI frontend for this project can be found at https://github.com/alexpdev/TorrentfileQt

## :white_check_mark: Requirements

- Python 3.7+
- Tested on Linux and Windows

## :package: Install

via PyPi:

    pip install torrentfile

via Git:

    git clone https://github.com/alexpdev/torrentfile.git
    python setup.py install

> Download pre-compiled binaries from the release page.

## :scroll: Documentation

Documentation can be found here or in the `docs` directory.

## :rocket: Usage

    torrentfile [-h] [-i] [-V] [-v]  ...

    Sub-Commands:

        create           Create a new torrent file.
        check            Check if file/folder contents match a torrent file.
        edit             Edit a pre-existing torrent file.
        magnet           Create Magnet URI for an existing torrent meta file.

    optional arguments:
      -h, --help         show this help message and exit
      -V, --version      show program version and exit
      -i, --interactive  select program options interactively
      -v, --verbose      output debug information

> Usage examples can be found in the project documentation on the examples page.

!!! torrentfile is under active development, and is subject to significant changes in
it's codebase between releases.

## :memo: License

Distributed under the GNU LGPL v3. See `LICENSE` for more information.

## :bug: Issues

If you encounter any bugs or would like to request a new feature please open a new issue.

https://github.com/alexpdev/torrentfile/issues

## CLI Usage Examples

Examples using TorrentFile with CLI arguments can be found below. Alternatively, `interactive mode` allows program options to be specified one option at a time from a series of prompts using the following commands.

`torrentfile -i` or `torrentfile --interactive`

### Creating Torrents

Using the sub-command `create` TorrentFile can create a new torrent from the contents of a file or directory path. The following examples illustrate some of the options available for creating torrent files.

- Create a torrent file from(`/path/to/content`) file or directory
- by default torrent files are saved to `/path/to/content.torrent`
- by default torrents are created using bittorrent meta version 1

    > torrentfile create /path/to/content

- the `-t` or `--tracker` flag adds one or more items to the list of trackers

    > torrentfile create /path/to/content --tracker http://tracker1.com
    > torrentfile create /other/content -t http://tracker2 http://tracker3

- the `--private` flag indicates use by a private tracker
- the `--source` flag adds a "source" property and fills it

    > torrentfile create ./content --source SrcStr --private

- to specify the save location use the `-o` or `--outfile` flags

    > torrentfile create -o /specific/path/name.torrent ./content

- to create files using bittorrent v2 use `--meta-version 2`
- likewise `--meta-version 3` creates a hybrid torrent file.

    > torrentfile create --meta-version 2 /path/to/content
    > torrentfile create --meta-version 3 /path/to/content

- to create a magnet URI for the created torrent file use `--magnet`

    > torrentfile create --t https://tracker1/annc https://tracker2/annc --magnet /path/to/content

### Check/Recheck Torrents

Using the sub-command `recheck` or `check` or `r` you can check how much of a torrent's data you have available by comparing the contetnts to the original torrent meta file.

- recheck torrent file `/path/to/name.torrent` with `./downloads/name`

    > torrentfile recheck /path/to/name.torrent ./downloads/name

### Edit Torrents

Using the sub-command `edit` or `e` enables editting a pre-existing torrent file. The edit sub-command works identically to the `create` sub-command and accepts many of the same arguments.

### Create Magnet

To create a magnet URI for a pre-existing torrent meta file, use the sub-command
`magnet` with the path to the meta file.

    > torrentfile magnet /path/to/metafile