一个用Python和Bottle实现基于微信公众API和SAE查询豆瓣电影的简单应用..doc

一个用Python和Bottle实现基于微信公众API和SAE查询豆瓣电影的简单应用..doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个用Python和Bottle实现基于微信公众API和SAE查询豆瓣电影的简单应用.

Bottle 对 HTTP 请求的处理 发布时间:2012-07-01 10:09:36, 关注:+2113, 赞美:+1, 不爽:+1 最近玩Bottle这个框架, 分析了一下它的源码, 顺便也理一下它是怎么处理HTTP请求的. 代码结构 我们先分析下bottle.py的代码结构. 这个单文件的框架有2900多行, 大致结构如下(手头的版本是0.10.7): 0000-0140: 模块载入, 兼容性调整 0140-0200: 逻辑无关的工具函数和工具类定义 0200-0240: 异常定义. 需要注意的是, 不需要消息体的HTTP响应, 例如HTTP重定向之类, 在bottle中也被处理成一种异常. 0240-0520: URL映射相关逻辑, 包括若干个路由异常的定义. 0520:0860: 主Bottle类的定义. 0860-1440: 装HTTP请求和响应的类的定义. 微型框架啥都可以省省, 但是这个如果再省, 就不能被称为是框架了. 1440-1570: 各种插件. 1570-1800: 各种数据结构. 1800-2050: 乱七八糟的小函数. 2050-2280: 框架虽小, 兼容的服务器倒真不少... 2280-2450: 应用控制, 也挺乱的, 两个用来载入app, 一个起server, 还有一个用来自动重启server(这个都有啊喂, 你真是微型框架咩). 2450-2830: 模板渲染及处理, 兼容的模板系统也不少. 2830-EOF : 变量定义及一些实例化, 以及起内置服务器的main函数. 由于有实例化的部分, 我们得先看看这段. 一旦你要从bottle.py中引入一个名字到你自己的模块, 这些代码就得执行一遍. 除了那些对变量的定义外, 这一段做了下面几件事情: 一个用Python和Bottle实现基于微信公众API和SAE查询豆瓣电影的简单应用 发布时间:2013-04-03 13:47:18, 关注:+594, 赞美:+1, 不爽:+0 本文标签: sae 豆瓣 微信 原始出处: 好记性不如烂键盘 终于完成了使用微信公众API+Python+Bottle+SAE+豆瓣API的一个通过电影名称查询并自动回复电影信息的应用,在此小小的庆祝一下,废话不多说,一切尽在代码中。PS:我这样是不是有点滥用Docstring啊,呵呵。 #! /usr/bin/env python # coding=utf-8 __author__ = jszhou from bottle import * import hashlib import xml.etree.ElementTree as ET import urllib2 # import requests import json Change Log: 03-04--03-08 完成微信API+Python自动回复代码雏形,可以通过电影ID查询电影信息,以Text形式返回给用户电影 Title和电影summary # 03-11 完成通过电影名称查询并返回图文格式的数据 # 03-13 1.增加给新关注的用户自动返回“欢迎关注豆瓣电影,输入电影名称即可快速查询电影讯息哦!”信息的功能 2.完善注释信息 关于本地调试问题: 微信没有提供本地调试功能,给用户造成不小的麻烦。 打开Bottle的Debug功能,在本地运行自己的代码(启动Server),使用Chrome或Firefox上的Advanced Rest Client插件来模拟微信服务器向自己的应用发送请求, 这样就可以看到详细的报错信息,方便开发者定位修复问题,其相当于,自己的应用是SAE,而Advanced Rest Client模拟的是新微信客户端和微信服务器。 也有同学自己写脚本,模拟微信服务器发送数据,这也是同样的道理。 遗留问题: 1.从豆瓣拿到的海报图片都是竖向的,而微信中显示的是横向的,所以在微信看图片就被裁了一节,不过还好能看, 如何能完整显示海报图片,有待进一步research; 2.现在的通过电影名称返回的结果,实际上是拿的豆瓣返回的第一条数据,这样就有可能不准确,如何精确匹配用户的 查询条件,也还需要进一步研究。 @get(/) def checkSignature(): 这里是用来做接口验证的,从微信Server请求的URL中拿到“signature”,“timestamp”,nonce和“echostr”, 然后再将token, timestamp, nonce三个排序并进行Sha1计算,并将计算结果和拿到的signature进行比较, 如果相等,就说

文档评论(0)

sa1fs5g1xc1I + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档