Initial work on extraction.
authorIra W. Snyder <devel@irasnyder.com>
Sat, 16 Dec 2006 21:19:03 +0000 (13:19 -0800)
committerIra W. Snyder <devel@irasnyder.com>
Sat, 16 Dec 2006 21:19:03 +0000 (13:19 -0800)
rarslave-test.py
rarslave.py

index c57075a..64d04f6 100644 (file)
@@ -5,6 +5,19 @@ import os, sys, unittest
 from rarslave import *
 
 class rarslavetest (unittest.TestCase):
 from rarslave import *
 
 class rarslavetest (unittest.TestCase):
+
+       def assertListEquals (self, l1, l2):
+               if l1 is l2:
+                       return True
+
+               self.assertEquals (len(l1), len(l2))
+
+               for e in l1:
+                       if e not in l2:
+                               self.fail ("Element missing from list")
+
+               return True
+
        def setUp (self):
                pass
 
        def setUp (self):
                pass
 
@@ -62,6 +75,22 @@ class rarslavetest (unittest.TestCase):
                self.assertFalse (has_extension (FILE, '.part01'))
                self.assertFalse (has_extension (FILE, 'part01'))
 
                self.assertFalse (has_extension (FILE, '.part01'))
                self.assertFalse (has_extension (FILE, 'part01'))
 
+       def testIsNewRar (self):
+               DIR = '/home/irasnyd/downloads/test_material/01/'
+
+               self.assertTrue (is_newrar (os.listdir (DIR)))
+
+       def testDeletableFiles1 (self):
+               FILES = ['test.part%d.rar' % n for n in xrange(10)]
+
+               self.assertListEquals (find_deleteable_files (FILES), FILES)
+
+       def testDeletableFiles2 (self):
+               FILESN = ['%d.mp3' % n for n in xrange(20)]
+               FILESY = ['%d.zip' % n for n in xrange(5)]
+
+               self.assertListEquals (find_deleteable_files (FILESN + FILESY), FILESY)
+
 
 if __name__ == '__main__':
        unittest.main ()
 
 if __name__ == '__main__':
        unittest.main ()
index 6532de5..47fbb03 100644 (file)
@@ -113,6 +113,38 @@ def is_zip (files):
                if has_extension (f, '.zip'):
                        return True
 
                if has_extension (f, '.zip'):
                        return True
 
+def is_noextract (files):
+       # Type that needs no extraction.
+       # TODO: Add others ???
+       for f in files:
+               if has_extension (f, '.001'):
+                       return True
+
+def find_deleteable_files (files):
+       # Deleteable types regex should come from the config
+       dfiles = []
+       dregex = re.compile ('^.*\.(par2|\d|\d\d\d|rar|r\d\d|zip)$', re.IGNORECASE)
+
+       return [f for f in files if dregex.match (f)]
+
+def extract (heads, todir):
+       # Try to extract each head
+       # NOTE: REQUIRES full paths to heads
+
+       PWD = os.getcwd()
+
+       # FIXME: Should come from the config
+       RCMD = 'unrar x -o+ -- '
+       ZCMD = 'unzip -- '
+
+       for h in heads:
+               # find type
+               # extract it
+
+               # NOTE: probably not able to clean up effectively...
+               pass
+
+
 
 def main ():
        print find_all_par2_files ('/home/irasnyd/downloads/test_material/01/')
 
 def main ():
        print find_all_par2_files ('/home/irasnyd/downloads/test_material/01/')