基于微信公众平台的Python开发——豆瓣电影搜索

引言

微信公众平台支持向用户回复图文信息消息。本文以豆瓣电影搜索为例,实现回复图文信息。即用户输入电影名称、演员或导演信息,公众号返回相应的豆瓣电影信息。读者可以关注公众号zakic2015体验该功能,操作示例及效果图如下:


豆瓣电影搜索API

豆瓣API相关介绍参考http://developers.douban.com/wiki/?title=guide,为了完成我们的目标,分两步进行:(1)从电影条目中提取相关某电影id信息(2)通过id得到该电影的详细信息。

(1)从电影条目中提取相关某电影id信息

先看下豆瓣开发文档中相关电影条目搜索格式:

电影条目搜索


Resources URI
/v2/movie/search?q={text}
Required Scope
movie_basic_r
Example:

GET /v2/movie/search?q=张艺谋 GET /v2/movie/search?tag=喜剧

Status:
200 OK
搜索返回的json结果如下:


然后从该json结果提取电影"id",这里直接取第一条电影条目的id,提取结果如下:

movie_id = movie_01['subjects'][0]['id']
(2)通过id得到该电影的详细信息。
还是先看豆瓣开发文档先关电影条目搜索格式
Resources URI
/v2/movie/subject/:id
Required Scope
movie_basic_r
Example:

GET /v2/movie/subject/1764796

Status:
200 OK
通过上述得到的id,搜索返回的json结果如下:


参看微信公众平台开发文档(http://mp.weixin.qq.com/wiki/home/index.html)回复图文信息说明:

参数是否必须说明
ToUserName接收方帐号(收到的OpenID)
FromUserName开发者微信号
CreateTime消息创建时间 (整型)
MsgTypenews
ArticleCount图文消息个数,限制为10条以内
Articles多条图文消息信息,默认第一个item为大图,注意,如果图文数超过10,则将会无响应
Title图文消息标题
Description图文消息描述
PicUrl图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
Url点击图文消息跳转链接
又上述说明知,需从上面的json数据中提取Title、DescriptionPicUrl、Url四个参数,提取并返回最终图文信息,结果如下

title = movie['title']
desc =  movie['summary']
picurl = movie['images']['large']
url = movie['alt']
replyList = [title,desc,picurl,url]
return self.render.reply_one_news(fromUser,toUser,int(time.time()),replyList)


Python调用豆瓣电影搜索API

<pre name="code" class="python"># -*- coding: utf-8 -*-

import urllib2
import json

class DouBan:    
 
    def query_movie(self,word):
        baseurl_01 = r'http://api.douban.com/v2/movie/search?q='
        qword = urllib2.quote(word)
        url_01 = baseurl_01 + qword + r'&apikey=yourAppKey' 
        resp_01 = urllib2.urlopen(url_01)
        movie_01 = json.loads(resp_01.read())   
        
        movie_id = movie_01['subjects'][0]['id']
        baseurl = r'http://api.douban.com/v2/movie/subject/'
        url = baseurl + movie_id + r'?apikey=<span style="font-family: Arial, Helvetica, sans-serif;">yourAppKey</span>'
        resp = urllib2.urlopen(url)
        movie = json.loads(resp.read())
        return movie


微信公众平台回复单图文信息的reply_one_news.xml格式如下:

$def with (toUser,fromUser,createTime,list)
<xml>
<ToUserName><![CDATA[$toUser]]></ToUserName>
<FromUserName><![CDATA[$fromUser]]></FromUserName>
<CreateTime>$createTime</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>
<item>
<Title><![CDATA[$list[0]]]></Title>
<Description><![CDATA[$list[1]]]></Description>
<PicUrl><![CDATA[$list[2]]]></PicUrl>
<Url><![CDATA[$list[3]]]></Url>
</item>
</Articles>
<FuncFlag>1</FuncFlag>
</xml> 


参考
 
http://ju.outofmemory.cn/entry/36079 


关注


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值