k47.cz
výběr kolo foto makro povídky kultura
koronavirus TECH ▞▞ 🞄⬤🞄 | twitter RSS
««« »»»

Bandcamp explorer

4. 9. 2021 — k47

Ban­camp neměl RSS. Teď ho má.

Band­camp je jeden z těch mo­der­ních webů plat­fo­rem, které se ve své ne­ko­nečné moud­rosti roz­hodly ig­no­ro­vat RSS. Proč se zdr­žo­vat s uni­ver­zálně pod­po­ro­va­ným stan­dar­dem, který lidem umož­ňuje sle­do­vat no­vinky od jejich ob­lí­be­ných skupin a žánrů, tím je dostat zpátky na sajtu a dát jim mož­nost utra­tit pár €€€ za nové album, ze kte­rých si band­camp vezme svých pár pro­cent? Ne, to dává příliš velký smysl. Band­camp je plat­forma & plat­formy si hrají na vlast­ním pí­sečku, pro­tože proto.

Tohle jsem už jednou řešil. Někde na k47čce se dá najít RSS export pro­dukce vy­bra­ných post-rocko­vých a post-me­ta­lo­vých skupin. Co kdy­bych vzal scra­po­vací kód, mírně ho roz­ší­řil do podoby robota, který vy­tr­vale crawluje celý band­camp a po­skytne RSS feed pro každou sku­pinu a každý tag? Proč ne?

Tak přesně to je band­camp ex­plo­rer – jed­no­du­chá věc, která ve stro­hém UI nabízí pře­hled nově vy­da­ných alb, jejich export jako RSS a nějaké drob­nosti navíc.

Jed­no­du­ché, co? Ano i ne. Záhy se uká­zalo, že na band­campu je víc alb než na­zna­čo­valy rané odhady. První kom­pletní crawl vy­š­ťou­ral 890000 alb, EP a single tracků od 87000 umělců. Navíc zcela jistě nejde o kom­pletní obraz všeho, co se tam dá najít, tím jsem si jistý.

Od té doby crawler (s pře­stáv­kami) běží a ob­je­vuje další obsah, nové sku­piny, nové umělce, nová alba. Celé je to di­men­zo­vané tak, aby to běželo na ma­lič­kém Raspberry Pi s 1 GB RAM. Nejde o žádný velký stroj, do­konce by se dalo říct, že vý­ko­nem a pro­středky jde o pravý opak, menší než běžný mobil. Pravda, ale crawler/ge­ne­rá­tor se tam s tro­chou pomoci vejde a má do­sta­teč­nou re­zervu, aby ne­pře­ká­žel ostat­ním pro­ce­sům, co tam běží. Bylo po­třeba udělat ně­ko­lik za­jí­ma­vých op­ti­ma­li­zací, co se paměti týká, a na divoké pokusy padl nějaký ten večer.

Všechno běží na PHP – jak proces ge­ne­ru­jící da­ta­bázi a tak i webový skript – a to není jazyk zrovna pro­slulý svou úspor­ností. Pro do­sta­tečně mo­ti­vo­va­ného děl­níka to ne­před­sta­vuje pro­blém, cíl je jasný a musí se ho do­sáh­nout za každou cenu, ná­sledky budiž pro­klety. Ex­pe­ri­men­to­vání uká­zalo, že dva nej­dů­le­ži­tější triky jsou: ob­jekty re­pre­zen­to­vat jako lehce se­ri­a­li­zo­vané stringy (stačí atri­buty spojit a od­dě­lit \0) a po­u­ží­vat línou ma­te­ri­a­li­zaci, ale vy­hý­bat se při ní po­u­žití yieldClosure, které se­že­rou pře­kva­pivá kvanta paměti. Shr­nuto, pod­tr­ženo: když zkusím do­sta­tečné množ­ství stu­pid­ních nápadů, jeden z nich bude fun­go­vat.

Crawler jede při­mě­řeně po­ma­lým tempem. Vy­chází to, že by měl objet celý band­camp jednou za týden. Crawlo­vání běží v ná­hod­ném pořadí a ak­tu­a­li­zace nemají žádné ga­rance nebo limity, jen ty sto­chas­tické ve stylu, že když hodím kost­kou mno­ho­krát, even­tu­álně padne každé číslo a každé sku­pina bude even­tu­álně ak­tu­a­li­zo­vaná.

A to je všechno: „band­camp ex­plo­rer“ je nápad, který jsem měl před ±půl rokem a z důvodů mimo moji kon­t­rolu ožívá až teď. A pro­tože ho sám po­u­ží­vám, bude mě to mo­ti­vo­vat, ho držet v chodu.


+1: V tes­to­va­cím pro­vozu jsem sle­do­val pár tagů a už jsem v nich našel pár nových & za­jí­ma­vých věcí. Třeba Some Became Hollow Tubes. Kla­sická kon­ste­lace alba: Dva tracky, každý má 17 minut, hudba je ne­kenčná, ale stále vře a nikdy ne­začne nudit (à la Wes­tern Lands).

píše k47 & hosté, ascii@k47.cz