Twitter op je website via RSS

Door Justin S, 11 jaar geleden, 18.438x bekeken

Dit is een simpel script wat via RSS je timeline opvraagt vanaf de Twitter server. Je kan bij de variabele userid je screenname invullen zoals je gebruikt op twitter.

Voor de rest kan je in de foreach de output aanpassen. Ik heb dit zelf in een div gedaan. En heb ook de username gescheiden van het bericht om zo ook te kunnen linken naar het twitter profiel.

Let er wel op: Door de RSS feed geeft hij maximaal 150 tekens als bericht terug. Het aantal tekens is inclusief: "username:". HIj kort de tweet automatisch in en plaatst een paar puntjes (truncated string).

Gesponsorde koppelingen

PHP script bestanden

  1. plugin.twitter.php

 

Er zijn 29 reacties op 'Twitter op je website via rss'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Pim -
Pim -
11 jaar geleden
 
0 +1 -0 -1
En waarom zou je niet de twitter api gebruiken?
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
Dat kan, maar dan moet je oAuth gebruiken, zelfs voor iets simpels als het ophalen van je eigen tweets. Dit is makkelijker.
Ceasar Feijen
Ceasar Feijen
11 jaar geleden
 
0 +1 -0 -1
dit is iets sneller

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    $userid
= '';
    $feed   = 'http://twitter.com/statuses/user_timeline/'.$userid.'.rss';
    $limit  = 5;
    $c      = 0;

    $ch = curl_init();
    $timeout = 5; // set to zero for no timeout
    curl_setopt ($ch, CURLOPT_URL, $feed);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $feed = curl_exec($ch);
    curl_close($ch);
    $twitter = new SimpleXMLElement($feed);
?>
Karl Karl
Karl Karl
11 jaar geleden
 
0 +1 -0 -1
Waarom niet gewoon direct door simplexml de data laten ophalen?
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
@caeser: Klopt! Maar hoeveel scheelt het?

@Karl: Hoe bedoel je? De explode?
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
Een volle seconde. Dat scheelt wel qua performance. Thanks voor de tip! Ga het vanavond even aanpassen!
Karl Karl
Karl Karl
11 jaar geleden
 
0 +1 -0 -1
Je kunt aan simplexmlelement al direct de url meegeven als parameter.
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
Op die fiets. Ja klopt, Vond dit alleen iets overzichtelijker.

@Caeser: script aangepast!
Maurice vB
Maurice vB
11 jaar geleden
 
0 +1 -0 -1
Hoe kan het dat ik deze fout krijg (op mijn server)

'Warning: Invalid argument supplied for foreach() in /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Twitter.php on line 73'

? (http://mbdesigner.nl/Twitter.php)
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
Goede userid en goede feedurl?
Maurice vB
Maurice vB
11 jaar geleden
 
0 +1 -0 -1
Het userid klopt.. Teminste, ik heb hem van twitter door op het RSS icontje te klikken.

Edit: Ik had 'Protect my tweets' aan staan. Dit was het probleem.
Ceasar Feijen
Ceasar Feijen
11 jaar geleden
 
0 +1 -0 -1
Zo is het nog makkelijker. Hoef je het userid niet meer te achterhalen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$feed
= 'http://twitter.com/statuses/user_timeline.rss?screen_name='.$userid;
?>


ipv id nu dus gewoon je account naam invullen
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
Prima, dat wist ik niet! Inmiddels aangepast :-)...
Anja van Steenbrugge
Anja van Steenbrugge
11 jaar geleden
 
0 +1 -0 -1
Leuk dat twitter scripts weer werkt.
Ik heb ook werkend online http://cooltennis.nl/twitter.php

Heb volgend vraag:
Is het mogelijk zonder @nicknaam bijvoorbeeld: '@nicknaam hoe was je feest? 09-01-2011 16:54'

Dus alleen voor gewone twitter zonder persoon te reageren te voorschijnt in twitter overzicht.

Ik hoop mijn vraag duidelijk is wat ik precies bedoel.
John Doe
John Doe
11 jaar geleden
 
0 +1 -0 -1
Het is inderdaad slimmer om de twitter API te gebruiken, dit wil twitter zelf ook het liefst. Ikzelf zou eerder json gebruiken van de twitter API i.p.v. xml.
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
@Anja, je bedoelt dat je bij een mention, dus '@nickname hoe was je feest' dat hieruit @nickname niet wordt weergegeven. Je zou string kunnen exploden op de volgende manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$tweettext = explode('@', $tweet[1]);
echo $tweettext[1];


Zo echo je het bericht na de nickname. Je moet het wel zelf even testen.


@Daniel: Je kan inderdaad ook de Twitter API gebruiken, echter vond ik deze vrij zwaar om alleen je eigen tweets mee weer te geven. Voor een uitgebreidere set functies is de Twitter API wel aan te raden.
Anja van Steenbrugge
Anja van Steenbrugge
11 jaar geleden
 
0 +1 -0 -1
@Justin
Uhm ja zoiets, maar het vraag ook niet word laten zien 'hoe was je feest'. Dus gaat meer om mijn eigen twitter te voorschijn en niet waar ik op anderen reageer. Kan dat?

Zo niet ja dat zal wel mogelijkheden zijn om nicknamen eruit te halen waarvan de vraag wel staat. Want ik vind het niet zo passend voor als je op website plaats dat andere het leest meer bedoeld over eigen twitter berichten. Vandaar dit met idee ben gekomen.

Ik hoop duidelijk hebben kunnen uitleggen welk richting ik bedoel.
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
Anja, ik snap echt totaal niet wat je bedoelt. Probeer eens hele zinnen te maken?
Anja van Steenbrugge
Anja van Steenbrugge
11 jaar geleden
 
0 +1 -0 -1
Ik probeer ff overzicht maken van voorbeeld misschien dat hier wat uitkomen.

Twitter zoals altijd:

Bed zoeken @ Thuis
tijd / datum
--
@piet Gaat het morgen afspraak door?
tijd / datum
--
@justin Dit is een voorbeeld twitter
tijd / datum
--
Morgen weer werken, vandaag vrije dag. @ Thuis
tijd / datum
--


Het bedoeling van mijn idee:
Bed zoeken @ Thuis
tijd / datum
--
Morgen weer werken, vandaag vrije dag. @ Thuis
tijd / datum
--

Als je het verlijkt, valt de nicknamen twitter, waar je opreageert, eruit.

Ik hoor het wel.
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
Je moet kijken of de tweet begint met een @, dat doen alle mentions natuurlijk.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$str = strpos($tweet[1], '@');

// En dan in de while waar de berichten uitgeladen worden direct na de {

if($str === false) {
 // echo tweet
} else {
 // doe niks.
}


Je zal zelf een code moeten bedenken om dan aan de 5 tweets te komen, aangezien je nu zelf tweets ertussenuit haalt.

Open even een topic als je nog meer vragen hebt of als het niet lukt.
Anja van Steenbrugge
Anja van Steenbrugge
11 jaar geleden
 
0 +1 -0 -1
ik heb het als goed is het kunnen aanpassen, en dan krijg ik na update test deze erorr fout.


Warning: Invalid argument supplied for foreach() in /home/cooltennis/domains/cooltennis.nl/public_html/twitter.php on line 96

Dit staat op mijn regel 96
foreach($twitter->channel->item as $entry
Justin S
Justin S
11 jaar geleden
 
0 +1 -0 -1
Dan kan je home_timeline niet opvragen via de rss feed.. Zie mijn vorige post.
Anja van Steenbrugge
Anja van Steenbrugge
11 jaar geleden
 
0 +1 -0 -1
Ik heb ze ff weer terug gezet zoals eerst was, en de nieuwe stuk van jou bij gezet. Zie ik nog steeds de namen in. Dus ik denk ff maar topic hier voor open maak. ;)
Sjors v
sjors v
11 jaar geleden
 
0 +1 -0 -1
ik wou graag dat als iemand foto's tweet dat deze ook zichtbaar werden.
dus ik heb dit bedacht.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
$c
++;
            $tweet    =    explode(':', $entry->title, 2);
?>


word :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
$c
++;
            $tweet    =    explode(':', $entry->title, 2);
            
            $tweet[1] = formatlinks($tweet[1]);
            $tweet1 = $tweet[1];
            $url = explode(''',$tweet[1]);
            $tweet1 = str_replace('
<a href='http://yfrog.com/gy','<br><a href=''.$url[1].'' target='blank'><img src='http://desmond-cf1.yfrog.com/scaled.php/0/610/',$tweet1);
            $tweet1 = str_replace('<a href='http://yfrog.com/gz','<br><a href=''.$url[1].'' target='blank'><img src='http://desmond-cf1.yfrog.com/scaled.php/0/611/',$tweet1);
            $tweet1 = str_replace('<a href='http://yfrog.com/h3','<br><a href=''.$url[1].'' target='blank'><img src='http://desmond-cf1.yfrog.com/scaled.php/0/615/',$tweet1);
            $tweet2    =    explode('/',$tweet1);
            if($tweet2[5] == 'desmond-cf1.yfrog.com'){
                $tweet3 = str_replace('j' target='_blank'>','.jpg/640/640' width='500' alt='',$tweet1);
                $tweet3    =    explode('''
,$tweet3);
                $tweet3 = $tweet3[5];
                $dimensions = getimagesize('$tweet3');
                if ($dimensions[0] > 500){$dimensions[0] = 500; }
            $tweet[1] = str_replace('j' target='_blank'>','.jpg/640/640' width=''.$dimensions[0].'' alt='',$tweet1);
            $tweet[1] = str_replace('
</a><h1></h1>','' />',$tweet[1]);
            $tweet[1] = stripslashes($tweet[1]);
            $tweet[1] = $tweet[1].'</a>';
            }

?>


maar dit lijkt me nog al omslachtig.
twitter zet er als maar gy,gz,h3 enzovoort voor.
weet iemand hier iets handigers voor ?
Roel van Daele
Roel van Daele
10 jaar geleden
 
0 +1 -0 -1
Kan het kloppen dat dit script niet draait op de localhost? Ik heb namelijk het script geprobeerd op mijn wesite (localhost) en enkel de gebruikersnaam aangepast. Het werkt niet.
Gerhard l
gerhard l
10 jaar geleden
 
0 +1 -0 -1
Werkt bij mij localhost niet, webserver wel ;) http://nubtu.be/phphulp
Roel van Daele
Roel van Daele
10 jaar geleden
 
0 +1 -0 -1
Dus dan hoef ik niet te vrezen aan het script, maar even een domein aanschaffen :)?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Gerhard l
gerhard l
10 jaar geleden
 
0 +1 -0 -1
Juist, het script werkt in ieder geval.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. plugin.twitter.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.