Zenetár-rendezés és a Mixenet bővítmény

Projekt-áttekintés · BigX

Zenetár-rendezés és a Mixenet bővítmény

Két külön dolog készült ugyanabból a nyersanyagból: egy elemző eszközkészlet a saját gépre, és egy WordPress bővítmény a weboldalhoz. Ez a leírás mindkettőt végigveszi.

01A két ág

Közös bennük a zenetár a lemezen. Minden más külön.

A gépen fut

Zenetár-elemzés

Node.js parancssori eszközök. Katalogizál, duplikátumot keres, BPM-et számol, műfajt határoz meg és ID3 taget ír. A célja a helymegtakarítás és a rekordbox — nem a weboldal.

  • ✓ Katalógus és duplikátum-elemzés
  • ✓ Akusztikus ujjlenyomat
  • ✓ BPM minden trackre
  • ✓ Műfaj az ID3 tagben
  • ✓ Takarítás lefutott
A weboldalon fut

BigX Mixenet bővítmény

WordPress bővítmény: lejátszási listák, megszakítás nélküli lejátszó, kedvelés, megosztás, hallgatottsági statisztika, rádió-integráció. Nem tud a lemezen lévő tárról.

  • ✓ Kód kész, szintaxis ellenőrizve
  • ✓ Dokumentáció és adatvédelem
  • ✓ Git repó, GitHub-frissítés
  • ○ Éles WordPressen még nem futott
Ami összeköti őket

Egyetlen dolog: a CSV-fájlok. Az elemzés kiírja, mi van a lemezen, a bővítmény pedig be tudja olvasni. Nincs adatbázis-kapcsolat, nincs szinkron, nincs automatizmus. Ha a CSV-t nem viszed át, a két rész egymástól függetlenül működik tovább.

02Az elemzés eredménye

A takarítás lefutott. A fájlok a Lomtárba kerültek, nem véglegesen törlődtek.

7279
médiafájl
127
lejátszási lista
24,3 GB
felszabadítva
7277
BPM kiszámolva
6114
műfaj beírva
Állapot Fájl Méret
Elemzés előtt 8610 146,35 GB
Törölt felesleges másolat 1331 24,29 GB
Takarítás után 7279 122,06 GB

Hogyan találta meg a duplikátumokat

Öt szabály, csökkenő megbízhatósággal. A leglényegesebb az akusztikus ujjlenyomat: az magát a hangot hasonlítja, ezért olyat is megtalál, amit kézzel átneveztek.

Szabály Mire épül Csoport
Bit-azonos Méret → részleges hash → SHA-256 206
Ujjlenyomat A dekódolt hang spektruma 97
Előadó + cím + hossz ID3 tag, ±2 mp 638
Cím + hossz Fájlnév, ±2 mp 232
Rövid cím Óvatos, méret-ellenőrzéssel 6
Amiért a fájlnév számít, nem az ID3

A letöltő program néhány fájlnál felcserélve írta a mezőket: egy előadó öt különböző száma azonos „címet” kapott. A tag-alapú szabály mind az ötöt egybemosta volna. Ezért a gyengébb szabályok a fájlnévre épülnek — az a videó eredeti címéből jön, és megbízható.

03Műfaj a rekordboxhoz

A rekordbox az ID3 műfaj-mezőt olvassa. A tárban ez gyakorlatilag üres volt: 120 megvizsgált fájlból egyben szerepelt műfaj.

Négy forrásból dolgozik, és minden tracknél megjegyzi, honnan származik a műfaja — így utólag ellenőrizhető:

Forrás Mit jelent Megbízhatóság
mappanev A saját rendezés a lemezen erős
kiado Lemezkiadó a fájlnévben (Drumcode, Tronic, Suara) erős
lista tempo A lista medián BPM-je közepes
itunes Lekérdezés játékidő-ellenőrzéssel közepes

A BPM-számítás hangalapú: spektrális fluxussal keresi a dobütéseket, majd autokorrelációval a tempót. Az eredmény illeszkedik a mappanevekhez — a Hardtechno listára 152 BPM-et adott, a prog-ra 129-et.

Amit a gép nem tud

A tisztán hangalapú műfaj-felismerés az elektronikus alműfajokra nem megbízható. A techno, tech house, progressive és melodic közti különbség nem a spektrumban van, hanem a szerkezetben és a kontextusban. Ezért a mappanevek és a lemezkiadók a valódi forrás; a tempó csak támpont.

04Hogyan működik a bővítmény

Négy réteg. A lényeg a középső: a lejátszó egységes felületet ad három különböző forráshoz.

FORRÁSFeltöltött fájlMP3 a MédiatárbanYouTube-videóvideóazonosítóPodcast epizódPowerPress, ha vanEGYESÍTÉSZeneszámcím · előadó · hosszborító · forrásLEJÁTSZÁSLejátszási listarendezett sorrendLejátszósávnatív hang vagyYouTube motor20 mp utánVISSZAJELZÉSStatisztikatoplisták · kedvelésAzuraCast rádióönálló ág
A rádió szaggatott vonallal: az önállóan is működik, nem függ a listáktól.

Amit a lejátszó megold

Egy MP3-at a böngésző natív <audio> elemével kell lejátszani, egy YouTube-videót viszont az IFrame API-val. A két motor teljesen máshogy működik. A bővítmény egy közös felületet tesz föléjük — ugyanaz a play, seek, hangerő —, így a hallgató nem veszi észre, amikor a sor egyik fajtáról a másikra vált.

Mi számít lejátszásnak

Nem minden kattintás. Egy lejátszás akkor kerül rögzítésre, ha a hallgató legalább 20 másodpercet meghallgatott, és ugyanaz a hallgató 15 percen belül nem hallgatta már ugyanazt. A rendszer a ténylegesen lehallgatott időt méri, nem a lejátszó pozícióját — így a tekergetés sem hamisít.

05Rövidkódok

Ezeket bármelyik oldal vagy bejegyzés tartalmába be lehet írni.

Rövidkód Mit ad Paraméterek
[bigx_playlists] Listák rácsban per_page, mine
[bigx_playlist] Egy lista a számaival id
[bigx_top] Toplista metric, period, limit, title

A BigX Radio lejátszó már szerepel ezen az oldalon.

„Most szól” panel —
[bigx_editor] Listakezelő —
[bigx_top metric="plays"    period="week" limit="20" title="A hét slágerei"]
[bigx_top metric="likes"    period="all"  limit="10" title="Örök kedvencek"]
[bigx_top metric="trending" limit="15"    title="Most kapják fel"]

A trending nem összesít, hanem változást mér: az elmúlt 7 nap lejátszásait hasonlítja az azt megelőző 7 naphoz. Így nem a régi slágerek ülnek örökre az élen.

06Telepítés

A sorrend számít. A leggyakoribb hiba, hogy valaki a 2. lépés után rögtön a 6-ra ugrik.

  1. Mentés

    Fájlok és adatbázis. Új oldalnál is — öt perc, és megszünteti a kockázatot.

  2. Bővítmény feltöltése és aktiválása

    A zip-et a Bővítmények → Új hozzáadása → Bővítmény feltöltése menüponton át.

    Ellenőrzés: a /wp-json/bigx/v1/radio/nowplaying címnek JSON-t kell adnia.

  3. Médiafájlok feltöltése

    Média → Új hozzáadása. Ide kerülnek az MP3-ak, amiket le akarsz játszani.

    Enélkül a következő lépésnek nincs mire hivatkoznia.

  4. Zeneszámok létrehozása

    Egyesével a Zeneszámok menüben, vagy tömegesen a Katalógus-import fülön CSV-ből.

    Ez a lépés köti össze a feltöltött fájlt a lejátszóval.

  5. Lejátszási lista

    A Lejátszási listák menüben, vagy egy [bigx_editor] rövidkódos oldalon fogd-és-vidd módszerrel.

  6. Oldal a rövidkóddal

    Új oldal, a tartalomba:

    [bigx_playlists]

07Ha nem megy

Fentről lefelé, a leggyakoribb okkal kezdve.

Feltettem, aktiváltam, de nem látszik semmi a leggyakoribb

Valószínűleg működik, csak üres. A bővítmény egy keret — nem hoz magával zenét. Friss telepítésnél nincs egyetlen zeneszám és lista sem, így a [bigx_playlists] helyén jogosan nem jelenik meg semmi.

Ellenőrizd, hogy tényleg fut-e:

https://mixenet.bigxhost.hu/wp-json/bigx/v1/radio/nowplaying

Ha erre JSON-t kapsz, a bővítmény rendben van — folytasd a telepítés 3–5. lépésével.

Fehér képernyő az egész oldal helyett

Nevezd át FTP-n vagy a tárhely fájlkezelőjében a wp-content/plugins/bigx-mixenet mappát bármi másra. A WordPress a következő betöltésnél kikapcsolja, és minden visszaáll — nem kell mentést visszatölteni.

Utána nézd meg a PHP verziót: a bővítmény 7.4 vagy újabb verziót igényel.

A rövidkód szövegként jelenik meg

Két oka lehet:

  • A bővítmény nincs aktiválva
  • Kódblokkba írtad be a szerkesztőben — normál bekezdésbe kell
A rádió panel „offline”-t mutat

A beállítás alapból a radio.bigxhost.hu címre mutat. Ha a rádió épp nem ad, a panel nem ürül ki: a legutóbbi ismert állapotot mutatja „offline” jelöléssel. Az állomás azonosítója a BigX Mixenet → Beállítások oldalon módosítható.

Bekapcsoltam a megszakítás nélküli lejátszást, és szétesett az oldal

A Tartalmi konténer beállítás alapértéke #main-content, ami a Divi témára igaz — ezen az oldalon tehát jó. Más témánál más az azonosító, és rossz értékkel a navigáció nem találja, mit kell cserélnie.

Ha mégis gond van: kapcsold ki. A lejátszó enélkül is működik, csak oldalváltáskor újraindul.

A rekordboxban nem látszik az új műfaj

A rekordbox importáláskor egyszer olvassa ki a fájl tagjeit, és onnantól a saját adatbázisából dolgozik. Kell egy kézi frissítés:

Collection → Ctrl+A → jobb klikk → Reload Tag

A Reload Tag a beatgridet, hot cue-kat és a BPM-et nem bántja, de a fájlból jövő mezőket (cím, előadó, műfaj) felülírja. Ha valahol kézzel javítottad a címet a rekordboxban, az visszaáll — ezért érdemes először egy kisebb mappán kipróbálni.

08Adatvédelem

A bővítmény felhasználói adatot kezel, ezért valódi GDPR-kezelés került bele, nem csak egy tájékoztató szöveg.

Kérdés Válasz
Tárol IP-címet? Nem. Csak visszafejthetetlen kivonatot.
Tárol sütit? A bővítmény nem. A YouTube igen, ha videót játszol le.
Meddig őrzi? Alapból 400 nap, az adminban módosítható.
Átadja harmadik félnek? Nem.
Kivihető, törölhető? Igen, a WordPress beépített eszközeivel.

Bejelentkezés nélküli látogatónál az IP-cím és a böngésző-azonosító helyett azok egyirányú, oldalspecifikus kivonata tárolódik. Ebből az eredeti értékek nem állíthatók vissza, és az érték csak ezen az oldalon értelmezhető. Egyetlen célja, hogy ugyanaz a lejátszás ne számítson többször.

A törlési kérelemnél a kedvelések törlődnek, a lejátszások pedig névtelenítve lesznek — így a toplisták nem torzulnak el visszamenőleg, de az adat többé nem köthető senkihez.

09Biztonsági hálók

Minden veszélyes művelet mögött van visszaút.

Művelet Védelem
Zenetár takarítása Alapból csak listáz; élesben a Lomtárba tesz
Műfaj írása a fájlokba Mentés készül a régi értékekről, egy paranccsal visszaállítható
Bővítmény-hiba az oldalon A mappa átnevezése kikapcsolja
Rossz import Próbamenet alapból; ismétlésbiztos kulcs
Lista törlése Kukába kerül, nem véglegesen törlődik
Bővítmény eltávolítása A zeneszámok és listák tartalomként megmaradnak
A hangadat érintetlen

A műfaj-írás csak az ID3 tag-blokkot cseréli, a zenét nem kódolja újra. Mérésekkel ellenőrizve: a dekódolt hang hash-e bitre azonos marad a művelet után, és a cím, előadó, hangnem is megmarad. A fájl kb. 1 KB-tal lesz kisebb, mert a tag átrendeződik.