Skip to content

Commit 19011c3

Browse files
authored
Merge pull request #172 from alexpdev/dev
v0.9.10
2 parents 6f19ad2 + 02a54ea commit 19011c3

File tree

73 files changed

+1903
-1812
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1903
-1812
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# TorrentFile
22

3+
## Version 0.8.10
4+
5+
- added support for bittorrent v2 magnet links
6+
- added unit tests for v2 magnet links
7+
- updated algorithm for human readable byte formatting
8+
9+
---
10+
311
## Version 0.8.9
412

513
- fixed bug with the config file parsing

Makefile

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@ clean-build: ## remove build artifacts
7474
rm -frv runner/build
7575
rm -frv runner/dist
7676

77-
extra: ## extra imports
78-
pip install torrentfile torrentfileQt QStyler ebookatty --force-reinstall --no-cache --upgrade
79-
8077
test: ## Get coverage report
8178
tox
8279

README.md

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@
1616

1717
## 🌐 Overview
1818

19-
A `simple` and `convenient` tool for creating, reviewing, editing, and/or
20-
validating bittorrent meta files (aka torrent files). _`torrentfile`_
21-
supports all versions of Bittorrent files, including hybrid meta files, and has
22-
full unicode support.
19+
A command line tool for creating, reviewing, editing, or verifying bittorrent meta files (`.torrent` files).
20+
_`torrentfile`_ is open source, and supports all versions of Bittorrent files, including hybrid meta files.
2321

2422
> A GUI frontend for this project can be found at <https://github.com/alexpdev/TorrentfileQt>
2523
@@ -30,13 +28,13 @@ full unicode support.
3028

3129
## 💻 Install
3230

33-
**via PyPi:**
31+
**PyPi:**
3432

3533
```bash
3634
pip install torrentfile
3735
```
3836

39-
**via Git:**
37+
**Git:**
4038

4139
```bash
4240
git clone https://github.com/alexpdev/torrentfile.git
@@ -51,8 +49,6 @@ pip install .
5149
Documentation can be found [here](https://alexpdev.github.io/torrentfile)
5250
or in the _`docs`_ directory.
5351

54-
> _torrentfile_ is under active development, and is subject to significant changes in the codebase between releases.
55-
5652
## 🚀 Usage & Documentation
5753

5854
![Basic Usage](https://github.com/alexpdev/torrentfile/blob/master/assets/Torrentfile.gif?raw=True)
@@ -84,7 +80,7 @@ the path to the contents.
8480
torrentfile create /path/to/content
8581
```
8682

87-
You can add one or more trackers by using any one of `-t`, `--tracker`, `-a`, `--announce`
83+
You can add one or more trackers by using any one of `-a`, `--announce`
8884
flags and listing their URL as a space separated list.
8985

9086
```bash
@@ -127,7 +123,7 @@ followed by the relative or absolute path to your preferred output location.
127123
torrentfile create /path/to/content -o /some/other/path/torrent.torrent
128124
```
129125

130-
If the path `--out` path specified is an existing directory, then the torrent file will be
126+
If the path specified is an existing directory, then the torrent file will be
131127
saved to that directory, with same filename as the default top level path name.
132128

133129
For example the following command would create a torrent file at `/some/other/path/content.torrent`.
@@ -136,11 +132,10 @@ For example the following command would create a torrent file at `/some/other/pa
136132
torrentfile create /path/to/content -o /some/other/path/
137133
```
138134

139-
Bittorrent protocol V1 is still the most common version in use for torrent files,
140-
therefore by default __`torrentfile`__ uses the version 1 format when creating the file.
141-
However __`torrentfile`__ has full support for creating V2 format torrent files as well as
142-
hybrid V1 & V2 format files. Use the `--meta-version` flag to specify which file format
143-
should be used during torrent file creation. Options include `1`(v1 default), `2`(v2), or `3`(v1 & v2).
135+
Bittorrent protocol V1 is still the most commonly used version, therefore _`torrentfile`_ creates
136+
Bittorrent version 1 torrent files by default. To specify creating a V2 file or hybrid (v1 and v2)
137+
use the `--meta-version` followed by the specific version number format to use. The options include:
138+
`1`(v1 default), `2`(v2), or `3`(v1 & v2).
144139

145140
```bash
146141
torrentfile create /path/to/content --meta-version 2
@@ -183,7 +178,9 @@ torrentfile edit /path/to/content --tracker https://new.tracker.url1.com https:
183178

184179
You can use the `-h` flag for a full list of available fields that can be edited.
185180

186-
__`torrentfile`__ edit -h
181+
```bash
182+
torrentfile edit -h
183+
```
187184

188185
### Create Magnet
189186

docs/Source/commands/index.html

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,7 +1428,12 @@ <h3 id="torrentfile.commands.magnet" class="doc doc-heading">
14281428
<span class="normal">384</span>
14291429
<span class="normal">385</span>
14301430
<span class="normal">386</span>
1431-
<span class="normal">387</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">magnet</span><span class="p">(</span><span class="n">metafile</span><span class="p">:</span> <span class="n">Namespace</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
1431+
<span class="normal">387</span>
1432+
<span class="normal">388</span>
1433+
<span class="normal">389</span>
1434+
<span class="normal">390</span>
1435+
<span class="normal">391</span>
1436+
<span class="normal">392</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">magnet</span><span class="p">(</span><span class="n">metafile</span><span class="p">:</span> <span class="n">Namespace</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
14321437
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
14331438
<span class="sd"> Create a magnet URI from a Bittorrent meta file.</span>
14341439

@@ -1449,8 +1454,13 @@ <h3 id="torrentfile.commands.magnet" class="doc doc-heading">
14491454

14501455
<span class="n">meta</span> <span class="o">=</span> <span class="n">pyben</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">metafile</span><span class="p">)</span>
14511456
<span class="n">data</span> <span class="o">=</span> <span class="n">meta</span><span class="p">[</span><span class="s2">&quot;info&quot;</span><span class="p">]</span>
1452-
<span class="n">binfo</span> <span class="o">=</span> <span class="n">pyben</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
1453-
<span class="n">infohash</span> <span class="o">=</span> <span class="n">sha1</span><span class="p">(</span><span class="n">binfo</span><span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="c1"># nosec</span>
1457+
<span class="k">if</span> <span class="s2">&quot;meta version&quot;</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
1458+
<span class="n">hashing_func</span> <span class="o">=</span> <span class="n">sha256</span>
1459+
<span class="k">else</span><span class="p">:</span>
1460+
<span class="n">hashing_func</span> <span class="o">=</span> <span class="n">sha1</span> <span class="c1"># nosec</span>
1461+
1462+
<span class="n">bencoded</span> <span class="o">=</span> <span class="n">pyben</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
1463+
<span class="n">infohash</span> <span class="o">=</span> <span class="n">hashing_func</span><span class="p">(</span><span class="n">bencoded</span><span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="c1"># nosec</span>
14541464

14551465
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Magnet Info Hash: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">infohash</span><span class="p">)</span>
14561466
<span class="n">scheme</span> <span class="o">=</span> <span class="s2">&quot;magnet:&quot;</span>
@@ -1683,12 +1693,7 @@ <h3 id="torrentfile.commands.rebuild" class="doc doc-heading">
16831693

16841694
<details class="quote">
16851695
<summary>Source code in <code>torrentfile\commands.py</code></summary>
1686-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">390</span>
1687-
<span class="normal">391</span>
1688-
<span class="normal">392</span>
1689-
<span class="normal">393</span>
1690-
<span class="normal">394</span>
1691-
<span class="normal">395</span>
1696+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">395</span>
16921697
<span class="normal">396</span>
16931698
<span class="normal">397</span>
16941699
<span class="normal">398</span>
@@ -1711,7 +1716,12 @@ <h3 id="torrentfile.commands.rebuild" class="doc doc-heading">
17111716
<span class="normal">415</span>
17121717
<span class="normal">416</span>
17131718
<span class="normal">417</span>
1714-
<span class="normal">418</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">rebuild</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">Namespace</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
1719+
<span class="normal">418</span>
1720+
<span class="normal">419</span>
1721+
<span class="normal">420</span>
1722+
<span class="normal">421</span>
1723+
<span class="normal">422</span>
1724+
<span class="normal">423</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">rebuild</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="n">Namespace</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
17151725
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
17161726
<span class="sd"> Attempt to rebuild a torrent based on the a torrent file.</span>
17171727

docs/Source/hasher/index.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -862,7 +862,7 @@ <h3 id="torrentfile.hasher.FileHasher" class="doc doc-heading">
862862
<span class="bp">self</span><span class="o">.</span><span class="n">hybrid</span> <span class="o">=</span> <span class="n">hybrid</span>
863863
<span class="k">if</span> <span class="n">progress</span><span class="p">:</span>
864864
<span class="bp">self</span><span class="o">.</span><span class="n">progressbar</span> <span class="o">=</span> <span class="kc">True</span>
865-
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s2">&quot;bytes&quot;</span><span class="p">)</span>
865+
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">)</span>
866866
</code></pre></div></td></tr></table></div>
867867
</details>
868868

@@ -1156,7 +1156,7 @@ <h3 id="torrentfile.hasher.Hasher" class="doc doc-heading">
11561156
<span class="bp">self</span><span class="o">.</span><span class="n">current</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">paths</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">&quot;rb&quot;</span><span class="p">)</span>
11571157
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">progress</span><span class="p">:</span>
11581158
<span class="n">total</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">paths</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
1159-
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">total</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">paths</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">unit</span><span class="o">=</span><span class="s2">&quot;bytes&quot;</span><span class="p">)</span>
1159+
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">total</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">paths</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
11601160
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Hashing </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">paths</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
11611161
</code></pre></div></td></tr></table></div>
11621162
</details>
@@ -1399,7 +1399,7 @@ <h4 id="torrentfile.hasher.Hasher.next_file" class="doc doc-heading">
13991399
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Hashing </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
14001400
<span class="bp">self</span><span class="o">.</span><span class="n">current</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
14011401
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">progress</span><span class="p">:</span>
1402-
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s2">&quot;bytes&quot;</span><span class="p">)</span>
1402+
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">)</span>
14031403
<span class="bp">self</span><span class="o">.</span><span class="n">current</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span><span class="p">)</span>
14041404
<span class="k">return</span> <span class="kc">True</span>
14051405
<span class="k">return</span> <span class="kc">False</span>
@@ -1528,7 +1528,7 @@ <h3 id="torrentfile.hasher.HasherHybrid" class="doc doc-heading">
15281528
<span class="bp">self</span><span class="o">.</span><span class="n">padding_piece</span> <span class="o">=</span> <span class="kc">None</span>
15291529
<span class="bp">self</span><span class="o">.</span><span class="n">padding_file</span> <span class="o">=</span> <span class="kc">None</span>
15301530
<span class="k">if</span> <span class="n">progress</span><span class="p">:</span>
1531-
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s2">&quot;bytes&quot;</span><span class="p">)</span>
1531+
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">)</span>
15321532
<span class="bp">self</span><span class="o">.</span><span class="n">amount</span> <span class="o">=</span> <span class="n">piece_length</span> <span class="o">//</span> <span class="n">BLOCK_SIZE</span>
15331533
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">data</span><span class="p">:</span>
15341534
<span class="bp">self</span><span class="o">.</span><span class="n">process_file</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
@@ -1795,7 +1795,7 @@ <h3 id="torrentfile.hasher.HasherV2" class="doc doc-heading">
17951795
<span class="bp">self</span><span class="o">.</span><span class="n">piece_length</span> <span class="o">=</span> <span class="n">piece_length</span>
17961796
<span class="bp">self</span><span class="o">.</span><span class="n">num_blocks</span> <span class="o">=</span> <span class="n">piece_length</span> <span class="o">//</span> <span class="n">BLOCK_SIZE</span>
17971797
<span class="k">if</span> <span class="n">progress</span><span class="p">:</span>
1798-
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s2">&quot;bytes&quot;</span><span class="p">)</span>
1798+
<span class="bp">self</span><span class="o">.</span><span class="n">prog_start</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">path</span><span class="p">)</span>
17991799
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fd</span><span class="p">:</span>
18001800
<span class="bp">self</span><span class="o">.</span><span class="n">process_file</span><span class="p">(</span><span class="n">fd</span><span class="p">)</span>
18011801
</code></pre></div></td></tr></table></div>

0 commit comments

Comments
 (0)