Gå til innhold

Hente oppdateringer fra Facebook og Twitter


Anbefalte innlegg

Edit: har delvis løst problemet. Men trenger tips til kodeoptimalisering: https://www.diskusjon.no/index.php?showtopic=1235886&view=findpost&p=15829109

 

------------------------------------------------------------------------

 

På nettsiden min har jeg laget en egen tabell i mysql som lagrer og logger det meste som skjer på siden, feks om jeg laster opp et bilde eller når det kommer brukerkommentarer. Tabellen har kolonnene id,date,name,action,linkname,linkurl,image.

Den ser slik ut: http://www.truemetal.org/cirithungol/newsfeed.php

 

Det jeg ønsker er: istedetfor Twitter-widget'en til høyre, så vil jeg integrere hver tweet (twitter-post) i mitt eget system. Da trenger jeg å hente bilde, navn, status og tid for hver tweet. Det gjør ingenting om posten får twitter-design i min egen feed, bare rekkefølgen er sortert riktig. Tilsvarende ønsker jeg også å gjøre med facebook-gruppene/fansidene som er linket til nedenfor.

 

Jeg vet twitter har RSS/Atom-funksjon, jeg har aldri vært borti det og vet knapt hva det er. Kan det komme til nytte? Jeg vet facebook har et stort API og diger bok om facebookprogrammering, men om det er noen her som har vært borti facebookprogrammering, hadde det vært kult å blitt ledet i riktig retning.

 

Går det an å hente oppdateringer når noen poster nye innlegg på blogger/blogspot som omhandler temaet også?

 

Noen idéer ?

Endret av MikkelRev
Lenke til kommentar
Videoannonse
Annonse

MySpace har for øvrig en RSS-link på toppen av hver blog.

Takk for den! Så den når jeg klikket på vis alle blogger.

 

Fant den når jeg googlet selv. Den funker forsåvidt men har noen leie begrensninger. Kun Gir kun oppdateringer fra diskusjonstråder, ikke fra wallen. Kun fornavn på debattantene. Ingen profilbilde.

 

Takk for den. Gir kun oppdateringer for Uploads, ikke Recent Activity, men bedre enn ingenting.

 

Denne fikk jeg ikke til å funke. Prøvde: http://tools.microformatic.com/transcode/rss/hatom/http://www.last.fm/group/Cirith+Ungol/shoutbox

Da prøver den å laste ned en fil, en rss fil på 1 linje, kun dtd.

Lenke til kommentar

Jeg har klart å laste inn oppdateringer fra diverse kanaler med rss/atom. Alle oppdateringene kan beskues på http://www.truemetal.org/cirithungol/newsfeed.php.

Et annet problem nå er det går fryktelig treigt å laste siden. Den henter oppdateringer fra ca 10 kanaler nå, og jeg tipper det ikke blir bedre når jeg legger til feeds fra 10 kanaler til. Jeg trenger å optimalisere koden min. Hvordan gjør jeg det uten at det går ut over funksjonalitet? Jeg vet jeg kunne ha hentet feeds fra enkelte kanaler feks en gang i uken istedetfor ved hver refresh, men jeg vil at den alltid skal være up-to-date.

 

Slik fungerer koden (delvis pseudokode) foreløpig:

 

-Loop gjennom xml'en og hent ut variablene.

-Finnes feed'en fra før i db'en? Isåfall ikke legg til, bare oppdatert tiden.

-Ellers legg til feed'en.

 

NEWSFEED.PHP:
include twitterfeeds.php / myspacefeeds.php / etc


MYSPACEFEEDS/TWITTERFEEDS.PHP/ETC:
insertmyspacefeed(url.xml);

innsertmyspacefeed($file)
{
$xml = simplexml_load_file($file);
if ($xml === FALSE) exit('Error parsing xml');

foreach ($xml->channel->item as $property=>$value)
{
 if (!empty($value))
 {
    //Kode for å hente variablene $name, $action, $linkname, $linkurl og $image fra xml'en.
    //$linkurl=$value->link osv

		$sql="SELECT id
			FROM newsfeed
			WHERE name='$name'
			AND action='$action'
			AND linkname='$linkname'
			AND linkurl='$linkurl'
			AND image='$image'";
		$result=runquery($sql,"twitterfeeds.php/select_tweets");
		if(mysql_num_rows($result)>0)
		{
			$sql="UPDATE newsfeed
				SET date = '$date'
				WHERE id = ".mysql_result($result,0,"id");
			runquery($sql,"twitterfeeds.php/update_tweets");
		}
		else
		{
			$sql="INSERT INTO newsfeed (date, name, action, linkname, linkurl, image)
				VALUES ('$date', '$name', '$action', '$linkname', '$linkurl', '$image')";
			runquery($sql,"twitterfeeds.php/update_tweets");
		}

 }

}

 

Grunnen til at jeg har egen funskjon for hver av de forskjellige feedsene (en for myspace, en for twitter osv) er at xml'ene er bygd opp forskjellig og har i tillegg forskjellige elementnavn, så da er det ikke rett fram å kjøre en og samme funksjon for alle.

 

Grunnen til at den først søker (SELECT) for å se om feed'en finnes fra før, er at ellers, så vil den INSERT'e for hver gang du klikker inn på newsfeed.php. For det andre er det heller ikke nødvendig å vise hver gang jeg har redigert en side. Hender jeg oppdaterer en og samme side 99 ganger på rad, pga jeg ser en ekstra skriveleif eller noe, og da er det kun siste oppdatering som er av interesse. Derfor UPDATE.

Endret av MikkelRev
Lenke til kommentar

Sporringer i lokker pa den maten er aldri en god ide. Skalerer ekstreeemt darlig. Opprett en cron job som kjorer f.eks. hvert 15. minutt og legg til alle elementer som er mindre eller akkurat 15 minutter gamle. (Forutsatt at elementet inneholder noe form for timestamp) Tips er for ovrig a logge antall sporringer som kjores og hvor lang tid hver av disse bruker. Da er det ofte lettere a luke ut flaskehalser. Er du litt dreven prover du xdebug e.l.

Endret av Jonas
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...