introduce option that allows limiting recording filename character set to legacy...
authorFraxinas <andreas.frisch@multimedia-labs.de>
Thu, 23 Apr 2009 11:21:12 +0000 (13:21 +0200)
committerFraxinas <andreas.frisch@multimedia-labs.de>
Thu, 23 Apr 2009 11:21:12 +0000 (13:21 +0200)
RecordTimer.py
data/setup.xml
lib/python/Components/RecordingConfig.py
lib/python/Tools/ASCIItranslit.py [new file with mode: 0644]
lib/python/Tools/Makefile.am

index 9f3b2ffbea0a555de2348ddfe74c7c2f4e48d806..d72197cd2a05b473e1f21f8e3793e05a0e04c24f 100644 (file)
@@ -1,6 +1,6 @@
 import time
 #from time import datetime
-from Tools import Directories, Notifications
+from Tools import Directories, Notifications, ASCIItranslit
 
 from Components.config import config
 import timer
@@ -141,6 +141,9 @@ class RecordTimerEntry(timer.TimerEntry, object):
                if self.name:
                        filename += " - " + self.name
 
+               if config.recording.ascii_filenames.value:
+                       filename = ASCIItranslit.legacyEncode(filename)
+
                if self.dirname and not Directories.fileExists(self.dirname, 'w'):
                        self.dirnameHadToFallback = True
                        self.Filename = Directories.getRecordingFilename(filename, None)
index 17301f23d3b28b630fba3d247c7bc2605af0499b..583850dafe2ef3de5ccd209924ebd9d955e28a9d 100644 (file)
@@ -68,6 +68,7 @@
                        <item level="2" text="Behavior of 'pause' when paused">config.seek.on_pause</item>
                        <item level="2" text="Behavior of 0 key in PiP-mode">config.usage.pip_zero_button</item>
                        <item level="2" text="Alternative services tuner priority">config.usage.alternatives_priority</item>
+                       <item level="2" text="Limited character set for recording filenames">config.recording.ascii_filenames</item>
                </setup>
                <setup key="harddisk" title="Harddisk setup" >
                        <item level="0" text="Harddisk standby after">config.usage.hdd_standby</item>
index 9a13bd62f071f3db3e2bea58827912de37979918..fe9284d9d4d738bf7c0cd9f91cea8fe83e0011cb 100644 (file)
@@ -7,3 +7,4 @@ def InitRecordingConfig():
        config.recording.margin_before = ConfigNumber(default=0)
        config.recording.margin_after = ConfigNumber(default=0)
        config.recording.debug = ConfigYesNo(default = False)
+       config.recording.ascii_filenames = ConfigYesNo(default = False)
diff --git a/lib/python/Tools/ASCIItranslit.py b/lib/python/Tools/ASCIItranslit.py
new file mode 100644 (file)
index 0000000..a24d34c
--- /dev/null
@@ -0,0 +1,271 @@
+# -*- coding:utf-8 -*-
+
+ASCIItranslit = { \
+0x0022: "''", \
+0x002A: "_", \
+0x002F: "_", \
+0x003A: "_", \
+0x003C: "_", \
+0x003D: "_", \
+0x003E: "_", \
+0x003F: "_", \
+0x005C: "_", \
+0x007C: "_", \
+0x007F: "", \
+0x00A0:        "_", \
+0x00A1:        "!", \
+0x00A2:        "c", \
+0x00A3:        "lb", \
+0x00A4:        "", \
+0x00A5:        "yen", \
+0x00A6:        "I", \
+0x00A7:        "SS", \
+0x00A8:        "'", \
+0x00A9:        "(c)", \
+0x00AA:        "a", \
+0x00AB:        "<<", \
+0x00AC:        "not", \
+0x00AD:        "-", \
+0x00AE:        "(R)", \
+0x00AF:        "", \
+0x00B0:        "^0", \
+0x00B1:        "+-", \
+0x00B2:        "^2", \
+0x00B3:        "^3", \
+0x00B4:        "'", \
+0x00B5:        "u", \
+0x00B6:        "P", \
+0x00B7:        ".", \
+0x00B8:        ",", \
+0x00B9:        "^1", \
+0x00BA:        "o", \
+0x00BB:        ">>", \
+0x00BC:        "1_4 ", \
+0x00BD:        "1_2 ", \
+0x00BE:        "3_4 ", \
+0x00BF:        "_", \
+0x00C0:        "`A", \
+0x00C1:        "'A", \
+0x00C2:        "^A", \
+0x00C3:        "~A", \
+0x00C4:        "Ae", \
+0x00C5:        "A", \
+0x00C6:        "AE", \
+0x00C7:        "C", \
+0x00C8:        "`E", \
+0x00C9:        "'E", \
+0x00CA:        "^E", \
+0x00CB:        "E", \
+0x00CC:        "`I", \
+0x00CD:        "'I", \
+0x00CE:        "^I", \
+0x00CF:        "I", \
+0x00D0:        "D", \
+0x00D1:        "~N", \
+0x00D2:        "`O", \
+0x00D3:        "'O", \
+0x00D4:        "^O", \
+0x00D5:        "~O", \
+0x00D6:        "Oe", \
+0x00D7:        "x", \
+0x00D8:        "O", \
+0x00D9:        "`U", \
+0x00DA:        "'U", \
+0x00DB:        "^U", \
+0x00DC:        "Ue", \
+0x00DD:        "'Y", \
+0x00DE:        "Th", \
+0x00DF:        "ss", \
+0x00E0:        "`a", \
+0x00E1:        "'a", \
+0x00E2:        "^a", \
+0x00E3:        "~a", \
+0x00E4:        "AE", \
+0x00E5:        "a", \
+0x00E6:        "ae", \
+0x00E7:        "c", \
+0x00E8:        "`e", \
+0x00E9:        "'e", \
+0x00EA:        "^e", \
+0x00EB:        "e", \
+0x00EC:        "`i", \
+0x00ED:        "'i", \
+0x00EE:        "^i", \
+0x00EF:        "i", \
+0x00F0:        "d", \
+0x00F1:        "~n", \
+0x00F2:        "`o", \
+0x00F3:        "'o", \
+0x00F4:        "^o", \
+0x00F5:        "~o", \
+0x00F6:        "oe", \
+0x00F7:        "_", \
+0x00F8:        "o", \
+0x00F9:        "`u", \
+0x00FA:        "'u", \
+0x00FB:        "^u", \
+0x00FC:        "ue", \
+0x00FD:        "'y", \
+0x00FE:        "th", \
+0x00FF:        "Y", \
+0x0100:        "A", \
+0x0101:        "a", \
+0x0102:        "A", \
+0x0103:        "a", \
+0x0104:        "A", \
+0x0105:        "a", \
+0x0106:        "'C", \
+0x0107:        "'c", \
+0x0108:        "^C", \
+0x0109:        "^c", \
+0x010A:        "C", \
+0x010B:        "c", \
+0x010C:        "C", \
+0x010D:        "c", \
+0x010E:        "D", \
+0x010F:        "d", \
+0x0110:        "D", \
+0x0111:        "d", \
+0x0112:        "E", \
+0x0113:        "e", \
+0x0114:        "E", \
+0x0115:        "e", \
+0x0116:        "E", \
+0x0117:        "e", \
+0x0118:        "E", \
+0x0119:        "e", \
+0x011A:        "E", \
+0x011B:        "e", \
+0x011C:        "^G", \
+0x011D:        "^g", \
+0x011E:        "G", \
+0x011F:        "g", \
+0x0120:        "G", \
+0x0121:        "g", \
+0x0122:        "G", \
+0x0123:        "g", \
+0x0124:        "^H", \
+0x0125:        "^h", \
+0x0126:        "H", \
+0x0127:        "h", \
+0x0128:        "~I", \
+0x0129:        "~i", \
+0x012A:        "I", \
+0x012B:        "i", \
+0x012C:        "I", \
+0x012D:        "i", \
+0x012E:        "I", \
+0x012F:        "i", \
+0x0130:        "I", \
+0x0131:        "i", \
+0x0132:        "IJ", \
+0x0133:        "ij", \
+0x0134:        "^J", \
+0x0135:        "^j", \
+0x0136:        "K", \
+0x0137:        "k", \
+0x0138:        "", \
+0x0139:        "L", \
+0x013A:        "l", \
+0x013B:        "L", \
+0x013C:        "l", \
+0x013D:        "L", \
+0x013E:        "l", \
+0x013F:        "L", \
+0x0140:        "l", \
+0x0141:        "L", \
+0x0142:        "l", \
+0x0143:        "'N", \
+0x0144:        "'n", \
+0x0145:        "N", \
+0x0146:        "n", \
+0x0147:        "N", \
+0x0148:        "n", \
+0x0149:        "n", \
+0x014A:        "_", \
+0x014B:        "_", \
+0x014C:        "O", \
+0x014D:        "o", \
+0x014E:        "O", \
+0x014F:        "o", \
+0x0150:        "''o", \
+0x0152:        "OE", \
+0x0153:        "oe", \
+0x0154:        "'R", \
+0x0155:        "'r", \
+0x0156:        "R", \
+0x0157:        "r", \
+0x0158:        "R", \
+0x0159:        "r", \
+0x015A:        "'s", \
+0x015B:        "'s", \
+0x015C:        "^S", \
+0x015D:        "^s", \
+0x015E:        "S", \
+0x015F:        "s", \
+0x0160:        "S", \
+0x0161:        "s", \
+0x0162:        "T", \
+0x0163:        "t", \
+0x0164:        "T", \
+0x0165:        "t", \
+0x0166:        "T", \
+0x0167:        "t", \
+0x0168:        "~U", \
+0x0169:        "~u", \
+0x016A:        "U", \
+0x016B:        "u", \
+0x016C:        "U", \
+0x016D:        "u", \
+0x016E:        "U", \
+0x016F:        "u", \
+0x0170:        "''u", \
+0x0172:        "U", \
+0x0173:        "u", \
+0x0174:        "^W", \
+0x0175:        "^w", \
+0x0176:        "^Y", \
+0x0177:        "^y", \
+0x0178:        "Y", \
+0x0179:        "'Z", \
+0x017A:        "'z", \
+0x017B:        "Z", \
+0x017C:        "z", \
+0x017D:        "Z", \
+0x017E:        "z", \
+0x017F:        "s", \
+0x018F:        "_", \
+0x0192:        "f", \
+0x01C4:        "DZ", \
+0x01C5:        "DZ", \
+0x01C6:        "DZ", \
+0x01C7:        "LJ", \
+0x01C8:        "Lj", \
+0x01C9:        "lj", \
+0x01CA:        "NJ", \
+0x01CB:        "Nj", \
+0x01CC:        "nj", \
+0x01F1:        "DZ", \
+0x01F2:        "Dz", \
+0x01F3:        "dz", \
+0x0218:        "S", \
+0x0219:        "s", \
+0x021A:        "T", \
+0x021B:        "t", \
+0x0259:        "_", \
+0x20AC:        "EUR" }
+
+def legacyEncode(string):
+       string2 = ""
+       for z, char in enumerate(string.decode("utf-8")):
+               i = ord(char)
+               if i < 33:
+                       string2 += "_"
+               elif i in ASCIItranslit:
+                       string2 += ASCIItranslit[i]
+               else:
+                       try:
+                               string2 += char.encode('ascii', 'strict')
+                       except:
+                               string2 += "_"
+       return string2.upper()
index 5617cb663032bb0d98367aa50fbcf747c9d5d8a8..fd23bd121c6cd6f20c84d2980b3b0b3148700ca4 100644 (file)
@@ -4,4 +4,4 @@ install_PYTHON = \
        FuzzyDate.py XMLTools.py Directories.py NumericalTextInput.py \
        KeyBindings.py BoundFunction.py ISO639.py Notifications.py __init__.py \
        RedirectOutput.py DreamboxHardware.py Import.py Event.py CList.py \
-       LoadPixmap.py Profile.py HardwareInfo.py Transponder.py
+       LoadPixmap.py Profile.py HardwareInfo.py Transponder.py ASCIItranslit.py