1 #! /usr/bin/env python3
2 # -*- coding: koi8-r -*-
6 src_encoding = sys.argv[1]
7 dst_encoding = sys.argv[2]
9 if src_encoding == "translit":
10 if dst_encoding == "koi8-r":
11 from m_lib.rus.lat2rus import lat2koi as _recode
12 elif dst_encoding == "cp1251":
13 from m_lib.rus.lat2rus import lat2win as _recode
15 raise NotImplementedError("destination encoding must be koi8-r or cp1251, not `%s'" % dst_encoding)
17 elif dst_encoding == "translit":
18 if src_encoding == "koi8-r":
19 from m_lib.rus.rus2lat import koi2lat as _recode
20 elif src_encoding == "cp1251":
21 from m_lib.rus.rus2lat import win2lat as _recode
23 raise NotImplementedError("source encoding must be koi8-r or cp1251, not `%s'" % src_encoding)
25 from m_lib.rus.rus2lat import koi2lat_d
26 koi2lat_d["Ъ"] = '' # remove apostrophs -
27 koi2lat_d["Ь"] = '' # they are not very good characters in filenames
28 koi2lat_d["ъ"] = '' # especially on Windoze
29 koi2lat_d["ь"] = '' # :-)
31 elif src_encoding == "url":
33 src_encoding, dst_encoding = dst_encoding.split('/')
35 src_encoding = dst_encoding
36 from m_lib.opstring import recode
40 if src_encoding != dst_encoding:
41 s = recode(s, src_encoding, dst_encoding, "replace")
44 elif dst_encoding == "url":
46 src_encoding, dst_encoding = src_encoding.split('/')
48 dst_encoding = src_encoding
49 from m_lib.opstring import recode
52 if src_encoding != dst_encoding:
53 s = recode(s, src_encoding, dst_encoding, "replace")
54 return urllib.quote(s, safe=";/?:@&=+$,()'") # wget treats them as safe
57 from m_lib.opstring import recode
59 return recode(s, src_encoding, dst_encoding, "replace")
62 if __name__ == "__main__":
64 for filename in sys.argv[3:]:
65 new_name = _recode(filename)
66 if type(filename) is not type(new_name):
67 new_name = new_name.decode()
68 if new_name != filename:
69 os.rename(filename, new_name)