Latest:
- Sailfish OS and memory
- Hillshade tile server
- Statistics of OSM Scout for Sailfish OS
- Nebezpečný router
- Tree model with Silica components
By month:
- November 2021
- January 2019
- December 2017
- December 2016
- May 2014
- April 2014
- November 2013
- April 2013
- April 2011
- February 2011
- January 2011
- August 2010
- May 2010
- March 2010
- January 2010
- October 2009
- April 2009
- February 2009
- October 2008
- September 2008
- August 2008
- April 2008
- March 2008
- February 2008
Topic:
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>