Previous topic

Skriptado de Excel per la Pitono

Next topic

Kiel dividi PDF dosieron

Kiel ŝanĝi etikedojn de MP3 dosiero

Pola Radio antaŭ kelka tempo disponigis siajn elsendojn en interreto. Bedaŭrinde, ili havas tute fuŝajn etikedojn, sed bone konstruitajn nomojn:

Note

Pola Radio sekcio Esperanto de 2011-02-01 ne plu funkcias [1], kaj la supraj dosieroj ne plu haveblas, tamen la maniero pritrakti la mp3-dosierojn estas la sama.

[1]Oni povas legi pli ĉe http://www.liberafolio.org/2011/finigis-la-esperanto-elsendoj-de-pola-radio

Ĉar la unuaj 8 ciferoj priskribas daton: JJJJMMTT, mi uzis la dosiernomojn, por ĝisdatigi la etikedojn de la mp3 dosieroj.

Ekzistas pluraj iloj, kiuj scipovas ŝanĝi la etikedojn laŭ nomo de la dosiero, sed mi decidis uzi modulon por Pitono, nomatan eyeD3 ĉar mi ankaŭ ĝisdatigas aliajn etikedojn.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
'''
Ŝanĝi dato-etikedojn de MP3 dosiero laŭ ĝia nomo
kaj aldoni komentojn kaj bildon, se ekzistas.
'''

import eyeD3

import glob
import os.path
import datetime

dosierujo = '.'

for dosiernomo in glob.glob(os.path.join(dosierujo, r'2011*.mp3')):
    print dosiernomo
    
    tempo = os.path.split(dosiernomo)[1][:8]
    
    if eyeD3.isMp3File(dosiernomo):
        sondosiero = eyeD3.Mp3AudioFile(dosiernomo)
        # agordoj
        etikedo = sondosiero.getTag()
        if not etikedo:
            # se la dosiero ankoraŭ havas neniun etikedon
            etikedo = eyeD3.Tag()
            etikedo.link(dosiernomo)
        etikedo.header.setVersion(eyeD3.ID3_V2_3)  # agordi version 2.3
        etikedo.setTextEncoding(eyeD3.UTF_16_ENCODING)  # unicode

        # aldoni/ĝisdatigi etikedojn
        etikedo.setArtist('Pola Radio')  # artisto
        etikedo.setAlbum('radioelsendoj')  # albumo
        etikedo.setGenre('podkastoj')  # tipo de registraĵo
        etikedo.setTrackNum((int(tempo),0))  # numero de registraĵo
        etikedo.setDate(int(tempo[0:4]), int(tempo[4:6]), int(tempo[6:8]))  # dato
        etikedo.setTitle('elsendo %s-%s-%s' % (tempo[0:4], tempo[4:6], tempo[6:8]))  # titolo

        # komento
        tekstodosiero = dosiernomo[:-4] + '.txt'
        if os.path.isfile(tekstodosiero):
            komentodosiero = file(tekstodosiero, 'r')
            komento = unicode(komentodosiero.read(), 'utf8', 'replace')
            etikedo.addComment(komento.encode('utf16', 'backslashreplace'),'','epo')
            komentodosiero.close()

        # bildo
        bildodosiero = dosiernomo[:-4] + '.png'
        if os.path.isfile(bildodosiero):
            etikedo.addImage(eyeD3.frames.ImageFrame.OTHER, bildodosiero)

        etikedo.update()  # konservi ŝanĝitajn etikedojn
Priskribo de funkciado de pola_radio.py:
Linio Priskribo
5 Uzas eyeD3 modulon.
8-10 Uzas ankaŭ aliajn moduloj.
12 Difinas nomon de dosierujo kie troviĝas la mp3 dosieroj - tie ĉi: en la sama dosierujo, kie troviĝas la skripto
14 Por ĉiu dosiero en la dosierujo (tie ĉi: kun la nomo komenciĝanta je 2011 kaj kun finaĵo .mp3)
15 Vidigas la nomon de ĝisdatigata dosiero.
19 Kontrolas, ĉu la dosiero estas fakte mp3 dosiero.
22-26 Malavantaĝo de eyeD3 modulo estas, ke la mp3 dosiero devas enhavi almenaŭ unu etikedon. Se tiu ankoraŭ ne ekzistas, oni devas ĝin krei.
27

Agordas uzon de etikedoj al versio 2.3.

Note

Depende de la versio, oni povas priskribi diversajn etikedojn. Ĝenerale - ju pli alta estas la versio, des pli multe da etikedoj uzeblas, sed ne ĉiuj mp3-ludiloj ilin komprenas.

28 Por versio 2.3, oni devigas uzon de utf-16 kodigado.
30-36 Aldonas/ŝanĝas etikedojn.
38-44 Aldonas komenton:
39

Difinas la dosiernomon kun komento.

Note

La komento estu en la teksta dosiero kun la nomo sama kiel la nomo de mp3 dosiero (sed kun finaĵo .txt)

40 Se la dosiero kun komento ekzistas ...
41 ... malfermas la dosieron en leg-reĝimo;
42 ... legas ĝian enhavon ŝanĝante de utf-8 kodigo al unikodo;
43

... aldonas la etikedon por komentoj;

Note

Tie, la komento estas en Esperanto, tial epo. Kutime la mp3-legiloj montras nur komentojn laŭ agordita lingvo.

44 ... kaj fermas la komentodosieron.
47-49 Aldonas bildon:
47

Difinas la dosiernomon kun bildo.

Note

La komento estu la dosiero kun la nomo sama kiel la nomo de mp3 dosiero (sed kun finaĵo .png)

48 Se la bildodosiero ekzistas ...
49

... aldonas la etikedon por bildoj.

Note

Tie ĉi la bildo estas konsiderita kiel alia - OTHER (ne kovrilpaĝo, ne libreto, ktp.)

51 Konservas ŝanĝojn.

Kaj jen, anstataŭ dosiero kun strangaj etikedoj, kiel “Blues” por muziktipo, oni havas jam bone priskribitajn mp3 dosierojn.