From 8862480570367359ae50759d60bc9b4486868600 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sat, 23 Jul 2011 00:36:13 +0200 Subject: Preliminary support for torrent (btw, I still hate hachoir) --- lib/misc.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) (limited to 'lib/misc.py') diff --git a/lib/misc.py b/lib/misc.py index a0e4a5b..de38129 100644 --- a/lib/misc.py +++ b/lib/misc.py @@ -1,12 +1,63 @@ -import parser -import pdfrw import os import mimetypes -import mat import subprocess import tempfile import glob +import hachoir_core + +import pdfrw +import mat +import parser + +class TorrentStripper(parser.Generic_parser): + ''' + A torrent file looks like: + -root + -start + -announce + -announce-list + -comment + -created_by + -creation_date + -encoding + -info + -end + ''' + def remove_all(self): + for field in self.editor['root']: + if self._should_remove(field): + #FIXME : hachoir does not support torrent metadata editing :< + del self.editor['/root/' + field.name] + hachoir_core.field.writeIntoFile(self.editor, + self.filename + parser.POSTFIX) + if self.backup is False: + mat.secure_remove(self.filename) #remove the old file + os.rename(self.filename + parser.POSTFIX, self.filename) + + def is_clean(self): + for field in self.editor['root']: + if self._should_remove(field): + return False + return True + + def get_meta(self): + metadata = {} + for field in self.editor['root']: + if self._should_remove(field): + try:#FIXME + metadata[field.name] = field.value + except: + metadata[field.name] = 'harmful content' + return metadata + + def _should_remove(self, field): + if field.name in ('comment', 'created_by', 'creation_date', 'info'): + return True + else: + return False + + class PdfStripper(parser.Generic_parser): ''' Represent a pdf file, with the help of pdfrw -- cgit v1.3