MP3 masolatok torlese

Fórumok

Udvozlet. Keresek egy olyan programot amivel ki tudom szorni a masolatokat. A gond hogy mindig valtozo a fajl vege (1-2 mp-vel kesobb vegzodik, 1mp-vel korabban), szoval valami ID3 vagy mas egyezes alapjan kene szortirozni. MD5 alapjan WIN-es programokkal hiaba probalkozok hiszen mindig valtozik az ellenorzoertek pont emiatt.

(VirtualBox-ban esetleg feltudom csatolni a mappat aztan ott vegigfutni rajt ha nincs linuxos megoldas.)

Koszonom elore is (Probaltam a keresot hasznalni, nem sok sikerrel jartam.)

Hozzászólások

Ha biztos vagy benne, hogy csak a végük változik, akkor írj C-ben egy pici programot, ami levág a fájlok elejéből adott hosszúságú részt, és azoknak az MD5-jét hasonlítsd össze. (Igazából lehet, hogy a vágásra parancssori eszköz is létezik, de most nem jut eszembe ezzel kapcsolatban semmi.)

---
Science for fun...

programterv:

Ad-hoc tippek a megvalósításhoz:
0. "kamu levenstein" metrikaszerű összehasonlítást kellene alkalmazni.
1. Páronként kellene a fájlokat összehasonlítani (tipp: méretük hányadosa 0.8 és 1.25 között legyen, 0 méretű fájlméret esetén ne legyen osztás, mert szopni fogol (vagy kivételt kezelsz, vagy elágazol))
2.a Az elején lévő ID3 és egyéb tag-et figyelmen kívül kell hagyni.
2.b A tulajdonképpeni kezdeti stream-től kell kezdeni az összehasonlítást
3. és kb. pár kilobájtnyi md4-md5 összehasonlítást kell végezni (cksum nem jó, az előbb-utóbb fals egyezést fog adni, de inkább előbb -)
4. Akkor kell kb. pár kilobájtnyiról legalább 70-80%-ra feltornázni az összehasonlítást, ha tipikusan extended mixekről van szó, ekkor gyakran pár traktussal több van beszúrva, és ilyenkor gyakran mind2 fájl kell az embernek (pl. jarre, zoolook mixek, it/s3m/xm/mod renderelt mp3-mak (egy-két patternnel több == fájleleji egyezés)
5. find/awk/md5sum, find/perl, stb... hasonló wintools/unix parancssori eszközökkel kezdenék neki.

ami át van húzva, azt teljesen fölösleges elolvasni. az olyan, mintha ott sem lenne

hát ha az eleje tényleg megegyezik akkor dupla sortörések közt az egyformák:

#!/bin/sh
IFS='\n'
for i in $(find . -type f -iname "*.mp3"); do head -c10K $i | md5sum | tr '\n' ' '; echo $i; done | sort | uniq -w32 --all-repeated=separate | cut -c37-

(felelősséget nem vállalok, csak így a hsz-ba írtam, nem próbáltam ki, a címbeli törlést márcsak ezért sem írtam bele :) )
persze ahogy előttem is írták... magángyűjteménynél talán egyszerűbb lenne meghallgatni, végül is nem azért vannak? :)

(ha az elejéről le akarod szedni az id3-at talán a legegyszerűbb (gépelés szempontból) ha a "head" előtt wavvá dekódolod)

a fájl alapú összehasonlítás esélytelen...
az csak a pontosan megegyező (másolat a másik fájlról) eseteket szűri ki (ezt már próbálta)

Az elejét is hiába nézitek, mert
- más programmal
- más forrásból
- más bitrátával
...
kódolva teljesen más a bináris mp3 fájl, akkor is ha ugyanolyan hosszú vagy a fájlméret egyezik.

Id3 alapon lenne esélyes, vagy valami hangminta elemző programmal lehet próbálkozni

valami progit végigküldeni rajta amivel ki lehet íratni a címet / előadót , valamint a fájl elérési útját is tárolni egy szövegfájlba kigyüjteni (minden sor egy fájlhoz tartozik) valami paranscsoros mp3 player vagy ilyesmi biztos tud ilyet.

pl:

\zene\akarni zene.mp3 || előadó ||album || cím
\zene\másik zene.mp3 || előadó2 ||album || cím2

valami olyan elválasztó jelet kitalálni, ami nem fordul elő a címekben, fájlnevekben

ezt a txt-t pedig feldolgozni grep, awk kombóval, ahol a mezők közt hasonlóságot keressen (uppercase)

az egyezőnek talált sorokat kigyüjteni másik fájlba, szemrevételezni, hogy valós lehet-e, majd mindegyik egyezőből az elsőt meghagyva töröltetni egy másik scripttel őket
(azért nem árt egy backup a móka előtt, hogyha rosszul sül el akkor lehessen újra próbálkozni)

aki jártasabb awk és grep kezelésben pár perc alatt meg tudja oldani szerintem (ha az id3-ek egész tűrhetően vannak kitltve)
3 script kellene össz:
- bejárni a könyvtárakat rekurzívan és > fájlba menteni a fájl elérési útját és a felparaméterezett id3 kinyerő program kimenetét
- a kapott txt fájl soraiban keresni mezők egyezését, másik fájlba kitenni a hasonló sorokat
- a hasonlókat tartalmazó listából mindig az elsőt (legnagyobbatm ahogy tetszik) meghagyni, a többit töröltetni

Hogy legyen pelda, streamripper soran keletkezett hangfajlokrol van szo. A gond hogy van aminek akar 6-7 valtozata is van. A legegyszerubb olyasmi lenne hogy a 3 legnagyobb fajlmeretu fajlt kimutatja, s azok kozul valasztok egyet. De ez mar tobb mint bonyolult igy belegondolva is. (Ezt ID alapjan is lehetne csinalni...)

Az a gond hogy ~120gb+ meretnel mar nem lehet egyesevel szortirozni.. illetve.. beleoregszem mire vegzem. (Utana meg mar johet a kovetkezo).

off: hallgass rádiót:) < Hat sajna legtobbszor mobilnettel vagyok online, igy nem tudom megtenni. No meg azert jo ha en valogatom mit hallgatok.. :)

"akkor meg miért nem mp3ból idkiszedőt keresel? szövegfájlba,sort,uniq,stb" < esetleg valami otlet? Ott a gond hogy ilyent nem talalok.. (marmint komplex megoldasra nincs pelda, leiras, stb..)

Peldaul:
12432 ripple - Boon Boon Flyer (fragment) (1).mp3
12432 ripple - Boon Boon Flyer (fragment) (2).mp3
12436 ripple - Boon Boon Flyer (fragment) (3).mp3
12432 ripple - Boon Boon Flyer (fragment).mp3

7028 Shimamiya Eiko - Naraku no Hana (Higurashi no Naku Koro ni Kai OST) (1).mp3
7108 Shimamiya Eiko - Naraku no Hana (Higurashi no Naku Koro ni Kai OST) (2).mp3
7132 Shimamiya Eiko - Naraku no Hana (Higurashi no Naku Koro ni Kai OST) (3).mp3
6876 Shimamiya Eiko - Naraku no Hana (Higurashi no Naku Koro ni Kai OST).mp3

6300 Sayuri - Phantasm Brigade (Phantasm Brigade) (1).mp3
6284 Sayuri - Phantasm Brigade (Phantasm Brigade) (2).mp3
6288 Sayuri - Phantasm Brigade (Phantasm Brigade) (3).mp3
6284 Sayuri - Phantasm Brigade (Phantasm Brigade) (4).mp3
6288 Sayuri - Phantasm Brigade (Phantasm Brigade) (5).mp3
6320 Sayuri - Phantasm Brigade (Phantasm Brigade) (6).mp3
6284 Sayuri - Phantasm Brigade (Phantasm Brigade).mp3

ilyen fájlnevekkel miélrt nem törlöd egyszerűen a legnagyobb kivételével?
(olvastam hogy nem biztos "ugyanaz a dj műve", de ér annyit?)

ps: guglival elég hamar megtaláltam, win alatt is megy: http://packages.ubuntu.com/jaunty/id3tool
ehhez nem nagy szkripttehetség kell a kimenetet feldolgozni (persze ha nem különböznek az id3-ak)

"szignál": nem tudom mit szeretnél akkor a huptól, írjunk valami hasonlót: http://tineye.com/ , ez alapján töltsük le az eredetit valahogy a netről, keressük meg melyik az eredeti a nálad, hasonlítsuk össze a nálad lévőkkel és a többi törlésére írjunk szkriptet?

"olvastatásra": ezt nem értem

más: ezek közt kerestél? http://packages.ubuntu.com/search?keywords=id3&searchon=names&suite=jau…

""szignál": nem tudom mit szeretnél akkor a huptól, írjunk valami hasonlót: http://tineye.com/ , ez alapján töltsük le az eredetit valahogy a netről, keressük meg melyik az eredeti a nálad, hasonlítsuk össze a nálad lévőkkel és a többi törlésére írjunk szkriptet?"

Ezert mondtam hogy jo lesz egy szimpla id3 alapjan takaritgato is (esetleg nehol meg kicserelem a 'torolteket' a 'megmaradt'-akkal, de akkor is minimalis lesz a felhasznaloi beavatkozas.

Nézz körül a MusicBrainz termékei közt, ezek hangmintaelemzésre épülnek és talán szkriptelhető változatuk is van, amit az id3 tagekkel együtt beledobhatsz egy saját szkriptbe.

korábban ahogy mutattad milyen fájlnévvel vannak mentve, erre nem kell sem id3 sem más belenéző alkalmazás...

scripttel az egyformákból ki lehet törölni a többedik példányokat és kész... (regexp kifejezés hogy az elején lévő számsort és a végél lehetséges (szám) részt ne vegye figyelembe, csak a cím szövegrészt)

meghallgatni és szelektálni nem fogja semmilyen program sem helyetted (ha signálok meg átfedések alapján is válogatni szeretnél).

Ha a fájlnevek nem lettek volna ilyen egyértelműek, akkor kellett volna id3 szerinti keresés.

A frekvencia analízis sem sokat segít, hiába ismeri fel az egy dalból származó fájlokat, nem dönt helyetted, hogy melyik a teljes vagy hogy melyik tetszene neked...

A tömörítés pedig hiába egyforma, akkor sem lesz bitre pontosan ugyanaz az eredmény, ha átfedések / szignálok vannak a számok határán - azaz átmegy egy effekt processor alkalmazáson a zene)
---

ha nem akarod programra bízni a törlést, akkor elégedj meg annyival, hogy minden ugyanolyan dalt saját könyvtárba pakoljon, pl

6300 Sayuri - Phantasm Brigade (Phantasm Brigade) (1).mp3
6284 Sayuri - Phantasm Brigade (Phantasm Brigade) (2).mp3
6288 Sayuri - Phantasm Brigade (Phantasm Brigade) (3).mp3
6284 Sayuri - Phantasm Brigade (Phantasm Brigade) (4).mp3
6288 Sayuri - Phantasm Brigade (Phantasm Brigade) (5).mp3
6320 Sayuri - Phantasm Brigade (Phantasm Brigade) (6).mp3
6284 Sayuri - Phantasm Brigade (Phantasm Brigade).mp3

->
./Sayuri - Phantasm Brigade (Phantasm Brigade)/

(akár előadó szerint is lehet bontani a könyvtárszerkezetet)
aztán idővel majd csak kiszelektálod melyik verziók tetszenek