g1annis Δημοσ. 5 Μαρτίου 2007 Share Δημοσ. 5 Μαρτίου 2007 Σε αυτό το θέμα, είχε γίνει κουβέντα, για το πως γίνεται μαζική μετατροπή των tags από iso-8859-7 ή windows-1253 σε unicode-utf-8. Εκείνο είχε ξεκινήσει για το Amarok, οπότε εγώ ανοίγω ένα άλλο θέμα, για να μάθουμε πως εφαρμόζονται τα patches γενικώς. Λοιπόν, μάλλον η λύση βρέθηκε στη μαζική encoding στα id3 tags βρέθηκε: Γράφτηκα στην mailing list του easytag και τους εξήγησα το πρόβλημα. Μου στείλανε το εξής mail. Indeed, your version of Id3lib contains the UTF-16 bug...You must recompile it with this patch : http://downloads.sourceforge.net/easytag/patch_id3lib_3.8.3_UTF16_writing_bug.diff available from the page : http://sourceforge.net/project/showfiles.php?group_id=5216 Βέβαια, εγώ δεν έχω καμία ιδέα για το τι θα κάνω αυτά τα αρχεία που μου υπέδειξε ο τύπος. Μπορεί κάποιος να το κάνει λίγο πιο σαφές? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 5 Μαρτίου 2007 Share Δημοσ. 5 Μαρτίου 2007 Θα το παλέψω λίγο και θα σου πω. Αν και νομίζω ότι μόλις το πάρουν πρέφα οι γκουρού μας θα το ξεπετάξουν. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 5 Μαρτίου 2007 Share Δημοσ. 5 Μαρτίου 2007 Λοιπόν. Βάζουμε το patch στον φάκελο src και τρέχουμε την παρακάτω εντολή: patch -Np1 -i patch_id3lib_3.8.3_UTF16_writing_bug.diff Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
g1annis Δημοσ. 5 Μαρτίου 2007 Μέλος Share Δημοσ. 5 Μαρτίου 2007 firewalker σ' ευχαριστώ για την άμεση απάντηση, αλλά δεν πολυκατάλαβα. Τι εννοείς βάζουμε το patch μέσα στον φάκελο src? Σε ποιό src? Το id3lib μου έχει εγκατασταθεί όπως δείχνει το παρακάτω και όχι σε κάποιο src. >g1annis@SovietKong:/$ locate id3lib /var/lib/dpkg/info/id3lib.list /usr/local/include/id3/id3lib_streams.h /usr/local/include/id3/id3lib_frame.h /usr/local/include/id3/id3lib_strings.h Αν γίνεται να μου το διευκρινίσεις λίγο ακόμα? Ελπίζω εσένα να σου φάνηκε χρήσιμο. Δούλεψε? Το δοκίμασες? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 5 Μαρτίου 2007 Share Δημοσ. 5 Μαρτίου 2007 Κατεβάζουμε το πακέτο με τα sources από εδώ: http://downloads.sourceforge.net/easytag/id3lib-3.8.3.tar.gz?use_mirror=belnet Το κάνουμε extract με την εντολή tar -xvf id3lib-3.8.3.tar.gz. Ανοίγουμε τον φάκελο id3lib-3.8.3 που δημιουργείτε και τοποθετούμε το patch. Στην συνέχεια μπαίνουμε από κονσόλα στον φάκελο id3lib-3.8.3 και δίνουμε την εντολή patch -Np1 -i patch_id3lib_3.8.3_UTF16_writing_bug.diff. Μετά μέσα από τον φάκελο id3lib-3.8.3 δίνουμε διαδοχικά τις εντολές ./configure, make, make check. Στην συνέχεια με δικαιώματα root δίνουμε την εντολή make install για την εγκατάσταση. Τώρα αν η διανομή μας έχει κάποιο build system (π.χ. ArchLinux) είναι ποιο εύκολο να χρησιμοποιήσουμε αυτό. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
g1annis Δημοσ. 5 Μαρτίου 2007 Μέλος Share Δημοσ. 5 Μαρτίου 2007 Έκανα το patch, μετά έκανα compile το πεκέτο, το έκανα ένα πακέτο deb με το checkinstall και το εγκατέστησα. Δε διόθωσε τίποτα. Εξακολουθώ να μην μπορώ να μετατρέψω τα tags από iso-8859 σε utf-8 ή utf-16 Εσένα σου δούλεψε? Δηλαδή το έβαλες και λειτούργησε? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
apoikos Δημοσ. 5 Μαρτίου 2007 Share Δημοσ. 5 Μαρτίου 2007 Το patch στο οποίο σε παραπέμψανε είναι άσχετο. Όπως είχα εξηγήσει στο προηγούμενο θέμα, το πρόβλημα είναι ότι η id3lib δεν υποστήριζε, και εξακολουθεί να μην υποστηρίζει id3v2.4 tags, και τα tags που θα γράφονται με id3lib δε θα μπορεί ποτέ να τα διαβάσει το amarok. Αν θες, δοκίμασε το παρακάτω - χρωστούμενο - perl script: > #!/usr/bin/perl -w use Audio::TagLib; use Text::Iconv; use warnings; use strict; my $i = Audio::TagLib::ID3v2::FrameFactory->instance(); $i->setDefaultTextEncoding("UTF8"); print $i->defaultTextEncoding(), "\n"; my $f = Audio::TagLib::FileRef->new($ARGV[0]); my $translator = Text::Iconv->new("iso8859-7", "UTF8"); my $temp; my $artist = $f->tag()->artist(); my $title = $f->tag()->title(); my $genre = $f->tag()->genre(); my $album = $f->tag()->album(); my $comment = $f->tag()->comment(); $temp = $artist->toCString(); my $newArtist = Audio::TagLib::String->new($temp, "UTF8"); $f->tag()->setArtist($newArtist); $temp = $title->toCString(); my $newTitle = Audio::TagLib::String->new($temp, "UTF8"); $f->tag()->setTitle($newTitle); $temp = $genre->to8Bit(); $temp = $translator->convert($temp); my $newGenre = Audio::TagLib::String->new($temp, "UTF8"); $f->tag()->setGenre($newGenre); $temp = $album->toCString(); my $newAlbum = Audio::TagLib::String->new($temp, "UTF8"); $f->tag()->setAlbum($newAlbum); $temp = $comment->toCString(); my $newComment = Audio::TagLib::String->new($temp, "UTF8"); $f->tag()->setComment($newComment); $f->save(); Για να λειτουργήσει χρειάζεται τα Audio::TagLib και Text::Iconv perl modules. Το σώζεις σε ένα αρχείο (π.χ. mp3fix.pl), το κάνεις chmod +x και το εκτελείς με όρισμα το αρχείο που έχει ελληνικά tags σε iso8859-7. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
chek2fire Δημοσ. 5 Μαρτίου 2007 Share Δημοσ. 5 Μαρτίου 2007 giannis επειδη δεν εχω δει καθολου το προβλημα σου μπορεις να μου εξηγησεις λιγο τι προβλημα εχεις? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
g1annis Δημοσ. 5 Μαρτίου 2007 Μέλος Share Δημοσ. 5 Μαρτίου 2007 Το πρόβλημα είναι ότι πολλοί audio players (Amarok, Exaile κλπ) πλέον δεν υποστιρίζουν όλες της κωδικοποιήσεις χαρακτήρων (σωστά κατά τη γνώμη μου) και για να βλέπω κανονικά τα tags πρέπει να μετατρέψω όλα τα tags που βρίσκονταν σε iso-8859-7 σε unicode-utf-8. Το id3lib, που χρησιμοποιεί το easytag σύμφωνα και με όσα μου είπε μέσω της mailing list ο ίδιος ο προγραμματιστής του έχει ένα bug. Παραπάνω, στο 1ο post δίνω 2 links που μου έστειλε ο ίδιος για να διορθώσω το bug. Ο apoikos παρακάτω, που έχει ασχοληθεί με το easytag, λέει πως είναι άσχετα τα patches. Apoike, θα δοκιμάσω το script σου και θα σου πω. Γίνεται να το εφαρμόσω μαζικά, με κανα -r ή -R ας πούμε στο σύνολο των αρχείων ενός φακέλου? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 5 Μαρτίου 2007 Share Δημοσ. 5 Μαρτίου 2007 @ apoikos: Στο Arch τι πακέτα θέλει για να λειτουργήσει το script; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
apoikos Δημοσ. 5 Μαρτίου 2007 Share Δημοσ. 5 Μαρτίου 2007 Apoike, θα δοκιμάσω το script σου και θα σου πω. Γίνεται να το εφαρμόσω μαζικά, με κανα -r ή -R ας πούμε στο σύνολο των αρχείων ενός φακέλου? Όχι, δεν έχει τέτοιο switch, μπορείς όμως να κάνεις ένα: > $ cd /folder/with/music $ find . -iname '*.mp3' -exec /path/to/mp3fix.pl \{\} \; που θα σου κάνει ακριβώς αυτό. Κράτα όμως καλύτερα ένα αντίγραφο των αρχείων σου πρώτα, γιατί δεν το έχω πολυδοκιμάσει. @firewalker Δυστυχώς, πακέτα δεν υπάρχουν για την Audio::TagLib, υπάρχει όμως στο community το perl-text-iconv που χρειάζεται. Για την taglib, δες εδώ: http://search.cpan.org/dist/Audio-TagLib/ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
g1annis Δημοσ. 5 Μαρτίου 2007 Μέλος Share Δημοσ. 5 Μαρτίου 2007 To έσωσα ως mp3fix.pl και το έβαλα στο ~/Desktop/testcd Μέσα σε αυτόν τον φάκελο έβαλα και ένα iso-8859 mp3 Πως θα το τρέξω? Δηλαδη, πως θα συντάξω την εντολή? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.