]> git.phdru.name Git - dotfiles.git/blobdiff - bin/recode_filenames.py
Feat(recode-filenames-recursive): Allow to omit parameters
[dotfiles.git] / bin / recode_filenames.py
index b9b467266528b4e1922f927c3c248229d25ddfee..b8d3fa04daca8794a10479951126cb9e3a7932ac 100755 (executable)
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/env python3
 # -*- coding: koi8-r -*-
 
 import sys
@@ -7,61 +7,63 @@ src_encoding = sys.argv[1]
 dst_encoding = sys.argv[2]
 
 if src_encoding == "translit":
-   if dst_encoding == "koi8-r":
-      from m_lib.rus.lat2rus import lat2koi as _recode
-   elif dst_encoding == "cp1251":
-      from m_lib.rus.lat2rus import lat2win as _recode
-   else:
-      raise NotImplementedError, "destination encoding must be koi8-r or cp1251, not `%s'" % dst_encoding
+    if dst_encoding == "koi8-r":
+        from m_lib.rus.lat2rus import lat2koi as _recode
+    elif dst_encoding == "cp1251":
+        from m_lib.rus.lat2rus import lat2win as _recode
+    else:
+        raise NotImplementedError("destination encoding must be koi8-r or cp1251, not `%s'" % dst_encoding)
 
 elif dst_encoding == "translit":
-   if src_encoding == "koi8-r":
-      from m_lib.rus.rus2lat import koi2lat as _recode
-   elif src_encoding == "cp1251":
-      from m_lib.rus.rus2lat import win2lat as _recode
-   else:
-      raise NotImplementedError, "source encoding must be koi8-r or cp1251, not `%s'" % src_encoding
+    if src_encoding == "koi8-r":
+        from m_lib.rus.rus2lat import koi2lat as _recode
+    elif src_encoding == "cp1251":
+        from m_lib.rus.rus2lat import win2lat as _recode
+    else:
+        raise NotImplementedError("source encoding must be koi8-r or cp1251, not `%s'" % src_encoding)
 
-   from m_lib.rus.rus2lat import koi2lat_d
-   koi2lat_d["Ъ"] = '' # remove apostrophs -
-   koi2lat_d["Ь"] = '' # they are not very good characters in filenames
-   koi2lat_d["ъ"] = '' # especially on Windoze
-   koi2lat_d["ь"] = '' # :-)
+    from m_lib.rus.rus2lat import koi2lat_d
+    koi2lat_d["Ъ"] = '' # remove apostrophs -
+    koi2lat_d["Ь"] = '' # they are not very good characters in filenames
+    koi2lat_d["ъ"] = '' # especially on Windoze
+    koi2lat_d["ь"] = '' # :-)
 
 elif src_encoding == "url":
-   try:
-      src_encoding, dst_encoding = dst_encoding.split('/')
-   except ValueError:
-      src_encoding = dst_encoding
-   from m_lib.opstring import recode
-   import urllib
-   def _recode(s):
-      s = urllib.unquote(s)
-      if src_encoding <> dst_encoding:
-         s = recode(s, src_encoding, dst_encoding, "replace")
-      return s
+    try:
+        src_encoding, dst_encoding = dst_encoding.split('/')
+    except ValueError:
+        src_encoding = dst_encoding
+    from m_lib.opstring import recode
+    import urllib
+    def _recode(s):
+        s = urllib.unquote(s)
+        if src_encoding != dst_encoding:
+            s = recode(s, src_encoding, dst_encoding, "replace")
+        return s
 
 elif dst_encoding == "url":
-   try:
-      src_encoding, dst_encoding = src_encoding.split('/')
-   except ValueError:
-      dst_encoding = src_encoding
-   from m_lib.opstring import recode
-   import urllib
-   def _recode(s):
-      if src_encoding <> dst_encoding:
-         s = recode(s, src_encoding, dst_encoding, "replace")
-      return urllib.quote(s, safe=";/?:@&=+$,()'") # wget treats them as safe
+    try:
+        src_encoding, dst_encoding = src_encoding.split('/')
+    except ValueError:
+        dst_encoding = src_encoding
+    from m_lib.opstring import recode
+    import urllib
+    def _recode(s):
+        if src_encoding != dst_encoding:
+            s = recode(s, src_encoding, dst_encoding, "replace")
+        return urllib.quote(s, safe=";/?:@&=+$,()'") # wget treats them as safe
 
 else:
-   from m_lib.opstring import recode
-   def _recode(s):
-      return recode(s, src_encoding, dst_encoding, "replace")
+    from m_lib.opstring import recode
+    def _recode(s):
+        return recode(s, src_encoding, dst_encoding, "replace")
 
 
 if __name__ == "__main__":
-   import os
-   for filename in sys.argv[3:]:
-      new_name = _recode(filename)
-      if new_name <> filename:
-         os.rename(filename, new_name)
+    import os
+    for filename in sys.argv[3:]:
+        new_name = _recode(filename)
+        if type(filename) is not type(new_name):
+            new_name = new_name.decode()
+        if new_name != filename:
+            os.rename(filename, new_name)