Forum » Programiranje » python-mp3 datoteke
python-mp3 datoteke
mirkostru ::
Nekatere datoteke .mp3 vsebujejo tudi podatke o naslovu, izvajalcu, imenu albuma, letu izdaje ipd. Do teh podatkov lahko pridemo tako, da celotno datoteko preberemo v niz. Brati jo moramo kot binarno datoteko (tako, kot smo na predavanjih prebrali datoteko .gif). Nato vzamemo samo zadnjih 128 znakov tega niza.
Najprej moramo preveriti, ali so prvi trije znaki tega niza (se pravi, niza, ki vsebuje samo zadnjih 128 znakov celotne datoteke!) enaki "TAG". Če niso, potem .mp3 ne vsebuje zgoraj naštetih podatkov.
Če so prvi trije znaki enaki TAG, potem naslednjih 30 znakov vsebuje naslov pesmi, naslednjih 30 znakov je naslov izvajalca, naslednjih 30 naslov albuma in naslednji štirje leto izdaje. Če je, recimo, naslov pesmi v resnici krajši od 30 znakov, je na koncu naslova ustrezno število znakov \x00. Torej, naslov "Englishman in New York" bi bil zapisan takole
'Englishman in New York\x00\x00\x00\x00\x00\x00\x00\x00'
Celoten opis pesmi pa je takšen:
TAGEnglishman
in New
York\x00\x00\x00\x00\x00\x00\x00\x00Sting\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...Nothing
Like the Sun\x00\x00\x00\x00\x00\x00\x001987
Temu sledijo še drugi podatki, vendar se bomo omejili na te.
za oceno 6
Napišite program, ki izpiše naslove vseh datotek s končnico .mp3 v trenutnem direktoriju in za vsako datoteko izpiše naslov pesmi, izvajalca, ime albuma in leto izdaje. (Pri tem ne izpisujte znakov \x00.) Če teh podatkov za posamezno datoteko ni, naj pove, da jih ni.
za oceno 7
Kot 6, vendar naj se vsi ti podatki izpišejo tudi v datoteko. Vsaka vrstica naj ustreza eni datoteki, v vrstici pa naj bo ime datoteke ter vsi zgoraj našteti podatki. Podatki naj bodo ločeni s tabulatorji. Datoteka naj bo torej takšna, da jo lahko uvozite v Excel (oziroma Calc, če uporabljate Open Office).
za oceno 8
Napišite 6 in 7, poleg tega pa napišite še program, ki datotekam .mp3, ki nimajo podatkov, dodat podatke. Program naj preišče vse poddirektorije trenutnega direktorija. Omejite se lahko na en sam nivo, se pravi, ni se vam potrebno ukvarjati s poddirektoriji poddirektorijev. Za vse datoteke mp3, ki jih najde, naj stori naslednje: če imajo informacije o pesmi (se pravi, če imajo TAG), jih pustite pri miru. Sicer pa na konec datoteke dodate TAG. To pomeni, da morate dodati niz, ki je dolg 128 znakov in se začne s črkami TAG, ki mu sledi ime naslova, izvajalca in tako naprej. Ker mora biti celoten string dolg 128 znakov, podatki, ki smo jih našteli zgoraj, pa imajo le 97 znakov, dodajte na koncu še 31 znakov \x00. Če hočete stvari urediti, kot se šika, pa si oglejte ID3v1 na strani ID3. @ Wikipedia
Odkod dobiti podatke? Takole: naslov pesmi naj bo kar ime datoteke .mp3, samo končnico odbijte. Naslov albuma pa naj bo naslov direktorija. Izvajalca in letnico si izmislite.
EVO ČE JE KATERA DUŠA TAKO DOBRA DA MI POMAGA DAM 50 evrov.AJA PA RABIM DANES
Najprej moramo preveriti, ali so prvi trije znaki tega niza (se pravi, niza, ki vsebuje samo zadnjih 128 znakov celotne datoteke!) enaki "TAG". Če niso, potem .mp3 ne vsebuje zgoraj naštetih podatkov.
Če so prvi trije znaki enaki TAG, potem naslednjih 30 znakov vsebuje naslov pesmi, naslednjih 30 znakov je naslov izvajalca, naslednjih 30 naslov albuma in naslednji štirje leto izdaje. Če je, recimo, naslov pesmi v resnici krajši od 30 znakov, je na koncu naslova ustrezno število znakov \x00. Torej, naslov "Englishman in New York" bi bil zapisan takole
'Englishman in New York\x00\x00\x00\x00\x00\x00\x00\x00'
Celoten opis pesmi pa je takšen:
TAGEnglishman
in New
York\x00\x00\x00\x00\x00\x00\x00\x00Sting\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...Nothing
Like the Sun\x00\x00\x00\x00\x00\x00\x001987
Temu sledijo še drugi podatki, vendar se bomo omejili na te.
za oceno 6
Napišite program, ki izpiše naslove vseh datotek s končnico .mp3 v trenutnem direktoriju in za vsako datoteko izpiše naslov pesmi, izvajalca, ime albuma in leto izdaje. (Pri tem ne izpisujte znakov \x00.) Če teh podatkov za posamezno datoteko ni, naj pove, da jih ni.
za oceno 7
Kot 6, vendar naj se vsi ti podatki izpišejo tudi v datoteko. Vsaka vrstica naj ustreza eni datoteki, v vrstici pa naj bo ime datoteke ter vsi zgoraj našteti podatki. Podatki naj bodo ločeni s tabulatorji. Datoteka naj bo torej takšna, da jo lahko uvozite v Excel (oziroma Calc, če uporabljate Open Office).
za oceno 8
Napišite 6 in 7, poleg tega pa napišite še program, ki datotekam .mp3, ki nimajo podatkov, dodat podatke. Program naj preišče vse poddirektorije trenutnega direktorija. Omejite se lahko na en sam nivo, se pravi, ni se vam potrebno ukvarjati s poddirektoriji poddirektorijev. Za vse datoteke mp3, ki jih najde, naj stori naslednje: če imajo informacije o pesmi (se pravi, če imajo TAG), jih pustite pri miru. Sicer pa na konec datoteke dodate TAG. To pomeni, da morate dodati niz, ki je dolg 128 znakov in se začne s črkami TAG, ki mu sledi ime naslova, izvajalca in tako naprej. Ker mora biti celoten string dolg 128 znakov, podatki, ki smo jih našteli zgoraj, pa imajo le 97 znakov, dodajte na koncu še 31 znakov \x00. Če hočete stvari urediti, kot se šika, pa si oglejte ID3v1 na strani ID3. @ Wikipedia
Odkod dobiti podatke? Takole: naslov pesmi naj bo kar ime datoteke .mp3, samo končnico odbijte. Naslov albuma pa naj bo naslov direktorija. Izvajalca in letnico si izmislite.
EVO ČE JE KATERA DUŠA TAKO DOBRA DA MI POMAGA DAM 50 evrov.AJA PA RABIM DANES
Nuke_H2 ::
EVO ČE JE KATERA DUŠA TAKO DOBRA DA MI POMAGA DAM 50 evrov.AJA PA RABIM DANES
Dobr, da se nisi spomnu vprašat kakšn dan prej ;).
Zgodovina sprememb…
- spremenil: Nuke_H2 ()
mirkostru ::
potem,ko mi Python izpiše vse datoteke mp3 ne vem kako jih prebrati v niz-naprej bi potem že verjetno šlo
RunoTheDog ::
Tudi jaz bi potreboval nekaj pomoči.Muči me tale del:
"To pomeni, da morate dodati niz, ki je dolg 128 znakov in se začne s črkami TAG, ki mu sledi ime naslova, izvajalca in tako naprej. Ker mora biti celoten string dolg 128 znakov, podatki, ki smo jih našteli zgoraj, pa imajo le 97 znakov, dodajte na koncu še 31 znakov \x00."
Poskušal sem takole:
Podatki = "TAG"+(naslovPesmi+((30-(len(naslovPesmi))*"\x00")+((30-(len("Kaki")))*"\x00")+(30*"\x00")+letnica+(31*"\0xx")
b=file(t,"a")
b.write(Podatki)
b.close()
"To pomeni, da morate dodati niz, ki je dolg 128 znakov in se začne s črkami TAG, ki mu sledi ime naslova, izvajalca in tako naprej. Ker mora biti celoten string dolg 128 znakov, podatki, ki smo jih našteli zgoraj, pa imajo le 97 znakov, dodajte na koncu še 31 znakov \x00."
Poskušal sem takole:
Podatki = "TAG"+(naslovPesmi+((30-(len(naslovPesmi))*"\x00")+((30-(len("Kaki")))*"\x00")+(30*"\x00")+letnica+(31*"\0xx")
b=file(t,"a")
b.write(Podatki)
b.close()
RunoTheDog ::
Pomotoma sem si zbrisal cel program, tako, da sem ga moral ponovno napisati.
Se pravi, rad bi dodal tag tistim datotekam, ki ga nimajo.
Prišel sem do tukaj:
Se pravi, rad bi dodal tag tistim datotekam, ki ga nimajo.
Prišel sem do tukaj:
else:#ce nima TAG-a naslovPesmi = novaDatoteka.strip(".mp3") naslovAlbuma = os.getcwd() naslovIzvajalca = "Kaki"#si lahko zmislimo letnica = "2009" #si lahko zmislimo podatki = "TAG"+naslovPesmi+(30-(len(naslovPesmi))*"\x00"+naslovIzvajalca+ (30-(len(naslovIzvajalca))*"\x00"+naslovAlbuma+(30-(len(naslovAlbuma))*"\x00" +letnica+31*"\x00" #skupaj morajo imeti 128 znakov
Zgodovina sprememb…
- spremenil: Gandalfar ()
techfreak :) ::
podatki = "TAG" + naslovPesmi + ((30 - len(naslovPesmi)) * "\x00") + naslovIzvajalca + ((30-len(naslovIzvajalca)) * "\x00") + naslovAlbuma + ((30 - len(naslovAlbuma)) * "\x00") + str(letnica) + (31*"\x00")
Oklepaji narobe postavljeni, integer pa string ne smeš mešati (moraš prej pretvoriti).
Zgodovina sprememb…
- spremenil: techfreak :) ()
Gandalfar ::
integer pa string ne smeš mešati (moraš prej pretvoriti
v pythonu lahko:
>>> "f00" * 5 'f00f00f00f00f00'
techfreak :) ::
Govoril sem o tem:
>>> "tekst" + 10 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | WebAssembly postal standardOddelek: Novice / Brskalniki | 8555 (5539) | xmetallic |
» | Pobegla baza z osebnimi in finančnimi podatki več kot polovice ameriških gospodinjsteOddelek: Novice / Zasebnost | 8775 (6417) | MrStein |
» | Kako narediti request z "\" v URL-juOddelek: Programiranje | 2140 (1415) | Horejšio |
» | Oddaljeni BSODOddelek: Novice / Varnost | 5033 (2920) | PrimozR |
» | Naprava za predvajanje glasbeOddelek: Kaj kupiti | 1831 (1573) | 7h3_1 |