TCP和UDP BitTorrent跟踪器抓取抽象。

bittorrent-tracker-scraping的Python项目详细描述


BitTorrent跟踪器抓取

https://img.shields.io/pypi/v/bittorrent_tracker_scraping.svghttps://img.shields.io/travis/1elie1/bittorrent_tracker_scraping.svg

用于抓取UDP和TCP BitTorrent跟踪器的Python包。

功能

udptracker:
  • []执行超时
  • [X]为一个URL收集信息哈希值
  • [X]用多个URL擦掉信息散列
tcptracker:
  • [X]实现了scrape方法
  • [X]用多个URL擦掉信息散列
  • []执行超时

使用量

最高抽象级别:

>>> from asyncio import get_event_loop
>>> from aiohttp import ClientSession
>>> import bittorrent_tracker_scraping as scraping
>>>
>>> l = get_event_loop()
>>> client = ClientSession()
>>> urls = ['http://torrent.ubuntu.com:6969/announce', 'http://torrent.nwps.ws:80/announce',
...         'udp://tracker.coppersurfer.tk:6969/announce', 'udp://explodie.org:6969/announce']
>>>
>>> info_hashes = ['5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609']
>>>
>>>
>>> results = l.run_until_complete(scraping.scrape_trackers(urls, info_hashes, client))
>>> print(results)
    [{'seeders': 13, 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', 'completed': 326,
     'leechers': 3, 'complete': 1535, 'downloaded': 34534, 'incomplete': 69, 'name': 'ubuntu-18.10-desktop-amd64.iso'},
     {'seeders': 7, 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609', 'completed': 52,
     'leechers': 1, 'complete': 619, 'downloaded': 3893, 'incomplete': 26, 'name': 'ubuntu-18.10-live-server-amd64.iso'}]

创建TCP跟踪器:

>>> from asyncio import get_event_loop
>>> from bittorrent_tracker_scraping import TCPTracker
>>> from aiohttp import ClientSession
>>>
>>> l = get_event_loop()
>>> client = ClientSession()
>>>
>>> url = 'http://torrent.ubuntu.com:6969/announce'
>>> tracker = TCPTracker(url, client)

抓取跟踪器就像将信息散列传递给scrape方法一样简单。 scrape方法返回一个包含none或dictionary的列表:

>>> info_hashes = ['5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609']
>>> data = l.run_until_complete(tracker.scrape(info_hashes))
>>>
>>> print(data)
 [{'complete': 1473, 'downloaded': 34524, 'incomplete': 50, 'name': 'ubuntu-18.10-desktop-amd64.iso',
  'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67'},
  {'complete': 594, 'downloaded': 3892, 'incomplete': 21, 'name': 'ubuntu-18.10-live-server-amd64.iso',
   'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609'}]

>>> from asyncio import get_event_loop
>>> from bittorrent_tracker_scraping import TCPTracker
>>> from aiohttp import ClientSession
>>>
>>> l = get_event_loop()
>>> client = ClientSession()
>>> urls = 'http://torrent.ubuntu.com:6969/announce', 'http://torrent.nwps.ws:80/announce'
>>> info_hashes = ['5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67',
...                   '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609']
>>>
>>> coroutine = TCPTracker.scrape_urls(urls, info_hashes, client)
>>> data = l.run_until_complete(coroutine)
>>>
>>> print(data)
  [{'complete': 1418, 'downloaded': 33553, 'incomplete': 57,
                 'name': 'ubuntu-18.10-desktop-amd64.iso', 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67'},
                  {'complete': 581, 'downloaded': 3780, 'incomplete': 11,
                   'name': 'ubuntu-18.10-live-server-amd64.iso', 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609'}]

创建一个udp跟踪器:

>>> from asyncio import get_event_loop
>>> from bittorrent_tracker_scraping import UDPTracker
>>>
>>> l = get_event_loop()
>>>
>>> url = 'udp://tracker.coppersurfer.tk:6969/announce'
>>> info_hashes = '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609'
>>>
>>> tracker = UDPTracker(url=url)
>>> data = l.run_until_complete(tracker.scrape(info_hashes))
>>> print(data)
    [{'seeders': 7, 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', 'completed': 150, 'leechers': 0},
      {'seeders': 3, 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609', 'completed': 25, 'leechers': 1}]

>>> from asyncio import get_event_loop
>>>
>>> l = get_event_loop()
>>>
>>> urls = 'udp://tracker.coppersurfer.tk:6969/announce', 'udp://explodie.org:6969/announce'
>>> info_hashes = '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609'
>>>
>>> data = l.run_until_complete(UDPTracker.scrape_urls(urls, info_hashes))
>>> print(data)
    [{'seeders': 12, 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', 'completed': 326, 'leechers': 3},
     {'seeders': 7, 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609', 'completed': 52, 'leechers': 1}]

历史记录

0.1.0(2018-11-10)

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从下拉列表中获取所选号码?   Java代码不允许我将一个方法从一个类调用到另一个类   java如何在集合的Assertj集合中进行验证   java最少重复/在数组中出现一次的项   java如何将复选框值传递给动作\u发送   java排序2D数组或排序1D+线性搜索。   java有没有比使用CountDownLatch更好的等待两个线程完成任务的方法?   java如何从liferay portlet读取Excel文件?   NumberFormatException,因为在准备好的Java语句上无法识别NULL   如何在JavaJDBC中运行SQL(MYSQL)存储过程?   使用开放街道地图的java路由   java我正在尝试添加两个多项式,它们的系数不同,度数也不同   java二叉树的垂直顺序遍历   java多数组输入   最终量化方法的java方法拦截器   eclipse中的java Tomcat 404错误   java异常在提交后从EntityManager获取会话时发生,在会话前关闭   java可以在另一个属性文件中生成一个属性文件吗   java通过文件输入计算最小/最大值   混合Java配置和XML Spring 4