写在前面
随着夏天的结束,9月份的到来,又到了苹果秋季发布新iPhone的季节了。我和绝大多数苹果用户一样对新的iPhone自然保留着一份期待。不过理智告诉我这次新的iPhone的release,应该不会给大家带来很大的惊喜。我猜测 iPhone6s 应该是一款针对 iPhone6 的升级产品。就像 iOS 9 是针对 iOS 8的一次升级,苹果公司内部在这一次的迭代中,主要精力应该是会放在“还债”上,之前release了太多的feature,遗留了太多的bug,会在这一次修复掉。
Openradar stream 的来由
和大多数 iOS developers 一样,我也在第一时间安装了 iOS 9 beta版本。满足了尝鲜感之后,随着而来就是 beta 系统的不稳定,以及各种的bug。用 iOS 9 进行开发的过程中,我遇到了许许多多的坑,对于一些系统的bug,会花费掉我很多的时间去debug。然后,我发现了openradar。一个 open database of radars for Apple bug。从openradar 上,你可以看到其他开发者提交的bug,这当然会为你省去很多的时间,帮助你避免很多的坑。
后来我想我是不是应该做一个自动的脚本,定时的去抓取这个网页上面的信息,然后发到微博上。关注这个微博的人就可以在自己的时间线上面看到最新的bug了。这样做的好处是,一来你了解到bug信息,下次你遇到类似的问题,会联想到之前看过的bug信息,省去大量的时间。二来,刷微博的时候,还顺便学习了新知识,就没那么大的罪恶感了~。为此,我写一个tiny project,auto radarstream。
具体工作
完成openradarstream,有以下事情需要去做
前期工作
- 申请一个微博账号,并申请微博OpenApi,获取到
apikey
和apisecret
。 - 获取到微博的 accessToken, expires
开发工具
- language: python
- database: sqlite
细节
-
设置好微博的环境,其中微博的OpenAPI,使用开源库sinaweibopy
-
初始化数据库
def initDB (): print 'initDB ...' db = sqlite3.connect(sqlite_file) cursor = db.cursor() cursor.execute('''CREATE TABLE IF NOT EXISTS bugs(id INTEGER PRIMARY KEY, bugid TEXT, status TEXT, originator TEXT, product TEXT, title TEXT)''') db.commit()
-
获取网站信息,并做相关处理。
第一步利用 urllib2 获取openradar主页信息。
第二步对获取到的信息,利用 BeautifulSoap 对html
进行解析,得到一个buglist。
第三步,由于网页上面的信息是按时间降序的,而我们是希望最新的bug,在本次最后一个发布,这样这条bug会出现在微博主页时间线的最上头。所以我们这里反转buglist。 第四步,遍历buglist,发布没有发布的bug,并把发布过的bug插入数据库存档。
项目在Github上面的地址:radarstream。
最后
To track open radar posts, please follow @openradarstream