Created
August 24, 2013 17:17
Revisions
-
Chairo created this gist
Aug 24, 2013 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,47 @@ # -*- coding:utf-8 -*- import requests, os, hashlib from pymongo import Connection #引入Mongo支持 #连接Mongo mongo = Connection(host='127.0.0.1', port=27017) db = mongo.bt #连接bt这个数据库,没有会自动新建 #保存下载的BT种子 def save_file_to_disk(content, info_hash): _temp = file_path(info_hash) _path = os.path.abspath('%s/%s'%('torrents', _temp['path'])) _file_name = _temp['file_name'] open('%s/%s'%(_path, _file_name), 'wb').write(content) return _temp #获取BT种子保存的文件路径 def file_path(info_hash): _md5 = hashlib.md5(info_hash).hexdigest() check_path(_md5[0:2]) check_path('%s/%s/'%(_md5[0:2], _md5[2:5])) return {'path':'%s/%s/'%(_md5[0:2], _md5[2:5]), 'file_name':'%s.torrent'%_md5} #检查文件夹是否存在 def check_path(path): if not os.path.exists(os.path.abspath('%s/%s'%('torrents', path))): os.mkdir(os.path.abspath('%s/%s'%('torrents', path))) #下载BT文件 def get_file(info_hash): _url = 'http://torrage.com/torrent/%s.torrent'%info_hash.upper() try: _content = requests.get(_url, timeout=3).content if 'File not found' not in _content: _path = save_file_to_disk(_content, info_hash) db.info_hash.update({'info_hash':info_hash}, {'$set':{'download':1,'file_path':'%s/%s/%s'%('torrents',_path.get('path'), _path.get('file_name'))}}, upsert=False, multi=True) except: db.info_hash.remove({'info_hash':info_hash}) #遍历Mongo下载BT种子 def down_bt(): #使用find命令获取所有没有下载过的数据 for item in db.info_hash.find({"download": {"$exists": False}}, fields={'info_hash':True,'_id':False}): get_file(item.get('info_hash')) if __name__ == "__main__": down_bt()