我没有消失

潜水了快一个月了,再一次证明了一个道理『不怕神一样的对手,就怕x一样的队友』。当然上周我也做了一次『猪』,给一个小伙伴拖了一下后腿,被小伙伴私底下狂骂。不过我这个『猪一样』的队友不知道会不会给小伙伴带来很严重的后果还不得而知,一切待周一揭晓。忙碌了一个月,身心俱疲。整天提心吊胆的就害怕一些数据出问题,结果事实证明数据必须一定必然果然出了问题,为别人擦屁股擦的真心累。BT搜索站因为精力问题,暂停了一个月了。最近捡起来发现居然生疏了很多,为了暖手写了一个Python下生成自增ID的一段脚本。frompymongoimportConnectiondb=Connection(host='127.0.0.1',port=27017).api_column='au92_comment'printdb.sites.find_and_modify(update={'$inc':{_column:1}},f...

精彩继续

Python搭建BT资源搜索站(五)

通过前面四篇文章,我们已经采集到了N多BT种子,并且已经将种子中包含的一些信息保存在Mongo数据库中,接下来就是如何将Mongo中的数据通过WEB服务器提供给搜索引擎,提供给一些浏览者。即,如何使用Python搭建一个WEB站点了。首先我之前的项目均采用Bottle这个Python框架,这次依然不例外。这个框架的好处只有一个:足够简单。使用Bottle启动一个WebServer是一件非常简单的事,文件保存成app.py:frombottleimportBottle,runapp=Bottle()if__name__=="__main__":#命令行交互模式importsysport=int(sys.argv[1]iflen(sys.argv)>1else8888)run(app,host='0.0.0.0',port=port,reloader=True)当然bottle.py这个...

精彩继续

Python搭建BT资源搜索站(四)

前文中已经下载到了一些BT种子文件,其实聪明的孩子已经发现我之前写过一篇使用Python将BT种子转换为磁力链接的文章,其中会有一些办法解析BT种子的info信息,然后提取出来转换成磁力链接格式。因为暂时咱们只拿到了一些BT种子文件,所以最简单的方式获取BT文件的信息就是要解析BT种子文件,获取文件本身包含的一些信息。参考之前的文章,我建议是使用python-libtorrent来解析文件,效率高而且通过apt-get方式安装出问题的几率小。因为是Windows下开发,安装包请自行Google下载,本人下载到的版本为python-libtorrent-0.16.10.win32,安装过程一路Next即可。安装完成后就可以参考我之前在Debian环境的代码,轻松的将现有的种子文件转换成磁力链接。除了可以转换成磁力链接外,通过解析一个种子文件咱们可以获取到的信息有:这个种子中包含的文件列表文件...

精彩继续

Python搭建BT资源搜索站(三)

前文中已经用Python将一个从torrage.com上采集下来的文件解析并且保存进了Mongo数据库中,但此时Mongo数据库中仅仅是一些字符串,和咱们期望的BT资源站貌似完全不相关。当然聪明的小伙伴是已经知道torrage.com这个网站就是托管一些BT种子的网站,从网站主页就可以看到可以简单的通过访问『http://torrage.com/torrent/info_hash.torrent』下载一个BT种子。所以再一次祭出requests这个神器,通过遍历之前保存进Mongo中的info_hash来下载BT种子文件。首先,在bt-search目录新建一个文件夹『torrents』用来保存BT种子文件。然后,使用requests抓取torrage的文件并保存到torrents文件夹中,具体代码可以参考我写完的代码:https://gist.github.com/Chairo/63292...

精彩继续

Python搭建BT资源搜索站(二)

处理上文下载的文件前文中从torrage下载了一个info_hash的数据文件下来,但下载的文件仅仅是一个txt文档,需要将这个文档解析成一条一条的数据,保存进咱们的数据库,方便以后的数据库搜索以及一些其他处理。首先,要用Python读取下载下来的文件内容,并且将文件内容保存进数据库中。虽然以前我是坚决抵制使用nosql作为主要的存储工具,但因为公司的项目的核心数据是在Mongodb中存储,之后必然要接触一些Mongo的工作,所以干脆搞一些小项目从头开始方便我熟悉Mongo。读取文件的Python函数如下:defread_data():_file=open('20130820.txt','rb').readlines()for_itemin_file:print_item这个函数就可以简单的将一个txt文件读取出来,并且逐行输出。然后,下载Windows版本的Mongo(个人使用的32位系...

精彩继续

Python搭建BT资源搜索站(一)

任何一门编程语言初学者最难的是不知道如何下手,各种电子书实体书搞到一堆一堆,书中都是从语言的历史、基本语法开始谈起。按照书中的例子都一个一个去实践过了。但做了几百个for循环,几百个print'helloworld',先不说学了后边忘记前边,准备下手做一个项目时候才发现怎么将几百遍for和print组成一个按照自己想法来实现的项目完全没有任何思路……我对于任何编程语言的学习都倾向于做一个实际的小项目作为入门课程。我一直觉着书和手册是会查就可以了,没必要通读一整本书或者翻遍全部手册。安装必备软件python2.7.*,本人使用的32位Python2.7系列,一个是win7当时安装的32位,另外2.7系列第三方插件和教程都多。setuptools-0.6c11.win32-py2.7.exe,配合python的第三方插件requests,从官方github下载的版本(有一阵子了,下载最新版本就...

精彩继续

使用Python给IE设置代理

厂里上个网需要设置代理服务器,切换各种环境『包括但不仅限于开发环境、QA、预上线、验收、生产环境、压力测试、Demo……』都需要给浏览器设置不同的代理服务器。虽然俺有神器Firefox+ChangeHost+HostAdmin+ProxySelector的组合来轻松切换Host,切换浏览器代理,但是…凡是就怕『但是』。但是碰到一些IE才有的bug时候不得不换浏览器啊!!还要开虚拟机进去搞IE6、IE8、360、搜狗这些奇葩浏览器啊!!!有同事建议搞个bat脚本来做这些,但没人肯动手……而且bat能不能实现先不说,重点是咱不熟啊。搞个C#写个winform或者console控制台还需要.NETframework不是,虚拟机装个.NETframework4.0又要很多时间『而且不同的snapshot都要装一遍…』最最重要的,好久不写文章了不是,咱不想在博客里写C#相关的东西不是。所以,操刀Py...

精彩继续

Python将BT种子文件转换为磁力链的两种方法

BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些。而且很多论坛或者网站限制了文件上传的类型,分享一个BT种子还需要改文件后缀或者压缩一次,其他人需要下载时候还要额外多一步下载种子的操作。所以将BT种子转换为占用空间更小,分享更方便的磁力链还是有挺大好处的。首先一个方案是使用bencode这个插件,通过pip方式安装或者自行下载源文件https://pypi.python.org/pypi/bencode/1.0通过pythonsetup.pyinstall方式安装均可。相应的将BT种子转换为磁力链代码为:importbencode,hashlib,base64,urllibtorrent=open('ubuntu-12.04.2-server-amd64.iso.torrent','rb').read()metadata=benc...

精彩继续

10行代码实现网页缩略图功能

现在博客的主题需要给文章增加一个缩略图,当然图片可以从Google、百度之类的搜索到,但有的时候还是人懒,有的时候也想不到给文章加什么图片。就想直接给博客截张图就凑合一下…找了几个提供生成缩略图的网站,API要么不稳定,要么有广告。自己完全写一个需要依赖的条件也比较多。最后找到Google提供的某一个功能,可以利用那个功能抓到一张320x240的缩略图,相比其他网站来说速度快,而且相对稳定『当然,Google最近流行砍项目,哪天被砍了就再想辙』。简单用10行代码就可以给任意网页生成缩略图了:#-*-coding:utf-8-*-defimg(url,file_path):fromurllibimportquoteimportrequests,json,base64_json=json.loads(requests.get('https://developers.google.com/_ap...

精彩继续

零散的几个知识点

打印格式漂亮的JSONByPython之前一直用在线的一些格式化JSON字符串的页面格式化一些JSON,忽然发现Python自带一个pprint的模块,直接可以输出格式化后的内容,类似PHP的print_r之流。当然,还有另一种方法简单使用Python格式化JSON字符串:print(json.dumps(data,indent=2))print函数简单增加一个indent参数即可打印格式化后的JSON字符串。给debian的vps增加内网ip很丢人的一直以为买一个独服带几个公网IP就会对应给分配几个内网IP,然后开VPS时候给每个VPS分别绑定一个/多个外网IP或者一个/多个内网IP。还特意在hostloc论坛发帖问怎么个玩法,经aarwwefdds同学指点,回家在虚拟中测试了一下,随便给VPS绑个内网ip就能ping通……实际操作步骤也很简单:1.vzctlset33--ipadd19...

精彩继续