首页 归档 标签 关于

获得腾讯微博的信息


723 3 167.5k

熟悉我的人都知道我之前用的是嘀咕,但是自从嘀咕转型后就没怎么去用过了。现在以邪恶的企鹅微博为主,但是一直以来腾讯微博的调用是个麻烦事,它的微博秀使用iframe标签来嵌入的,让人很蛋疼,不能去修改它的显示样式,完全不能和博客同风格。前段时间开放平台中放出了RSS和JSONP的地址,这样的话就能够订阅到最新的消息了。

开始告诉你们怎么折腾吧,首先你要有两个QQ,第一个是你当前用的,第二个随便什么都可以。然后用你第二个QQ去开通微博,收听你但前用的微博,注意,只能收听你自己一个,那些什么推荐收听的V都跳过。最后你再进入这里,获得JSONP的地址。下面给出关键的代码部分。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function get_qq_mirco_blog_info($format = '<a href="{permalink}">{content}</a>',$num = 20)
{
$qqRSS = '这里填写JSONP地址'; //注意:是第二个QQ的JSONP地址
$contents = file_get_contents($qqRSS);
$str1 = strpos($contents,'[');
$str2 = strpos($contents,'],"fans":');
$json = substr($contents,$str1, $str2 - 17);//这个地方不知道是否通用
$json = stripslashes($json);
$json = json_decode($json, true);
for ($i=0;$i&lt;$num;$i++){
$content = $json[$i]['content']; //内容
$time = date("n月d日 H:i",$json[$i]['timestamp']); //时间
$permalink = "http://t.qq.com/p/t/".$json[$i]['id']; //链接
$form = $json[$i]['fromarea']; //来源
$type = get_qq_mirco_blog_type_info($json[$i]['type']); //类型
$count = $json[$i]['count']; //转载次数
echo str_replace(array('{content}','{time}','{permalink}','{form}','{type}','{count}'),array($content,$time,$permalink,$form,$type,$count),$format);
}
}
function get_qq_mirco_blog_type_info($type)
{
$result = "";
switch ($type) {
case 2:
$result = "转播: ";
break;
case 3:
$result = "私信: ";
break;
case 4:
$result = "回复: ";
break;
default:
}
return $result;
}

把这段代码放入function.php文件中,然后在模板中调用代码get_qq_mirco_blog_info();

该函数有两个参数,第一个是定义的格式,格式的参数请看for循环里面的注意;第二个是调用的条数,最多20条。

具体的调用代码就是这样了,我没有单独的测试,反正在自己的博客中是没有问题的,效率上我也不能保证什么,但是至少是比民间的API快吧,还有什么问题请留言吧。另外再给出一个获得RSS版的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$qqRSS = 'RSS地址';
$XML =new DomDocument;
$XML->load($qqRSS);
$Items = $XML->getElementsByTagName("item");
echo "<ul>
";
foreach ($Items as $Item)
{
$title = $Item->getElementsByTagName("title")->item(0)->nodeValue; //内容
$link = $Item->getElementsByTagName("link")->item(0)->nodeValue; //链接
$time = $Item->getElementsByTagName("pubDate")->item(0)->nodeValue; //发布时间
$times = time_tran(date("Y-m-d H:i:s",strtotime($time))); //发布时间
echo '<li>
<div class="top">
'.$title.'
</div>

<div class="bottom">
<a target="_blank" href="'.$link.'">'.$times.'</a>
</div>
</li>';
}
echo "
</ul>";

我的腾讯微博,欢迎收听我的微博:@冰剑