Nejnovější:
- Sailfish OS and memory
- Hillshade tile server
- Statistics of OSM Scout for Sailfish OS
- Nebezpečný router
- Tree model with Silica components
Podle data:
- listopad 2021
- leden 2019
- prosinec 2017
- prosinec 2016
- květen 2014
- duben 2014
- listopad 2013
- duben 2013
- duben 2011
- únor 2011
- leden 2011
- srpen 2010
- květen 2010
- březen 2010
- leden 2010
- říjen 2009
- duben 2009
- únor 2009
- říjen 2008
- září 2008
- srpen 2008
- duben 2008
- březen 2008
- únor 2008
Téma:
Informace o přehrávané skladbě v avataru
V dnešním světě internetu jsou jedním z nejběžnějších způsobů komunikace různá diskuzní fóra. Hodně z nich (především ta založená na phpBB) umožňují zobrazení tzv. avataru (či podpisu, chcete-li) pod každým příspěvkem uživatele, ve kterém může konkrétní uživatel o sobě mnohé prozradit. A co více o vás vypoví, než to jakou hudbu posloucháte?
Službu zobrazení informací o hudbě kterou posloucháte v malém obrázku nabízí například známý sociální server last.fm, který tyto informace může sbírat pomocí pluginu ve vašem hudebním přehrávači. Jeho možnosti mi ale moc nevyhovovaly, tak jsem se jednoho dne rozhodl napsat vlastní řešení. Přehrávač Amarok (pro KDE 3.5) který používám k tomu přímo vyzývá.
Odeslání informací z přehrávače na server
K tomuto účelu dobře poslouží předpřipravený script
nowPlaying.sh, který je možné stáhnout a nainstalovat z menu Amaroku
(Nástroje, Správce scriptů…). Tento bashový script je potřeba před
použitím trochu upravit. Především nastavit kam má informace odesílat.
Standartně je umístěn ve složce
~/.kde/share/apps/amarok/scripts/
moje úprava scriptu nowPlaying.sh
#!/bin/bash dropout="false" key="myKey" # define your SECRET_KEY (eg key="mykey") # zde napiste vase url url="http://www.karry.wz.cz/podpis/amarok.php?key=$key" while [ $dropout == "false" ]; do artist=`dcop amarok player artist` title=`dcop amarok player title` t=`dcop amarok player totalTime` album=`dcop amarok player album` playing=`dcop amarok player isPlaying` artist=${artist//&/%26} title=${title//&/%26} album=${album//&/%26} current="$title" currentPlaying="$playing" wget -q "$url&title=$title&time=$t&artist=$artist&album=$album&playing=$playing" -O - > /dev/null echo "send info wget -q $url&title=$title&time=$t&artist=$artist&album=$album&playing=$playing -O -"; while [ "$title" == "$current" ] && [ "$currentPlaying" == "$playing" ]; do ## && [ "$currentPlaying" == "$playing" ] sleep 10 current=`dcop amarok player title` currentPlaying=`dcop amarok player isPlaying` done done
Jak je vidět, script používá k získávání informací z Amaroku dcop, což je standartní systém na zasílání zpráv mezi aplikacemi používaný v KDE 3.5. Informace na zadané url zasílá jednoduše tím, že stáhne ze serveru php script s daty v parametru. Hodnota key slouží k ochraně před cizím zásahem do odeslaných dat. O spouštění scriptu se postará sám Amarok, když jej povolíte ve správci scriptů.
Uložení dat na serveru
Script amarok.php se na serveru stará pouze o ověření hodnoty key a o uložení informací do souboru.
<?php // key="myKey" &title=$title&time=$t&artist=$artist&album=$album&playing=$playing if ($_GET['key']=="myKey"){ $data = time()."\n"; $data .= $_GET['playing']."\n"; $data .= stripslashes($_GET['title'])."\n"; $data .= stripslashes($_GET['artist'])."\n"; $data .= stripslashes($_GET['album'])."\n"; $fp = FOpen("./amarok.dat","w"); FWrite ($fp, $data); FClose ($fp); }else{ Header("HTTP/1.0 401 Unauthorized"); echo "Unauthorized"; } ?>
Vygenerování avataru
Samotný script na vygenerování avataru je asi nejsložitější. V podstatě ale pouze načte pozadí avataru, přečte informace o přehrávané skladbě ze souboru, zapíše je na pozadí a výsledek odešle. Script navíc do avataru vypíše můj aktuální stav na Jabberu, který je zjišťován ze stránek mého Jabber poskytovatele, serveru jabbim.cz. Tento script si i s grafikou můžete stáhnout na konci přispěvku.
Při vkládání avataru do fóra může nastat jeden problém. V phpBB bývá vyžadován soubor s příponou jpg, nebo png. Script s příponou php odmítne vzít jako obrázek. To se dá vyřešit změněním přípony scriptu z php na jpg. Poté je ale nutné říci webovému serveru (Apache) aby s tímto souborem zacházel jako s php scriptem a protlačil jej php interpretem. Proto přidáme do suboru .htaccess následující řádky:
<Files podpis.jpg> ForceType application/x-httpd-php </Files>