forked from JDRIVO/rTorrent-Disk-Checker
-
Notifications
You must be signed in to change notification settings - Fork 1
/
remover.py
97 lines (72 loc) · 2.3 KB
/
remover.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, os, time
from remotecaller import xmlrpc
queue = sys.argv[1]
torrent_hash = sys.argv[2]
torrent_path = sys.argv[3]
subtractions = sys.argv[4]
files = xmlrpc('f.multicall', (torrent_hash, '', 'f.size_bytes=', 'f.frozen_path='))
t_hash = (torrent_hash,)
xmlrpc('d.tracker_announce', t_hash)
xmlrpc('d.erase', t_hash)
with open(queue, 'a+') as txt:
txt.write(torrent_hash + '\n')
time.sleep(0.001)
while True:
try:
with open(queue, 'r') as txt:
queued = txt.read().strip().splitlines()
except:
with open(queue, 'a+') as txt:
txt.write(torrent_hash + '\n')
try:
if queued[0] == torrent_hash:
break
if torrent_hash not in queued:
with open(queue, 'a') as txt:
txt.write(torrent_hash + '\n')
except:
pass
time.sleep(0.01)
try:
freed_bytes = int(open(subtractions, mode='r').read())
except:
open(subtractions, mode='w+').close()
freed_bytes = 0
if len(files) <= 1:
try:
freed_bytes += files[0][0]
with open(subtractions, 'r+') as txt:
txt.write(str(freed_bytes))
txt.truncate()
os.remove(files[0][1])
except:
pass
else:
for file in files:
freed_bytes += file[0]
with open(subtractions, 'r+') as txt:
txt.write(str(freed_bytes))
txt.truncate()
os.remove(file[1])
try:
os.rmdir(torrent_path)
except:
for root, directories, files in os.walk(torrent_path, topdown=False):
try:
os.rmdir(root)
except:
pass
txt = open(queue, mode='r+')
queued = txt.read().strip().splitlines()
txt.seek(0)
[txt.write(torrent + '\n') for torrent in queued if torrent != torrent_hash]
txt.truncate()
time.sleep(1)
try:
queued = open(queue).read()
if not queued:
os.remove(queue)
except:
pass