σπαζοκεφαλιά encoding

luckyb | Τετ, 03/16/2011 - 21:47 | 2' | 25

Θ'αρχίσω λίγο ανάποδα, με το τελικό ζητούμενο:
Να μετατρέψω όλα μου τα αρχεία ήχου με ελληνικούς χαρακτήρες σε utf8 και να διαβάζονται !! 

Η ανωτέρω πρόταση ισχύει τόσο για το όνομα αρχείου (filename) όσο και για τα tags.

1. Αρχίζουμε από το εύκολο (το filename):
Έστω το αρχείο "ÃáëÜíç ÄÞìçôñá
Πως μπορούμε να το μετονομάσουμε σε "Γαλάνη Δήμητρα" ?? 

Σημειωτέον ότι
1. αν χρησιμοποιηθούν γραμματοσειρές grafis τα Ελληνικά διαβάζονται.
2. και η έξοδος της convmv μας λέει ότι το αρχείο χρησιμοποιεί ήδη utf8:
 
$ convmv -f iso-8859-7 -t utf8 *
Skipping, already UTF-8: ./ÃáëÜíç ÄÞìçôñá

Το απλό rename (mv) αποκλείεται ως λύση Tongue out

άσχετο: πως βάζει κανείς κώδικα με τον editor του φόρουμ ? 

Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Καταρχήν, δεν έχω ιδέα. (a.k.a. "disclaimer")

Κατά δεύτερον, τα charsets πάντα μου φαίνονταν "μαγικά" (βλέπε κ πρώτο σημείο)

Κατά τρίτον, ούτε το convmv ήξερα, αλλά τώρα το έμαθα. Ευχαριστώ :)

Κατά τέταρτον, κάτι λέει στο man page του προγράμματος για διπλά encodings κλπ, το οποίο, σε συνδυασμό με το "Skipping, already UTF-8" με βάζει σε σκέψεις αν αξίζει να κάνεις απλά:

pre. convmv -f utf8 -t iso-8859-7 <αρχείο>
convmv -f iso-8859-7 -t utf8 <αρχείο>

Ή, κάνε τουλάχιστον το πρώτο βήμα κ δες 1) τί σου βγάζει κ 2) αν παράγει σωστό (κατά iso-8859-7) αρχείο.

Υποθέτω ότι με κάποιο τρόπο το αρχείο "βαφτίστηκε" unicode, ενώ στην πραγματικότητα δεν είναι;

_άσχετο: εγώ έχω κόψει τον editor με τα κουμπάκια κ τα λαμπάκια, κ γράφω σε textile, όπου μη φορμαρισμένο κείμενο με fixed γραμματοσειρά μπαίνει αρχίζοντας την παράγραφο με ένα "pre."._

Για δες εδω http://ubuntuforums.org/showthread.php?t=748249
δοκιμασε και το script που εχει!

μ'αρέσει που έχουμε τον ίδιο τρόπο σκέψης ;)

$ convmv -f utf8 -t iso-8859-7 *
iso-8859-7 doesn't cover all needed characters for: "./ÃáëÜíç ÄÞìçôñá"
To prevent damage to your files, we won't continue.
First fix errors or correct options!

Υπ'όψη ότι δεν μιλάμε μόνο για ένα αρχείο αλλά για πολλά σε πολλούε φακέλους.

Οποισδήποτε θέλει να κάνει μια δοκιμή μπορεί να δημιουργήσει ένα απλό αρχείο κειμένου και να κάνει paste αυτό ως όνομα:
ÄÞìçôñá.txt

Αρχίζω κι έχω βάσιμες υποψίες ότι έχεις δίκιο με το σχόλιο σου για το βάπτισμα και δεν υπάρχει επιστροφή.

Με παραξενεύει όμως το οτι η γραμματοσειρά grafis τα δείχνει όλα ok !!

PS thank u για το tip με τον editor

@vagrale13
thank u για την απάντηση :)
το σκριπτάκι που έχει το λινκ είναι όντως πολύ απλό και έξυπνο
...αλλά είναι για την μετατροπή της κωδικοποίησης του περιεχομένου ενός text αρχείου με την iconv

Μήπως το πρόβλημα σου είναι η κωδικοποίηση των χαρακτήρων του αρχικού ονόματος;
Μου φαίνεται λίγο παράξενο να είναι η iso-8859-7.

Εκτός απροόπτου χρειάζεται να ξέρεις την code page (για παράδειγμα cp737 - είναι το code page που χρησιμοποιούσε η MS).
Αν (π.χ.) έχεις πάρει αυτά τα αρχεία από μηχάνημα με windows τότε η κωδικοποίηση είναι πιθανότατα η  cp1253.
Αν είναι από Mac, πιθανότατα η 10006 κ.ο.κ.

Θέλει λίγο ψάξιμο...

σωστός ο Αποστόλης :)

το θέμα είναι ότι  η convmv μου βγάζει αυτό το:
Skipping, already UTF-8

Αυτό ("προφανώς") σημαίνει ότι χρησιμοποιείται ήδη utf8 !!
το ταπεινό μου μυαλό αυτό μπορεί να υποθέσει

παρ'όλ'αυτά, μια απ'αυτές τις μέρες που πειραματιζόμουνα πριν ποστάρω, δοκίμασα με ένα σκριπτάκι όλα (ναι, ΟΛΑ) τα υποστηριζόμενα encoding που βγάζει η "convmv --list"
...τζίφος 

Η πρόταση που έχω να κάνω δεν είναι η ενδεδειγμένη αλλά θεωρώ πως κάπως μπορεί να βοηθήσει.
Αρχικά υπάρχει ένα θεματάκι με τα κενά στο scriptaki που θα χρησιμοποιήσουμε επομένως το πρώτο βήμα είναι να αφαιρέσουμε όλα τα κενά από από τα filenames που έχουμε(και να τα αντικαταστήσουμε π.χ.με τελεία).
Φτιάξε λοιπόν έναν δοκιμαστικό φάκελο με 5-6 mp3,κάνε cd σε αυτόν και δοκίμασε μερικές φορές αυτό :
$ rename \  \. *
(Απλά όσο το κοίταξα όταν τρέχεις την rename κάθε φορά κάνει replace μόνο ένα κενό σε κάθε αρχείο!)
Ή τελοσπάντων αφαίρεσε τα κενά με το χέρι!!!
Αφού θεώρήσουμε πως πλέον δεν έχουμε κενά στα αρχεία μας θα τρέξουμε το παρακάτω script και αν είμαστε τυχεροί θα έχουμε ελληνικά :)!!

#!/bin/sh
for FILE in $(ls --format=single-column);do
    NEWNAME=$(echo $FILE|sed 'y/ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÊËÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ/ΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ /')

mv -v "$FILE" "$NEWNAME"

done

(Βάζεις το παραπάνω σε ένα νέο αρχείο π.χ.rnm στο δοκιμαστικό μας φάκελο, το κάνεις εκτελέσιμο
$ chmod a+x rnm και το τρέχεις ./rnm)

Good luck!!!Wink

(Σε εμένα δούλεψε πάντως σε ένα δοκιμαστικό με την κυρία Γαλάνη η αλλιώς ÃáëÜíçTongue out)

που είσαι εσύ κρυμμένος ??
Smile 

 alampropoul, φοβερή η ιδέα σου !!!
και πάνω απ'όλα δουλεύει Laughing

Άλλαξα λίγο το σκριπτάκι ως εξής:
* Παίρνει ως παράμετρο τον υποκατάλογο στον οποίο θα δράσουμε:
 πχ $ ./alabournezika.sh "<PATH_TO_DIRECTORY>"
* Τσεκάρει αν ο υποκατάλογος υπάρχει
* Σε ρωτάει αν θέλεις να το διαβάσει recursively
* Κάνει ένα dry-run δείχνοντας σου τις αλλαγές που θα υποστούν τα ονόματα των αρχείων
* Σε ρωτάει αν θέλεις να συνεχίσεις ή και να επιβεβαιώνεις ένα ένα τα αρχεία που θα μετονομάζονται

Ο κώδικας του νέου script:
 http://pastebin.gr/1340

Το τεστ που έγινε σε έναν υποκατάλογο:
 http://pastebin.gr/1341

Τέλειο alampropoul. Θα προσπαθήσω να το βελτιστοποιήσω ώστε να μη του ξεφεύγει κανένας χαρακτήρας.

τώρα πρέπει να βρω κι ένα command-line εργαλείο για επεξεργασία id3 tags Cool 

Χεχεχεχεχεχε, κρυμμένοςTongue out!
Σε ευχαριστώ για τα καλά σου λόγια φίλε luckyb και χαίρομαι που κάναμε τη δουλειά μας!

Θα τεστάρω το scriptaki από Δευτέρα αλλά είμαι σίγουρος πως δουλεύει ρολόι Wink!

νέα έκδοση v.0.2 Tongue out
του πρόσθεσα μερικά γράμματα που έλλειπαν

Βασικά του λείπουν ακόμα 3: τα κεφαλαία  Ί, Ύ, Ώ (με τόνο). δεν κατάφερα να βρω δικό μου αρχείο που να τα περιλαμβάνει ώστε να τα προσθέσω κι αυτά

Λοιπόν, προστέθηκε και η δυνατότητα της αλλαγής των mp3 tags στα πεδία title, artist & album

Τελικά με την ιδέα του  alampropoul και μια μικρή επέκταση στο όμορφο σκριπτάκι του το θέμα φαίνεται να λύθηκε.
Άλλαξα όλη τη συλλογή μου πριν από λίγο με θεαματικά αποτελέσματα.

Όποιος δοκιμάσει το σκριπτ, ας κάνει πρώτα μια δοκιμή σε έναν υποκατάλογο και κατά προτίμηση να περιέχει κι άλλους υποκαταλόγους

luckyb]αααα ξέχασα, για τα tags απαιτούνται τα εργαλεία id3v2 και id3info

Σε ubuntu 10.10 το εργαλειο id3info δεν υπαρχει στο synaptik τι μπορω να κανω?
Βασικα να το δοκιμασω θελω και να σου πω την γνωμη μου.....

Το id3v2 φαίνεται να υπάρχει στα universe repos όλων των εκδόσεων.
Το id3info είναι μέρος του libid3-tools, αλλά δεν μπορώ να το βρω σε ubuntu παρά μόνο σε natty !!

Πάντως το σκριπτάκι ξεκινάει πρώτα και πραγματοποιεί τη μετονομασία και μετά σε ρωτάει αν θέλεις να συνεχίσεις να πειράξεις τα tags.

Γενικές εντυπώσεις από το σκριπτ ():
1. Εφαρμόστηκε σε αρκετά GB μουσικής και σε πολύπλοκο δένδρο υποκαταλόγων μονομιάς
2. Ατην αρχή μετονομάζει τους φακέλους. Εκεί μου άργησε λίγο (θέλει λίγο δουλειά ο αλγόριθμος)
3. Μετά όλα τα αρχεία -> σφαίρα
4. Τα αρχεία που δεν περιλαμβάνουν αλλαμπουρνέζικους χαρακτήρες δεν τα πειράζει
5. Τα καινούργια ονόματα των αρχείων μου είναι πι κορυφή. Σπάνια στα τόσα GB να συναντήσεις λάθος
6.Στα tags υπάρχει ποικιλομορφία. Χωρίζονται πια σε 3 κατηγορίες:

  • Αυτά που διαβάζονται κανονικά και είναι σε utf8
  • Αυτά που είναι σε διαφορετικό encoding (πχ cp1253), διαβάζονται με ειδική εφαρμογή και μετατρέπονται εύκολα σε utf8 (πχ με το easytag)
  • Αυτά που συνεχίζουν να είναι αλλαμπουρνέζικα και δεν διαβάζονται με τίποτα !!

Τα τελευταία βέβαια, τώρα που έχω τα filenames τους είναι παιχνιδάκι με το easytag να τα διορθώσω :)

Για όποιον τον απασχολεί παρόμοιο πρόβλημα :

  1. Προτείνω το υπέροχο σκριπτάκι μου ανεπιφύλακτα Laughing
  2. Τονίζω ότι δεν υπάρχει το μαγικό κουμπί που θα τα φτιάξει όλα με τη μια Wink 

Τελικα το id3info περιλαμβανεται στην βιβλιοθηκη id3lib την βρισκουμε στο synaptik.
Μια χαρα δουλευει το σκριπτ, κανει ακριβως αυτο που λεει.

Ρε παιδιά έχω ένα παρόμοιο πρόβλημα αλλά οι δικοί μου χαρακτήρες είναι έτσι (και το script  δεν έχει αποτέλεσμα)  :

Î?Î?Î?Î?Î?Î? Î?Î?Î?Î?Î?ΤÎ?Î?Î?.doc
ασκησεις
συναρτησεις αναζητησης και αναφορας

Ένα όνομα μου το αλλάζει απο  Î§ÎΡÎÎÎÎÎÎÎΣΠÎΡÎ-ÎÎ1].ΥΠÎÎÎÎΣΤÎΣÎÎ
σε  Ξ§ΞΞ¡ΞΞΞΞΞΞΞΣΠΞΞ¡Ξ-ΞΞ1].ΥΠΞΞΞΞΣΤΞΞ£ΞΞ

Τί μπορώ να κάνω ???

Ευχαριστώ εκ των προτέρων

ippokratis]Με τα αλαμπουρνέζικα σε ιστοσελίδες, τι κάνουμε;

email στον άσχετο developer να αλλάξει το encoding του site!! :)

Με τα δικά μου αλαμπουρνέζικα , υπάρχει περίπτωση να έχω κάποιο αποτέλεσμα ???

Με τα δικά μου αλαμπουρνέζικα , υπάρχει περίπτωση να έχω κάποιο αποτέλεσμα ???

Εντάξει, το g@mησα λίγο
Με τόσο κόπο θα είχα φτιάξει κανονικό gui
[url=http://dl.dropbox.com/u/14288691/alabournezika.sh]έκδοση 0.3[/url]

[img]/smileys/smiley-sealed.gif[/img]

Ανέβασε το όποτε μπορείς γιατί έχασα το αρχείο, ευχαριστώ :)