diff --git a/pyfpdb/IdentifySite.py b/pyfpdb/IdentifySite.py
old mode 100644
new mode 100755
index b4f1a8a7..26a3e1e2
--- a/pyfpdb/IdentifySite.py
+++ b/pyfpdb/IdentifySite.py
@@ -1,122 +1,122 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-#Copyright 2010 Chaz Littlejohn
-#This program is free software: you can redistribute it and/or modify
-#it under the terms of the GNU Affero General Public License as published by
-#the Free Software Foundation, version 3 of the License.
-#
-#This program is distributed in the hope that it will be useful,
-#but WITHOUT ANY WARRANTY; without even the implied warranty of
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#GNU General Public License for more details.
-#
-#You should have received a copy of the GNU Affero General Public License
-#along with this program. If not, see .
-#In the "official" distribution you can find the license in agpl-3.0.txt.
-
-import L10n
-_ = L10n.get_translation()
-
-import re
-import sys
-import os
-import os.path
-from optparse import OptionParser
-import codecs
-import Configuration
-import Database
-
-__ARCHIVE_PRE_HEADER_REGEX='^Hand #(\d+)\s*$|\*{20}\s#\s\d+\s\*+\s+'
-re_SplitArchive = re.compile(__ARCHIVE_PRE_HEADER_REGEX)
-
-
-class IdentifySite:
- def __init__(self, config, in_path = '-'):
- self.in_path = in_path
- self.config = config
- self.db = Database.Database(config)
- self.sitelist = {}
- self.filelist = {}
- self.generateSiteList()
- self.walkDirectory(self.in_path, self.sitelist)
-
- def generateSiteList(self):
- """Generates a ordered dictionary of site, filter and filter name for each site in hhcs"""
- for site, hhc in self.config.hhcs.iteritems():
- filter = hhc.converter
- filter_name = filter.replace("ToFpdb", "")
- result = self.db.get_site_id(site)
- if len(result) == 1:
- self.sitelist[result[0][0]] = (site, filter, filter_name)
- else:
- pass
-
- def walkDirectory(self, dir, sitelist):
- """Walks a directory, and executes a callback on each file"""
- dir = os.path.abspath(dir)
- for file in [file for file in os.listdir(dir) if not file in [".",".."]]:
- nfile = os.path.join(dir,file)
- if os.path.isdir(nfile):
- self.walkDirectory(nfile, sitelist)
- else:
- self.idSite(nfile, sitelist)
-
- def __listof(self, x):
- if isinstance(x, list) or isinstance(x, tuple):
- return x
- else:
- return [x]
-
- def idSite(self, file, sitelist):
- """Identifies the site the hh file originated from"""
- if file.endswith('.txt'):
- self.filelist[file] = ''
- archive = False
- for site, info in sitelist.iteritems():
- mod = __import__(info[1])
- obj = getattr(mod, info[2], None)
-
- for kodec in self.__listof(obj.codepage):
- try:
- in_fh = codecs.open(file, 'r', kodec)
- whole_file = in_fh.read()
- in_fh.close()
-
- if info[2] in ('OnGame', 'Winamax'):
- m = obj.re_HandInfo.search(whole_file)
- elif info[2] in ('PartyPoker'):
- m = obj.re_GameInfoRing.search(whole_file)
- if not m:
- m = obj.re_GameInfoTrny.search(whole_file)
- else:
- m = obj.re_GameInfo.search(whole_file)
- if re_SplitArchive.search(whole_file):
- archive = True
- if m:
- self.filelist[file] = [info[0]] + [info[1]] + [kodec] + [archive]
- break
- except:
- pass
-
-def main(argv=None):
- if argv is None:
- argv = sys.argv[1:]
-
- config = Configuration.Config(file = "HUD_config.test.xml")
- in_path = 'regression-test-files/'
- IdSite = IdentifySite(config, in_path)
-
- print "\n----------- SITE LIST -----------"
- for site, info in IdSite.sitelist.iteritems():
- print site, info
- print "----------- END SITE LIST -----------"
-
- print "\n----------- ID REGRESSION FILES -----------"
- for file, site in IdSite.filelist.iteritems():
- print file, site
- print "----------- END ID REGRESSION FILES -----------"
-
-
-if __name__ == '__main__':
- sys.exit(main())
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+#Copyright 2010 Chaz Littlejohn
+#This program is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, version 3 of the License.
+#
+#This program is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with this program. If not, see .
+#In the "official" distribution you can find the license in agpl-3.0.txt.
+
+import L10n
+_ = L10n.get_translation()
+
+import re
+import sys
+import os
+import os.path
+from optparse import OptionParser
+import codecs
+import Configuration
+import Database
+
+__ARCHIVE_PRE_HEADER_REGEX='^Hand #(\d+)\s*$|\*{20}\s#\s\d+\s\*+\s+'
+re_SplitArchive = re.compile(__ARCHIVE_PRE_HEADER_REGEX)
+
+
+class IdentifySite:
+ def __init__(self, config, in_path = '-'):
+ self.in_path = in_path
+ self.config = config
+ self.db = Database.Database(config)
+ self.sitelist = {}
+ self.filelist = {}
+ self.generateSiteList()
+ self.walkDirectory(self.in_path, self.sitelist)
+
+ def generateSiteList(self):
+ """Generates a ordered dictionary of site, filter and filter name for each site in hhcs"""
+ for site, hhc in self.config.hhcs.iteritems():
+ filter = hhc.converter
+ filter_name = filter.replace("ToFpdb", "")
+ result = self.db.get_site_id(site)
+ if len(result) == 1:
+ self.sitelist[result[0][0]] = (site, filter, filter_name)
+ else:
+ pass
+
+ def walkDirectory(self, dir, sitelist):
+ """Walks a directory, and executes a callback on each file"""
+ dir = os.path.abspath(dir)
+ for file in [file for file in os.listdir(dir) if not file in [".",".."]]:
+ nfile = os.path.join(dir,file)
+ if os.path.isdir(nfile):
+ self.walkDirectory(nfile, sitelist)
+ else:
+ self.idSite(nfile, sitelist)
+
+ def __listof(self, x):
+ if isinstance(x, list) or isinstance(x, tuple):
+ return x
+ else:
+ return [x]
+
+ def idSite(self, file, sitelist):
+ """Identifies the site the hh file originated from"""
+ if file.endswith('.txt'):
+ self.filelist[file] = ''
+ archive = False
+ for site, info in sitelist.iteritems():
+ mod = __import__(info[1])
+ obj = getattr(mod, info[2], None)
+
+ for kodec in self.__listof(obj.codepage):
+ try:
+ in_fh = codecs.open(file, 'r', kodec)
+ whole_file = in_fh.read()
+ in_fh.close()
+
+ if info[2] in ('OnGame', 'Winamax'):
+ m = obj.re_HandInfo.search(whole_file)
+ elif info[2] in ('PartyPoker'):
+ m = obj.re_GameInfoRing.search(whole_file)
+ if not m:
+ m = obj.re_GameInfoTrny.search(whole_file)
+ else:
+ m = obj.re_GameInfo.search(whole_file)
+ if re_SplitArchive.search(whole_file):
+ archive = True
+ if m:
+ self.filelist[file] = [info[0]] + [info[1]] + [kodec] + [archive]
+ break
+ except:
+ pass
+
+def main(argv=None):
+ if argv is None:
+ argv = sys.argv[1:]
+
+ config = Configuration.Config(file = "HUD_config.test.xml")
+ in_path = 'regression-test-files/'
+ IdSite = IdentifySite(config, in_path)
+
+ print "\n----------- SITE LIST -----------"
+ for site, info in IdSite.sitelist.iteritems():
+ print site, info
+ print "----------- END SITE LIST -----------"
+
+ print "\n----------- ID REGRESSION FILES -----------"
+ for file, site in IdSite.filelist.iteritems():
+ print file, site
+ print "----------- END ID REGRESSION FILES -----------"
+
+
+if __name__ == '__main__':
+ sys.exit(main())