Skip to content

Commit 38d2d3c

Browse files
authored
Merge pull request #174 from alexpdev/v0.8.11
v0.8.11
2 parents 19011c3 + 2421b0e commit 38d2d3c

File tree

70 files changed

+3751
-3327
lines changed

Some content is hidden

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

70 files changed

+3751
-3327
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ run.py
1515
venv/
1616
/tests/dest/
1717
/tests/dest2/
18+
*.zip
19+
*.spec
1820
# Byte-compiled / optimized / DLL files
1921
*.bin
2022
*.pyc

CHANGELOG.md

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

3+
## Version 0.8.11
4+
5+
- added new command line option for magnet subcommand
6+
- fixed some coverage gaps caused by 0.8.10
7+
- fixed bugs introduced by 0.8.10 with magnet URI creation
8+
- added support for hybrid magnet links
9+
- added tests for when a magnet link is generated with no trackers at all
10+
11+
---
12+
313
## Version 0.8.10
414

515
- added support for bittorrent v2 magnet links

Makefile

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,16 @@ endef
2222
export UPDATE_PACKAGE_VERSION
2323

2424
define RENAME_FILE
25-
import shutil
26-
import sys
27-
import subprocess
28-
import time
2925
from torrentfile.version import __version__
26+
import os
27+
import sys
3028
if sys.platform == "win32":
31-
time.sleep(2)
32-
subprocess.Popen(["7z", "a", "./dist/temp.zip", "./dist/torrentfile.exe"])
33-
time.sleep(2)
34-
shutil.copy(
35-
"./dist/temp.zip",
36-
"./dist/torrentfile-v" + __version__ + "-win.zip")
37-
else:
38-
time.sleep(2)
39-
subprocess.Popen(["zip", "./dist/temp.zip", "./dist/torrentfile"])
40-
time.sleep(2)
41-
shutil.copy(
42-
"./dist/temp.zip",
43-
"./dist/torrentfile-v" + __version__ + "-linux.zip")
29+
inexe = "./torrentfile-windows-exec.zip"
30+
exe = f"./dist/torrentfile-v{__version__}-win-exe.zip"
31+
indir = "./torrentfile-windows-dir.zip"
32+
dir = f"./dist/torrentfile-v{__version__}-win-dir.zip"
33+
os.rename(inexe, exe)
34+
os.rename(indir, dir)
4435
endef
4536
export RENAME_FILE
4637

@@ -73,6 +64,8 @@ clean-build: ## remove build artifacts
7364
rm -fvr -- *'/__pycache__'
7465
rm -frv runner/build
7566
rm -frv runner/dist
67+
rm -rfv *.zip
68+
rm -fv *.spec
7669

7770
test: ## Get coverage report
7871
tox
@@ -98,8 +91,11 @@ setup: clean test ## setup and build repo
9891
pip install -e .
9992
twine upload dist/*
10093

101-
release: clean test ## create executables for release
94+
compile: clean test ## compile application for distribution
10295
pip install pyinstaller
10396
pip install -e .
104-
pyinstaller ./runner/execf.spec
105-
@python -c "$$RENAME_FILE"
97+
pyinstaller -F --name torrentfile --icon ./assets/torrentfile-icon.ico ./bin/torrentfile
98+
pyinstaller --name torrentfile --icon ./assets/torrentfile-icon.ico ./bin/torrentfile
99+
7z a ./torrentfile-windows-exec.zip ./dist/torrentfile.exe
100+
7z a ./torrentfile-windows-dir.zip ./dist/torrentfile
101+
python -c "$$RENAME_FILE"

bin/torrentfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#! python
2+
# -*- coding: utf-8 -*-
3+
4+
import sys
5+
import torrentfile
6+
7+
if __name__ == "__main__":
8+
torrentfile.execute(sys.argv)

docs/Source/cli/index.html

Lines changed: 70 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,7 @@ <h4 id="torrentfile.cli.Config.activate_quiet" class="doc doc-heading">
861861

862862

863863
<h3 id="torrentfile.cli.TorrentFileHelpFormatter" class="doc doc-heading">
864-
<code class="highlight language-python"><span class="n">TorrentFileHelpFormatter</span><span class="p">(</span><span class="n">prog</span><span class="p">,</span> <span class="n">width</span> <span class="o">=</span> <span class="mi">45</span><span class="p">,</span> <span class="n">max_help_positions</span> <span class="o">=</span> <span class="mi">45</span><span class="p">)</span></code>
864+
<code class="highlight language-python"><span class="n">TorrentFileHelpFormatter</span><span class="p">(</span><span class="n">prog</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">width</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">45</span><span class="p">,</span> <span class="n">max_help_positions</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">45</span><span class="p">)</span></code>
865865

866866
<a href="#torrentfile.cli.TorrentFileHelpFormatter" class="headerlink" title="Permanent link">#</a></h3>
867867

@@ -949,7 +949,11 @@ <h3 id="torrentfile.cli.TorrentFileHelpFormatter" class="doc doc-heading">
949949
<span class="normal">111</span>
950950
<span class="normal">112</span>
951951
<span class="normal">113</span>
952-
<span class="normal">114</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prog</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">45</span><span class="p">,</span> <span class="n">max_help_positions</span><span class="o">=</span><span class="mi">45</span><span class="p">):</span>
952+
<span class="normal">114</span>
953+
<span class="normal">115</span>
954+
<span class="normal">116</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
955+
<span class="bp">self</span><span class="p">,</span> <span class="n">prog</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">width</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">45</span><span class="p">,</span> <span class="n">max_help_positions</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">45</span>
956+
<span class="p">):</span>
953957
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
954958
<span class="sd"> Construct HelpFormat class for usage output.</span>
955959

@@ -1056,9 +1060,7 @@ <h3 id="torrentfile.cli.execute" class="doc doc-heading">
10561060

10571061
<details class="quote">
10581062
<summary>Source code in <code>torrentfile\cli.py</code></summary>
1059-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">195</span>
1060-
<span class="normal">196</span>
1061-
<span class="normal">197</span>
1063+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">197</span>
10621064
<span class="normal">198</span>
10631065
<span class="normal">199</span>
10641066
<span class="normal">200</span>
@@ -1506,7 +1508,29 @@ <h3 id="torrentfile.cli.execute" class="doc doc-heading">
15061508
<span class="normal">642</span>
15071509
<span class="normal">643</span>
15081510
<span class="normal">644</span>
1509-
<span class="normal">645</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="nb">list</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span>
1511+
<span class="normal">645</span>
1512+
<span class="normal">646</span>
1513+
<span class="normal">647</span>
1514+
<span class="normal">648</span>
1515+
<span class="normal">649</span>
1516+
<span class="normal">650</span>
1517+
<span class="normal">651</span>
1518+
<span class="normal">652</span>
1519+
<span class="normal">653</span>
1520+
<span class="normal">654</span>
1521+
<span class="normal">655</span>
1522+
<span class="normal">656</span>
1523+
<span class="normal">657</span>
1524+
<span class="normal">658</span>
1525+
<span class="normal">659</span>
1526+
<span class="normal">660</span>
1527+
<span class="normal">661</span>
1528+
<span class="normal">662</span>
1529+
<span class="normal">663</span>
1530+
<span class="normal">664</span>
1531+
<span class="normal">665</span>
1532+
<span class="normal">666</span>
1533+
<span class="normal">667</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="n">args</span><span class="p">:</span> <span class="nb">list</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span>
15101534
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
15111535
<span class="sd"> Execute program with provided list of arguments.</span>
15121536

@@ -1536,7 +1560,7 @@ <h3 id="torrentfile.cli.execute" class="doc doc-heading">
15361560
<span class="n">usage</span><span class="o">=</span><span class="s2">&quot;torrentfile &lt;options&gt;&quot;</span><span class="p">,</span>
15371561
<span class="n">description</span><span class="o">=</span><span class="p">(</span>
15381562
<span class="s2">&quot;Command line tools for creating, editing, checking, building &quot;</span>
1539-
<span class="s2">&quot;and interacting with Bittorrent metainfo files&quot;</span>
1563+
<span class="s2">&quot;and interacting with Bittorrent meta files&quot;</span>
15401564
<span class="p">),</span>
15411565
<span class="n">prefix_chars</span><span class="o">=</span><span class="s2">&quot;-&quot;</span><span class="p">,</span>
15421566
<span class="n">formatter_class</span><span class="o">=</span><span class="n">TorrentFileHelpFormatter</span><span class="p">,</span>
@@ -1669,6 +1693,7 @@ <h3 id="torrentfile.cli.execute" class="doc doc-heading">
16691693
<span class="n">default</span><span class="o">=</span><span class="s2">&quot;1&quot;</span><span class="p">,</span>
16701694
<span class="n">action</span><span class="o">=</span><span class="s2">&quot;store&quot;</span><span class="p">,</span>
16711695
<span class="n">dest</span><span class="o">=</span><span class="s2">&quot;progress&quot;</span><span class="p">,</span>
1696+
<span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;&lt;int&gt;&quot;</span><span class="p">,</span>
16721697
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
16731698
<span class="s2"> Set the progress bar level.</span>
16741699
<span class="s2"> Options = 0, 1</span>
@@ -1838,7 +1863,24 @@ <h3 id="torrentfile.cli.execute" class="doc doc-heading">
18381863
<span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;&lt;*.torrent&gt;&quot;</span><span class="p">,</span>
18391864
<span class="p">)</span>
18401865

1841-
<span class="n">magnet_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">magnet</span><span class="p">)</span>
1866+
<span class="n">magnet_parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
1867+
<span class="s2">&quot;--meta-version&quot;</span><span class="p">,</span>
1868+
<span class="n">action</span><span class="o">=</span><span class="s2">&quot;store&quot;</span><span class="p">,</span>
1869+
<span class="n">choices</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;0&quot;</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span><span class="p">,</span> <span class="s2">&quot;2&quot;</span><span class="p">,</span> <span class="s2">&quot;3&quot;</span><span class="p">],</span>
1870+
<span class="n">default</span><span class="o">=</span><span class="s2">&quot;0&quot;</span><span class="p">,</span>
1871+
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
1872+
<span class="s2"> This option is only relevant for hybrid torrent files.</span>
1873+
<span class="s2"> Options = 0, 1, 2, 3</span>
1874+
<span class="s2"> (0) = [default] version is determined automatically</span>
1875+
<span class="s2"> (1) = create V1 magnet link only</span>
1876+
<span class="s2"> (2) = create V2 magnet link only</span>
1877+
<span class="s2"> (3) = create a hybrid magnet link</span>
1878+
<span class="s2"> &quot;&quot;&quot;</span><span class="p">,</span>
1879+
<span class="n">dest</span><span class="o">=</span><span class="s2">&quot;meta_version&quot;</span><span class="p">,</span>
1880+
<span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;&lt;int&gt;&quot;</span><span class="p">,</span>
1881+
<span class="p">)</span>
1882+
1883+
<span class="n">magnet_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">get_magnet</span><span class="p">)</span>
18421884

18431885
<span class="n">check_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
18441886
<span class="s2">&quot;recheck&quot;</span><span class="p">,</span>
@@ -1866,9 +1908,11 @@ <h3 id="torrentfile.cli.execute" class="doc doc-heading">
18661908

18671909
<span class="n">rebuild_parser</span> <span class="o">=</span> <span class="n">subparsers</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span>
18681910
<span class="s2">&quot;rebuild&quot;</span><span class="p">,</span>
1869-
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;Re-assemble files obtained from a bittorrent file into the</span>
1870-
<span class="s2"> appropriate file structure for re-seeding. Read documentation</span>
1871-
<span class="s2"> for more information, or use cases.&quot;&quot;&quot;</span><span class="p">,</span>
1911+
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
1912+
<span class="s2"> Re-assemble files obtained from a bittorrent file into the</span>
1913+
<span class="s2"> appropriate file structure for re-seeding. Read documentation</span>
1914+
<span class="s2"> for more information, or use cases.</span>
1915+
<span class="s2"> &quot;&quot;&quot;</span><span class="p">,</span>
18721916
<span class="n">formatter_class</span><span class="o">=</span><span class="n">TorrentFileHelpFormatter</span><span class="p">,</span>
18731917
<span class="p">)</span>
18741918

@@ -1922,23 +1966,23 @@ <h3 id="torrentfile.cli.execute" class="doc doc-heading">
19221966
<span class="n">rename_parser</span><span class="o">.</span><span class="n">set_defaults</span><span class="p">(</span><span class="n">func</span><span class="o">=</span><span class="n">rename</span><span class="p">)</span>
19231967

19241968
<span class="n">all_commands</span> <span class="o">=</span> <span class="p">[</span>
1925-
<span class="s2">&quot;create&quot;</span><span class="p">,</span>
1926-
<span class="s2">&quot;new&quot;</span><span class="p">,</span>
19271969
<span class="s2">&quot;c&quot;</span><span class="p">,</span>
1928-
<span class="s2">&quot;edit&quot;</span><span class="p">,</span>
19291970
<span class="s2">&quot;e&quot;</span><span class="p">,</span>
1930-
<span class="s2">&quot;info&quot;</span><span class="p">,</span>
19311971
<span class="s2">&quot;i&quot;</span><span class="p">,</span>
1932-
<span class="s2">&quot;magnet&quot;</span><span class="p">,</span>
19331972
<span class="s2">&quot;m&quot;</span><span class="p">,</span>
1934-
<span class="s2">&quot;recheck&quot;</span><span class="p">,</span>
1935-
<span class="s2">&quot;check&quot;</span><span class="p">,</span>
19361973
<span class="s2">&quot;r&quot;</span><span class="p">,</span>
1937-
<span class="s2">&quot;rename&quot;</span><span class="p">,</span>
1938-
<span class="s2">&quot;rebuild&quot;</span><span class="p">,</span>
19391974
<span class="s2">&quot;-i&quot;</span><span class="p">,</span>
19401975
<span class="s2">&quot;-h&quot;</span><span class="p">,</span>
19411976
<span class="s2">&quot;-V&quot;</span><span class="p">,</span>
1977+
<span class="s2">&quot;new&quot;</span><span class="p">,</span>
1978+
<span class="s2">&quot;edit&quot;</span><span class="p">,</span>
1979+
<span class="s2">&quot;info&quot;</span><span class="p">,</span>
1980+
<span class="s2">&quot;check&quot;</span><span class="p">,</span>
1981+
<span class="s2">&quot;create&quot;</span><span class="p">,</span>
1982+
<span class="s2">&quot;magnet&quot;</span><span class="p">,</span>
1983+
<span class="s2">&quot;rename&quot;</span><span class="p">,</span>
1984+
<span class="s2">&quot;rebuild&quot;</span><span class="p">,</span>
1985+
<span class="s2">&quot;recheck&quot;</span><span class="p">,</span>
19421986
<span class="p">]</span>
19431987
<span class="k">if</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">all_commands</span> <span class="k">if</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">args</span><span class="p">):</span>
19441988
<span class="n">start</span> <span class="o">=</span> <span class="mi">0</span>
@@ -1968,7 +2012,7 @@ <h3 id="torrentfile.cli.execute" class="doc doc-heading">
19682012

19692013

19702014
<h3 id="torrentfile.cli.main" class="doc doc-heading">
1971-
<code class="highlight language-python"><span class="n">main</span><span class="p">()</span></code>
2015+
<code class="highlight language-python"><span class="n">main</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="kc">None</span></code>
19722016

19732017
<a href="#torrentfile.cli.main" class="headerlink" title="Permanent link">#</a></h3>
19742018

@@ -1979,11 +2023,11 @@ <h3 id="torrentfile.cli.main" class="doc doc-heading">
19792023

19802024
<details class="quote">
19812025
<summary>Source code in <code>torrentfile\cli.py</code></summary>
1982-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">651</span>
1983-
<span class="normal">652</span>
1984-
<span class="normal">653</span>
1985-
<span class="normal">654</span>
1986-
<span class="normal">655</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
2026+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">673</span>
2027+
<span class="normal">674</span>
2028+
<span class="normal">675</span>
2029+
<span class="normal">676</span>
2030+
<span class="normal">677</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">main</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
19872031
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
19882032
<span class="sd"> Initiate main function for CLI script.</span>
19892033
<span class="sd"> &quot;&quot;&quot;</span>

0 commit comments

Comments
 (0)