juli 2009

You are currently browsing the monthly archive for juli 2009.

Det tog av någon anledning lång tid för mig att fatta att PHP har utmärkta inbyggda funktioner för att läsa XML. Så här gör man:

Först måste vi ha nått att parsa, så vi hämtar väderleksrapporten för Södertälje hos Yahoos väderapi:

$data = file_get_contents('http://weather.yahooapis.com/forecastrss?p=SWXX0026&u=c');

När XMLen nu ligger i variabeln $data fixar vi en parser och ber den lägga informationen i en array:

$parser = xml_parser_create_ns();
xml_parse_into_struct( $parser, $data, $values );

Detta lägger informationen som finns i varaibeln $data i arrayen $values. Nu kan vi komma åt värdena genom vanliga indexeringsnotation, i det här fallet hämtar vi temperaturen:

print_r( $values[48][attributes][TEMP] );

Slutligen stänger vi parsern:

xml_parser_free( $parser  );

Hela koden ser ut så här:

<?php
$data = file_get_contents('http://weather.yahooapis.com/forecastrss?p=SWXX0026&u=c');
$parser = xml_parser_create_ns();
xml_parse_into_struct( $parser, $data, $values );
print_r( $values[48][attributes][TEMP] );
xml_parser_free( $parser  );
?>

Ett hett tips är att använda print_r() på hela arrayen, på så vis kan man lätt få reda på vilken information som finns och vilka indexeringsnycklar som kan komma åt informationen:

print_r( $values );

Läs även andra bloggar om ,

I dag blir det ingen guide, utan mer en fråga. Efter att ha läst det här började jag fundera. Hur gör man för att ladda hem alla torrent-filer från TPB? Om man hade en lista över alla URL:er, skulle det vara trivialt. Hur får man då en lista över alla URL:er till alla torrent-filer på TPB? Min första tanke var att hämta alla länkar som man får via länken "Bläddra bland torrenter" på TPB. Jag skrev då ett skript som hämtar alla sådana länkar:

#!/bin/bash
it=100
while [[ $it -lt 700 ]]; do
 
i=0
    while [[ $i -lt 100  ]] ; do
      xmlstarlet sel --net --html -T -t -m "//*[local-name()='a']" -o 'NAME: ' -v "translate(. , '&#10;', ' ')" -n -o 'LINK: ' -v @href -n -n
      "http://thepiratebay.org/browse/$it/$i/3" | grep torrent | grep -v phpAdsNew | sed -e 's|LINK: /|http://thepiratebay.org/|g'
      -e 's|LINK: http://|http://|g' | grep ".TPB.torrent" >> tpb.links
      let "i=i+1"
      sleep 1s
  done
  let "it=it+100"
done

Tyvärr verkar inte detta funka, det verkar som om TPB har lagt upp en begränsning som gör att man bara får hämta 100 sidor med 30 länkar vardera från varje kategori (därav begränsningarna i while-looparna i skriptet), det innebär i praktiken att jag bara får 17970 länkar totalt tillbaka från skriptet. Bry er för övrigt inte så mycket om själva skriptet, det är ett ful-hack med massa cruft, eftersom jag bara ville kolla lite snabbt hur man kan göra.

Så finns det någon som är bättre än mig på TPB som vet hur man kan göra får att få tag på fler resultat? Svara gärna i kommentarerna om ni kommer på nått.

Se även:

Läs även andra bloggar om , ,

Via en trådubuntu-se.org  (tack för tipset DMZ och tack Rasmus för att du tipsade mig!) fick jag reda på att det finns en revision av despotify som funkar utan premiumkonto: revision 291. Så här gör du för att köra, öppna en terminal och kör:

svn checkout --revision 291 https://despotify.svn.sourceforge.net/svnroot/despotify despotify

Därefter måste du göra en liten ändring i koden:

cd despotify/
nano src/lib/session.c

Leta efter session->client_revision = 44764; (sök genom att trycka ctrl+w) och ändra så att det i stället står:  session->client_revision = 99999;

Spara genom att tryck ctrl+x och välj "j". Nu kan du kompilera och köra:

make
sudo make install

Därefter kan du starta despotify i terminalen genom att skriva:

simple användarnamn lösenord

Klart!

 

Om du inte vill skriva ditt lösenord synligt i terminalen tipsar Konservburk om en skalfunktion i tråden på Ubuntu-se, lägg bara koden:

despotify(){ simple "${1:-$(read -p "user: " user; printf "$user")}" "${2:-$(stty -echo; read -p "pass: " pass; stty echo; printf "$pass")}"; }
 

i ~/.bash_aliases:

nano .bash_aliases

Klistra in med ctrl-shift-v och spara genom att trycka ctrl+x och svara "j" sedan kan du starta despotify genom att ange "despotify" i terminalen.

Information om beroenden med mera finns på : http://despotify.se/

Se även:

Läs även andra bloggar om , ,

Switch to our mobile site

Page optimized by WP Minify WordPress Plugin