Webbstatistik på skrivbordet med Piwik & Geektools

Piwik har jag skrivit lite om förut. Det är ett opensource web analys script (php/mysql) som man kan köra på sin egen webbserver.

Piwik har ett eget API som man kan få fram olika data från. Jag gjorde ett enkelt script som frågar efter besökare, unika besökare och actions. Actions är en sammanslagning av nedladdningar, sidvisningar och utgående länkar. Typ hur många saker en besökare klickar på. Jag visar denna info på skrivbordet med Geektools. Är du inte en Mac användare så finns det säkert någon annan lösning. På min Mac är också PHP version 5.3.4 installerat, php version 5.2 eller högre behövs för jag använder json_decode i mitt script. Nedan visas hur scriptet ser ut på skrivbordet.

Så här ser scriptet ut för att fråga Piwiks API om dessa uppgifter.

$myworld_json = file_get_contents('URL_TO_YOUR_PIWIK_INSTALLATION/index.php?module=API&method=VisitsSummary.get&idSite=3&period=day&date=today&format=JSON&token_auth=YOUR_API_TOKEN');

$myworld_obj = json_decode($myworld_json);

$myworld_action_json = file_get_contents('URL_TO_YOUR_PIWIK_INSTALLATION/index.php?module=API&method=VisitsSummary.getActions&idSite=3&period=day&date=today&format=JSON&token_auth=YOUR_API_TOKEN');

$myworld_action_obj = json_decode($myworld_action_json);

print "myWorld.se - Visits: " . $myworld_obj->{'nb_visits'} . ", Unique: " . $myworld_obj->{'nb_uniq_visitors'} . ", Actions: " . $myworld_action_obj->{'value'};

Svaren får man i JSON och beroende på vad man skickar med i urlen så kan man få daglig, veckovis, månadsvis statistik. I exemplet ovan så frågar jag bara efter daglig statistik.

&method=VisitsSummary.get&idSite=3&period=day&date=today
&method=VisitsSummary.get&idSite=3&period=week&date=today


Ersätter man &period=day med &period=week i exemplet ovan får man veckovis rapportering. &method anger vilken statistik man frågar efter, VisitsSummary.get är olika besöksstatistik. &idSite=3 är vilken webbsida man vill ha statistik för. Jag har Piwik installerat på 5-6 olika webbar och myWorld.se har id 3. &date=today är vilken dag man frågar efter. today, yesterday eller YYYY-MM-DD är tillåtna.

Geektools sätter man upp som vanligt. Command pekar på scriptet, börja med php så scriptet körs med php. Sen kan det vara bra att sätta en längre refresh så man inte frågar var 3’e sekund. 1200 sekunder är 20 minuter. Timeout satte jag på 8 sekunder så det avbryts rätt snabbt om jag tex inte har någon internet förbindelse.

Viking_Olof skriver twitter historia

I början av sommaren ville jag lära mig lite om Twitters api. Viking_Olof som retweetar och postar länkar från utvalda rss feeds (postar saker om twitter/fb/html5/css3/jquery) blev resultatet av det. För någon vecka sen postade han sin 15.000 tweet. Lyckligtvis så lyckades jag få en screen på just den tweeten. Viking_olof körs från min server dator här hemma och jag har inte kollat till han så mycket de senaste månaderna vilket har resulterat i att vissa funktioner gått sönder. Nu kan han inte retweeta så det stängde jag av. Tanken är att jag ska få till en liten smartare retweet funktion som inte retweetar så mycket spam/affiliate/sälj länkar.

Viking_Olof har fått mer followers än jag kunde tänka mig. Vissa av dom är spam konton, de värsta har jag blockat manuellt men jag skulle också vilja få till en funktion som kan göra det automatiskt. Tex om man märker att ett konto postar många spam/sälj länkar så slutar han att retweeta tweets från den användaren. Vi får se om han lyckas komma upp i 20-25 tusen tweets till 1års dagen.

Ny version av Dropbox upload form för WordPress

Inställningar för WordPress pluginet Dropbox upload formFör några veckor sen var jag på WordCamp Stockholm. På hacker natten tittade jag över mitt WordPress plugin: Dropbox upload form. Tyvärr så verkade det inte fungera riktigt i WordPress 3.0. Nu kommer jag inte ihåg vad som var trasig men det var nått med php classen jag använde. Dropbox har nu också en egen API. Det hade dom inte när jag gjorde pluginet. Jag tittade lite på vad man kunde göra med API och bestämde mig för att använda det. Det finns en nackdel med den nya API’n om man gör en webbapp, man måste registrera en egen app för att få en API nyckel.

För att skaffa en API nyckel som kan användas till mitt plugin gör man följande.

  • Registrerar en ny Dropbox app
  • Hitta på ett namn och välj webb som platform
  • Kopierar sen app nycklarna, längst ner. Både Key och Secret behövs.
  • Klistrar in Key och Secret i inställningarna för pluginet.
  • Nu ska pluginet fungera som förr fast med Dropbox API

Lite jobbigare installation blir det men efter man satt upp allting så fungerar det bra. Kanske kommer det lite mer funktioner till pluginet snart. Jag hade först en tanke på att lägga till ett val att skicka ut ett mail till valfri adress när en ny fil laddas upp. Nu blev det bara en omskrivning av uppladdnings funktionen så den använder Dropbox API istället för den tidigare hackiga lösningen.

Olga & Olof sitting in a tree

För några dagar sen startade jag Twitter boten Olof. Idag har den 33 followers, 341 tweets och bit.ly har registrerat 237 länk klick. På några dagar har Olof bättre statistik än mitt Twitterkonto 🙁

Just nu styrs Olof med cron och ett phpscript (döpt till Olga) från min linux dator. Just nu gör den inte så mycket förutom att Tweetar poster från olika rss feeds. Olof följer också tillbaka alla som följer han och skickar DM till followers som retweetar hans tweets. Tanken är att göra den lite smartare så han kan retweeta intressanta tweets från followers. Jag har även funderingar på andra funktioner som tex rekommendera folk på followfriday som har nämnt/retweeta Olof mest under veckan.

Ideen till Olof föddes med att jag ville göra nått roligt med Twitter och samtidigt lära mig API programmering. Jag antar att jag kommer att blogga ibland om Olofs statistik och funktioner.

Paul lär oss PHP5 och SimpleXML

Paul Stamatiou har skrivit en introduktion till hur man använder PHP 5 och SimpleXML för att läsa data ur xml filer. Man kan använda det till att utbyta information från olika webbtjänster som Flickr, Google maps eller Twitter för att ta några exempel.