experimental: twitter2rss (not included)
This commit is contained in:
parent
42e6cc26ae
commit
584c0888dd
1 changed files with 115 additions and 0 deletions
115
twitter2rss.php
Executable file
115
twitter2rss.php
Executable file
|
@ -0,0 +1,115 @@
|
|||
<?php
|
||||
/*
|
||||
* Récupération du flux RSS d'un compte Twitter
|
||||
* Passez le nom du compte en Paramètre. Exemple: http://monsite.com/twit2rss.php?name=Craftbukkit
|
||||
* 2013 - by Tronics
|
||||
* -- ajout exclusion de réponses par Mitsu >> suggéré pour Projet Autoblog
|
||||
*/
|
||||
|
||||
if (!isset($_GET["name"]))
|
||||
die ();
|
||||
|
||||
$name = $_GET["name"];
|
||||
$str = file_get_contents("https://twitter.com/$name");
|
||||
|
||||
$nb = preg_match_all('%<div class="tweet original-tweet(.*)'.
|
||||
'data-tweet-id="(?P<id>\d+)"(.*)'.
|
||||
'(data-retweet-id="(?P<retweetid>\d+)"(.*))?'.
|
||||
'data-screen-name="(?P<name>[^"]+)"(.*)'.
|
||||
'<img class="avatar js-action-profile-avatar" src="(?P<avatar>[^"]+)" alt="(?P<fullname>[^"]+)">(.*)'.
|
||||
'data-time="(?P<created>\d+)"(.*)'.
|
||||
'<p class="js-tweet-text tweet-text">(?P<message>.*)</p>'.
|
||||
'%sU', $str, $arr);
|
||||
|
||||
function parsemessage($message)
|
||||
{
|
||||
$message = preg_replace('%<a href="/([^"]+)"([^>]+)>%', '<a href="https://twitter.com/$1" class="twitter_account">', $message);
|
||||
$message = preg_replace('%<s>(@|#)</s><b>([^<]+)</b>%', '$1$2', $message);
|
||||
$message = preg_replace('%<a href="http://t.co/[^"]+" rel="nofollow" dir="ltr" data-expanded-url="([^"]+)" class="twitter-timeline-link" target="_blank" title="[^"]+"%', '<a href="$1" class="twitter_link"', $message);
|
||||
$message = preg_replace('%<span class="[^"]+">([^<]+)</span>%', '$1', $message);
|
||||
$message = preg_replace('%<span class="tco-ellipsis"> …</span>%', '', $message);
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
function parsetitle($message)
|
||||
{
|
||||
$message = preg_replace('%<a ([^>]+)>https?://([^/]+)/[^<]*</a>%', '[$2]', $message);
|
||||
$message = strip_tags($message);
|
||||
return $message;
|
||||
}
|
||||
|
||||
$fullname = "?";
|
||||
$updated = "";
|
||||
if ($nb !== false)
|
||||
{
|
||||
for ($i = 0; $i < $nb; $i++)
|
||||
{
|
||||
$mname = $arr["name"][$i];
|
||||
$mfullname = $arr["fullname"][$i];
|
||||
if ($updated == "")
|
||||
$updated = date(DATE_ATOM, $arr["created"][$i]);
|
||||
|
||||
if ($mname == $name)
|
||||
{
|
||||
$fullname = $mfullname;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
header('Content-type: application/xml; charset=UTF-8', true);
|
||||
echo '<?xml version="1.0" encoding="utf-8"?' . '>' . PHP_EOL;
|
||||
?>
|
||||
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
|
||||
<title>Twitter / <?php echo $name ?></title>
|
||||
<id>tag:twitter.com,2013:Status:<?php echo $name ?></id>
|
||||
<link type="text/html" rel="alternate" href="http://twitter.com/<?php echo $name ?>"/>
|
||||
<link type="application/atom+xml" rel="self" href="http://<?php echo $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] ?>"></link>
|
||||
<updated><?php echo $updated ?></updated>
|
||||
<subtitle>Twitter de <?php echo $fullname ?>.</subtitle>
|
||||
<?php
|
||||
if ($nb !== false)
|
||||
{
|
||||
for ($i = 0; $i < $nb; $i++)
|
||||
{
|
||||
$message = parsemessage($arr["message"][$i]);
|
||||
$mname = $arr["name"][$i];
|
||||
$mfullname = $arr["fullname"][$i];
|
||||
$avatar = $arr["avatar"][$i];
|
||||
$id = $arr["id"][$i];
|
||||
$created = date(DATE_ATOM, $arr["created"][$i]);
|
||||
|
||||
$rt = "";
|
||||
if ($arr["retweetid"][$i] != "")
|
||||
$rt = "RT <a href=\"https://twitter.com/$mname\">@$mname</a> : ";
|
||||
|
||||
$title = htmlspecialchars(parsetitle($rt . $message));
|
||||
|
||||
$header = "<img src=\"$avatar\" alt=\"$mname\"/> $mfullname (<a href=\"https://twitter.com/$mname\">@$mname</a>)<br/>\r\n";
|
||||
$footer = "<br/>\r\n<a href=\"https://twitter.com/$mname/status/$id\">Afficher la conversation</a>";
|
||||
$message = "$header$rt$message$footer";
|
||||
$message = htmlspecialchars($message);
|
||||
if(substr($title, 0, 1) !== '@') { // exclude response
|
||||
echo <<<HTML
|
||||
<entry>
|
||||
<title>$title</title>
|
||||
<content type="html">$message</content>
|
||||
<id>tag:twitter.com,2013:https://twitter.com/$name/status/$id</id>
|
||||
<published>$created</published>
|
||||
<updated>$created</updated>
|
||||
<link type="text/html" rel="alternate" href="https://twitter.com/$name/status/$id"/>
|
||||
<link type="image/png" rel="image" href="$avatar"/>
|
||||
<author>
|
||||
<name>$name</name>
|
||||
<uri>https://twitter.com/$name</uri>
|
||||
</author>
|
||||
</entry>
|
||||
HTML;
|
||||
} // end exclude response
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
</feed>
|
||||
|
Loading…
Reference in a new issue