2 # -*- coding: koi8-r -*-
7 src_encoding = sys.argv[1]
8 dst_encoding = sys.argv[2]
10 if src_encoding == "translit":
11 if dst_encoding == "koi8-r":
12 from m_lib.rus.lat2rus import lat2koi as _recode
13 elif dst_encoding == "cp1251":
14 from m_lib.rus.lat2rus import lat2win as _recode
16 raise NotImplementedError, "destination encoding must be koi8-r or cp1251, not `%s'" % dst_encoding
18 elif dst_encoding == "translit":
19 if src_encoding == "koi8-r":
20 from m_lib.rus.rus2lat import koi2lat as _recode
21 elif src_encoding == "cp1251":
22 from m_lib.rus.rus2lat import win2lat as _recode
24 raise NotImplementedError, "source encoding must be koi8-r or cp1251, not `%s'" % src_encoding
26 from m_lib.rus.rus2lat import koi2lat_d
27 koi2lat_d["Ъ"] = '' # remove apostrophs -
28 koi2lat_d["Ь"] = '' # they are not very good characters in filenames
29 koi2lat_d["ъ"] = '' # especially on Windoze
30 koi2lat_d["ь"] = '' # :-)
32 elif src_encoding == "url":
34 src_encoding, dst_encoding = dst_encoding.split('/')
36 src_encoding = dst_encoding
37 from m_lib.opstring import recode
41 if src_encoding <> dst_encoding:
42 s = recode(s, src_encoding, dst_encoding, "replace")
45 elif dst_encoding == "url":
47 src_encoding, dst_encoding = src_encoding.split('/')
49 dst_encoding = src_encoding
50 from m_lib.opstring import recode
53 if src_encoding <> dst_encoding:
54 s = recode(s, src_encoding, dst_encoding, "replace")
55 return urllib.quote(s, safe=";/?:@&=+$,()'") # wget treats them as safe
58 from m_lib.opstring import recode
60 return recode(s, src_encoding, dst_encoding, "replace")
63 if __name__ == "__main__":
65 for filename in sys.argv[3:]:
66 new_name = _recode(filename)
67 if new_name <> filename:
68 os.rename(filename, new_name)