--- /dev/null
+#!/usr/bin/env python
+# vim: set ts=4 sts=4 sw=4 textwidth=92 :
+
+import os, sys, unittest
+from rarslave import *
+
+class rarslavetest (unittest.TestCase):
+ def setUp (self):
+ pass
+
+ def tearDown (self):
+ pass
+
+ def testGetBasenameNone (self):
+ QNAME = '[something] some names.txt'
+ ANAME = '[something] some names.txt'
+
+ # Tests for an exension that should not be stripped
+ self.assertEquals (ANAME, get_basename (QNAME))
+
+ def testGetBasenameSingle (self):
+ QNAME = '[something] some names.par2'
+ ANAME = '[something] some names'
+
+ self.assertEquals (ANAME, get_basename (QNAME))
+
+ def testGetBasenameMulti (self):
+ QNAME = '[a.f.k.] The Melancholy of Haruhi Suzumiya - 13.avi.001'
+ ANAME = '[a.f.k.] The Melancholy of Haruhi Suzumiya - 13'
+
+ self.assertEquals (ANAME, get_basename (QNAME))
+
+ def testGetBasenameMulti2 (self):
+ QNAME = '[AonE-AnY]_Ah_My_Goddess_-_Sorezore_no_Tsubasa_-_13_[WS][E6380C3F].avi.vol00+01.PAR2'
+ ANAME = '[AonE-AnY]_Ah_My_Goddess_-_Sorezore_no_Tsubasa_-_13_[WS][E6380C3F]'
+
+ self.assertEquals (ANAME, get_basename (QNAME))
+
+ def testFindLikelyFilesBadDir (self):
+ DIR = '/fake/dir'
+
+ self.assertRaises (ValueError, find_likely_files, "fake", DIR)
+
+ def testFindAllPar2Files (self):
+ DIR = '/fake/dir'
+
+ self.assertRaises (ValueError, find_all_par2_files, DIR)
+
+
+if __name__ == '__main__':
+ unittest.main ()
+
--- /dev/null
+#!/usr/bin/env python
+# vim: set ts=4 sts=4 sw=4 textwidth=112 :
+
+import re, os, sys
+
+def get_basename (name):
+ """Strips most kinds of endings from a filename"""
+
+ regex = '^(.+)\.(par2|vol\d+\+\d+|\d\d\d|part\d+|rar|zip|avi|mp4|mkv|ogm)$'
+ r = re.compile (regex, re.IGNORECASE)
+ done = False
+
+ while not done:
+ done = True
+
+ if r.match (name):
+ g = r.match (name).groups()
+ name = g[0]
+ done = False
+
+ return name
+
+def find_likely_files (name, dir):
+ """Finds files which are likely to be part of the set corresponding
+ to $name in the directory $dir"""
+
+ if not os.path.isdir (os.path.abspath (dir)):
+ raise ValueError # bad directory given
+
+ dir = os.path.abspath (dir)
+ ename = re.escape (name)
+ regex = re.compile ('^%s.*$' % (ename, ))
+
+ return [f for f in os.listdir (dir) if regex.match (f)]
+
+def find_all_par2_files (dir):
+ """Finds all par2 files in a directory"""
+
+ if not os.path.isdir (os.path.abspath (dir)):
+ raise ValueError # bad directory given
+
+ dir = os.path.abspath (dir)
+ regex = re.compile ('^.*\.par2$', re.IGNORECASE)
+
+ # Find all files
+ return [f for f in os.listdir (dir) if regex.match (f)]
+
+
+
+def main ():
+ print find_all_par2_files ('/home/irasnyd/downloads/test_material/01/')
+
+if __name__ == '__main__':
+ main ()