Openradar Stream

写在前面

随着夏天的结束,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,获取到apikeyapisecret
  • 获取到微博的 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