EDIT APR2021 : updated code for python 3
NOW THE CODE BY DEFAULT CHANGES ARTIST TITLE ALBUM LYRICS
IF NO -t <encoding> is given uses the cp1352 codepage greek
you can look at the code here :
Αλλου το βρηκα αν και ξεκινησα να γραφω μια τετοια λυση για το κο πανουση και τα κινεζικα tags.
συγκεκριμένα εδω . Το αλλαξα λιγο εχει ξεχασει ενα pdb statement (εχει να κανει με debugging) και βασικα το original δε τρέχει.
Λοιπον το παραπaνω διορθώνει mp3 tags (η πληροφορια που κρύβει ενα mp3) που ειναι τα ονοματα καλλιτεχνων , τιτλοι κλπ σε περιεργη κωδικοποιηση και φαινονται κινεζικα. Διαβαστε αναλυτικα περι του προβληματος εδώ.
Σιγουρα εχετε ελληνικα mp3 με κινεζικα tags.
Θα πρεπει να εχετε εγκατεστημενο το eyeD3
Δωστε στα debian ιζοντα
ενα
sudo apt-get install python-eyed3
και μετα εγκαταστηστε το ελαφρώς αλλαγμένο σκριπτακι .
cd /usr/local/bin
sudo wget http://www.kaotonik.net/home/thk/eyed3conv/download -O eyed3conv
sudo chmod +x eyed3conv
Μετά στο directory που έχετε διαβολικά mp3 με χαλασμενα ελληνικα tags δωστε
find . -name '*.mp3' -type f -printf '"%p"\n'|xargs eyed3conv
Γεια και χαρα.
#rename_to greeklish.py
#renames filenames with greek characters to greeklish (latin equivalent)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import shutil,os
map=[
(["α","Α","ά","Ά"] ,"a") ,
(["β","Β"] ,"b") ,
(["γ","Γ"] ,"g") ,
(["δ","Δ"] ,"d") ,
(["ε","έ","Ε","Έ"] ,"e") ,
(["ζ","Ζ"] ,"z") ,
(["η","ή","Η","Ή"] ,"i") ,
(["θ","Θ"] ,"th") ,
(["ι","ί","ϊ","Ϊ","ί","Ί","Ι"] ,"i") ,
(["κ","Κ"] ,"k") ,
(["λ","Λ"] ,"l") ,
(["μ","Μ"] ,"m") ,
(["ν","Ν",] ,"n") ,
(["ξ","Ξ"] ,"j") ,
(["ο","Ο","ό","Ό"] ,"o") ,
(["π","Π"] ,"p") ,
(["ρ","Ρ"] ,"r") ,
(["σ","Σ","ς"] ,"s") ,
(["τ","Τ"] ,"t") ,
(["υ","Υ","ύ" , "Ύ","ϋ" ,"Ϋ"] ,"y") ,
(["φ","Φ"] ,"f") ,
(["χ","Χ"] ,"x") ,
(["ψ","Ψ"] ,"ps") ,
(["ω","Ω","ώ","Ώ"] ,"o") ,
]
def conv(name):
pa = name.replace(" ","_")
pa=pa.lower()
pa=transformText(pa,map)
return pa
def transformText(t,map):
for repl in map:
togo = repl[0]
replacer = repl[1]
for s in togo:
t=t.replace(s,replacer)
return t
def convFilename(filepath):
if os.path.exists(filepath):
name, extension = os.path.splitext(filepath)
name = os.path.basename(filepath)
dir = os.path.dirname(filepath)
newName=conv(name)
newFilePath = os.path.join(dir,newName)
if filepath == newFilePath:
print (filepath + " is ok . skipping.")
else:
print ("renaming " + filepath + " to " + newFilePath)
shutil.move(filepath, newFilePath )
def convFilenames(filename=''):
if filename:
convFilename(filename)
else:
for root, dirs, files in os.walk('.',False):
for f in files:
p= os.path.join(root,f)
convFilename(p)
for d in dirs:
p= os.path.join(root,d)
convFilename(p)
if __name__ == '__main__':
import sys
if len(sys.argv)>1:
convFilenames(sys.argv[1])
else:
ans=input('WARNING all filenames will be converted to greeklish.Continue? (y/n):')
if ans=='y' or ans=='Y':
convFilenames()
else:
print ("exiting..")