summaryrefslogtreecommitdiff
path: root/libmat2/torrent.py
diff options
context:
space:
mode:
Diffstat (limited to 'libmat2/torrent.py')
-rw-r--r--libmat2/torrent.py40
1 files changed, 20 insertions, 20 deletions
diff --git a/libmat2/torrent.py b/libmat2/torrent.py
index 0f122b0..ca7715a 100644
--- a/libmat2/torrent.py
+++ b/libmat2/torrent.py
@@ -17,17 +17,17 @@ class TorrentParser(abstract.AbstractParser):
17 17
18 def get_meta(self) -> Dict[str, str]: 18 def get_meta(self) -> Dict[str, str]:
19 metadata = {} 19 metadata = {}
20 for k, v in self.dict_repr.items(): 20 for key, value in self.dict_repr.items():
21 if k not in self.whitelist: 21 if key not in self.whitelist:
22 metadata[k.decode('utf-8')] = v 22 metadata[key.decode('utf-8')] = value
23 return metadata 23 return metadata
24 24
25 25
26 def remove_all(self) -> bool: 26 def remove_all(self) -> bool:
27 cleaned = dict() 27 cleaned = dict()
28 for k, v in self.dict_repr.items(): 28 for key, value in self.dict_repr.items():
29 if k in self.whitelist: 29 if key in self.whitelist:
30 cleaned[k] = v 30 cleaned[key] = value
31 with open(self.output_filename, 'wb') as f: 31 with open(self.output_filename, 'wb') as f:
32 f.write(_BencodeHandler().bencode(cleaned)) 32 f.write(_BencodeHandler().bencode(cleaned))
33 self.dict_repr = cleaned # since we're stateful 33 self.dict_repr = cleaned # since we're stateful
@@ -78,20 +78,20 @@ class _BencodeHandler(object):
78 return s[colon:colon+str_len], s[colon+str_len:] 78 return s[colon:colon+str_len], s[colon+str_len:]
79 79
80 def __decode_list(self, s: bytes) -> Tuple[list, bytes]: 80 def __decode_list(self, s: bytes) -> Tuple[list, bytes]:
81 r = list() 81 ret = list()
82 s = s[1:] # skip leading `l` 82 s = s[1:] # skip leading `l`
83 while s[0] != ord('e'): 83 while s[0] != ord('e'):
84 v, s = self.__decode_func[s[0]](s) 84 value, s = self.__decode_func[s[0]](s)
85 r.append(v) 85 ret.append(value)
86 return r, s[1:] 86 return ret, s[1:]
87 87
88 def __decode_dict(self, s: bytes) -> Tuple[dict, bytes]: 88 def __decode_dict(self, s: bytes) -> Tuple[dict, bytes]:
89 r = dict() 89 ret = dict()
90 s = s[1:] # skip leading `d` 90 s = s[1:] # skip leading `d`
91 while s[0] != ord(b'e'): 91 while s[0] != ord(b'e'):
92 k, s = self.__decode_string(s) 92 key, s = self.__decode_string(s)
93 r[k], s = self.__decode_func[s[0]](s) 93 ret[key], s = self.__decode_func[s[0]](s)
94 return r, s[1:] 94 return ret, s[1:]
95 95
96 @staticmethod 96 @staticmethod
97 def __encode_int(x: bytes) -> bytes: 97 def __encode_int(x: bytes) -> bytes:
@@ -109,9 +109,9 @@ class _BencodeHandler(object):
109 109
110 def __encode_dict(self, x: dict) -> bytes: 110 def __encode_dict(self, x: dict) -> bytes:
111 ret = b'' 111 ret = b''
112 for k, v in sorted(x.items()): 112 for key, value in sorted(x.items()):
113 ret += self.__encode_func[type(k)](k) 113 ret += self.__encode_func[type(key)](key)
114 ret += self.__encode_func[type(v)](v) 114 ret += self.__encode_func[type(value)](value)
115 return b'd' + ret + b'e' 115 return b'd' + ret + b'e'
116 116
117 def bencode(self, s: Union[dict, list, bytes, int]) -> bytes: 117 def bencode(self, s: Union[dict, list, bytes, int]) -> bytes:
@@ -119,11 +119,11 @@ class _BencodeHandler(object):
119 119
120 def bdecode(self, s: bytes) -> Union[dict, None]: 120 def bdecode(self, s: bytes) -> Union[dict, None]:
121 try: 121 try:
122 r, l = self.__decode_func[s[0]](s) 122 ret, trail = self.__decode_func[s[0]](s)
123 except (IndexError, KeyError, ValueError) as e: 123 except (IndexError, KeyError, ValueError) as e:
124 logging.debug("Not a valid bencoded string: %s", e) 124 logging.debug("Not a valid bencoded string: %s", e)
125 return None 125 return None
126 if l != b'': 126 if trail != b'':
127 logging.debug("Invalid bencoded value (data after valid prefix)") 127 logging.debug("Invalid bencoded value (data after valid prefix)")
128 return None 128 return None
129 return r 129 return ret