Add python setup
This commit is contained in:
parent
604cdb854e
commit
5ef67d0d55
0
__init__.py
Normal file
0
__init__.py
Normal file
16
setup.py
Normal file
16
setup.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
|
setup(
|
||||||
|
name='torrename',
|
||||||
|
version='1.0.0',
|
||||||
|
description='File matcher and rename tool given a .torrent file',
|
||||||
|
author='Mario Romero',
|
||||||
|
author_email='mario@1159.cl',
|
||||||
|
url='https://git.1159.cl/Mario1159/torrename',
|
||||||
|
packages=find_packages(),
|
||||||
|
entry_points={
|
||||||
|
'console_scripts': [
|
||||||
|
'torrename = src.main:main',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
)
|
0
src/__init__.py
Normal file
0
src/__init__.py
Normal file
63
src/main.py
Normal file
63
src/main.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
import torf, argparse, glob, os, pathlib
|
||||||
|
|
||||||
|
def rename(src_path: pathlib.Path, new_name: str):
|
||||||
|
renamed_path = src_path.parent.joinpath(new_name)
|
||||||
|
os.rename(src_path.as_posix(), renamed_path.as_posix())
|
||||||
|
|
||||||
|
def rename_based_on_size(torrent_files: torf.File, files_downloaded: torf.File):
|
||||||
|
# Make list excluding files with the same size
|
||||||
|
unique_files_downloaded = []
|
||||||
|
for file_downloaded in files_downloaded:
|
||||||
|
duplicated = False
|
||||||
|
for file in unique_files_downloaded:
|
||||||
|
if file.size == file_downloaded.size:
|
||||||
|
unique_files_downloaded.remove(file)
|
||||||
|
duplicated = True
|
||||||
|
break
|
||||||
|
if not duplicated:
|
||||||
|
unique_files_downloaded.append(torf.File(file_downloaded, file_downloaded.size))
|
||||||
|
# Rename files with the same size
|
||||||
|
files_failed = []
|
||||||
|
for torrent_file in torrent_files:
|
||||||
|
success = False
|
||||||
|
for file_downloaded in unique_files_downloaded:
|
||||||
|
if torrent_file.size == os.path.getsize(file_downloaded):
|
||||||
|
rename(pathlib.Path(file_downloaded), torrent_file.name)
|
||||||
|
unique_files_downloaded.remove(file_downloaded)
|
||||||
|
success = True
|
||||||
|
break
|
||||||
|
if not success:
|
||||||
|
files_failed.append(torrent_file)
|
||||||
|
return files_failed
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
prog='torrename',
|
||||||
|
description='File matcher and rename tool given a .torrent file')
|
||||||
|
|
||||||
|
parser.add_argument('torrent', help='.torrent filepath')
|
||||||
|
parser.add_argument('files', help='list of files to be compared')
|
||||||
|
parser.add_argument('--hash-check', action='store_true', help='compare hashes of torrent after file match, this option can take a longer time')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
torrent = torf.Torrent.read(args.torrent)
|
||||||
|
|
||||||
|
files_downloaded = []
|
||||||
|
for path in glob.glob(args.files):
|
||||||
|
files_downloaded.append(torf.File(path, os.path.getsize(path)))
|
||||||
|
|
||||||
|
files_failed = rename_based_on_size(torrent.files, files_downloaded)
|
||||||
|
if not files_failed:
|
||||||
|
for file in files_downloaded:
|
||||||
|
filepath = pathlib.Path(file)
|
||||||
|
if (args.hash_check):
|
||||||
|
if torrent.verify(filepath.parent):
|
||||||
|
print(f'Hash verification of file {filepath.name} succeded')
|
||||||
|
else:
|
||||||
|
print(f'Hash verification of file {filepath.name} failed')
|
||||||
|
else:
|
||||||
|
print(f'The following files were not found: {files_failed}')
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user