{ "info": { "author": "1elie1", "author_email": "1elie1@tuta.io", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "==============================================\nBittorrent Tracker Scraping\n==============================================\n\n\n.. image:: https://img.shields.io/pypi/v/bittorrent_tracker_scraping.svg\n :target: https://pypi.python.org/pypi/bittorrent_tracker_scraping\n\n.. image:: https://img.shields.io/travis/1elie1/bittorrent_tracker_scraping.svg\n :target: https://travis-ci.org/1elie1/bittorrent_tracker_scraping\n\n\nPython package for scraping udp and tcp bittorrent trackers.\n\nFeatures\n--------\nUDPTracker:\n - [ ] Implement Timeout\n - [x] Scrape info_hashes for one url\n - [x] Scrape info_hashes with multiple urls\nTCPTracker:\n - [x] Scrape method implemented\n - [x] Scrape info_hashes with multiple urls\n - [ ] Implement Timeout\n\n\nUsage\n--------\n\n\nHighest level of abstraction:\n\n>>> from asyncio import get_event_loop\n>>> from aiohttp import ClientSession\n>>> import bittorrent_tracker_scraping as scraping\n>>>\n>>> l = get_event_loop()\n>>> client = ClientSession()\n>>> urls = ['http://torrent.ubuntu.com:6969/announce', 'http://torrent.nwps.ws:80/announce',\n...\t 'udp://tracker.coppersurfer.tk:6969/announce', 'udp://explodie.org:6969/announce']\n>>>\n>>> info_hashes = ['5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609']\n>>>\n>>>\n>>> results = l.run_until_complete(scraping.scrape_trackers(urls, info_hashes, client))\n>>> print(results)\n [{'seeders': 13, 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', 'completed': 326,\n 'leechers': 3, 'complete': 1535, 'downloaded': 34534, 'incomplete': 69, 'name': 'ubuntu-18.10-desktop-amd64.iso'},\n {'seeders': 7, 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609', 'completed': 52,\n 'leechers': 1, 'complete': 619, 'downloaded': 3893, 'incomplete': 26, 'name': 'ubuntu-18.10-live-server-amd64.iso'}]\n\n\n\nCreate a TCP Tracker:\n\n>>> from asyncio import get_event_loop\n>>> from bittorrent_tracker_scraping import TCPTracker\n>>> from aiohttp import ClientSession\n>>>\n>>> l = get_event_loop()\n>>> client = ClientSession()\n>>>\n>>> url = 'http://torrent.ubuntu.com:6969/announce'\n>>> tracker = TCPTracker(url, client)\n\n\nScraping trackers is as easy as passing the info_hashes to the scrape method.\nThe scrape method returns a list containing None or dictionaries:\n\n>>> info_hashes = ['5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609']\n>>> data = l.run_until_complete(tracker.scrape(info_hashes))\n>>>\n>>> print(data)\n [{'complete': 1473, 'downloaded': 34524, 'incomplete': 50, 'name': 'ubuntu-18.10-desktop-amd64.iso',\n 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67'},\n {'complete': 594, 'downloaded': 3892, 'incomplete': 21, 'name': 'ubuntu-18.10-live-server-amd64.iso',\n 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609'}]\n\n\nOR\n\n>>> from asyncio import get_event_loop\n>>> from bittorrent_tracker_scraping import TCPTracker\n>>> from aiohttp import ClientSession\n>>>\n>>> l = get_event_loop()\n>>> client = ClientSession()\n>>> urls = 'http://torrent.ubuntu.com:6969/announce', 'http://torrent.nwps.ws:80/announce'\n>>> info_hashes = ['5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67',\n... '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609']\n>>>\n>>> coroutine = TCPTracker.scrape_urls(urls, info_hashes, client)\n>>> data = l.run_until_complete(coroutine)\n>>>\n>>> print(data)\n [{'complete': 1418, 'downloaded': 33553, 'incomplete': 57,\n\t\t 'name': 'ubuntu-18.10-desktop-amd64.iso', 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67'},\n\t\t {'complete': 581, 'downloaded': 3780, 'incomplete': 11,\n\t\t 'name': 'ubuntu-18.10-live-server-amd64.iso', 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609'}]\n\n\nCreate a UDP Tracker:\n\n>>> from asyncio import get_event_loop\n>>> from bittorrent_tracker_scraping import UDPTracker\n>>>\n>>> l = get_event_loop()\n>>>\n>>> url = 'udp://tracker.coppersurfer.tk:6969/announce'\n>>> info_hashes = '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609'\n>>>\n>>> tracker = UDPTracker(url=url)\n>>> data = l.run_until_complete(tracker.scrape(info_hashes))\n>>> print(data)\n [{'seeders': 7, 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', 'completed': 150, 'leechers': 0},\n {'seeders': 3, 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609', 'completed': 25, 'leechers': 1}]\n\nOR\n\n>>> from asyncio import get_event_loop\n>>>\n>>> l = get_event_loop()\n>>>\n>>> urls = 'udp://tracker.coppersurfer.tk:6969/announce', 'udp://explodie.org:6969/announce'\n>>> info_hashes = '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609'\n>>>\n>>> data = l.run_until_complete(UDPTracker.scrape_urls(urls, info_hashes))\n>>> print(data)\n [{'seeders': 12, 'info_hash': '5a8ce26e8a19a877d8ccc927fcc18e34e1f5ff67', 'completed': 326, 'leechers': 3},\n {'seeders': 7, 'info_hash': '8c4adbf9ebe66f1d804fb6a4fb9b74966c3ab609', 'completed': 52, 'leechers': 1}]\n\n=======\nHistory\n=======\n0.1.0 (2018-11-10)\n------------------\n* Initial release.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/1elie1/bittorrent_tracker_scraping", "keywords": "bittorrent_tracker_scraping", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "bittorrent-tracker-scraping", "package_url": "https://pypi.org/project/bittorrent-tracker-scraping/", "platform": "", "project_url": "https://pypi.org/project/bittorrent-tracker-scraping/", "project_urls": { "Homepage": "https://github.com/1elie1/bittorrent_tracker_scraping" }, "release_url": "https://pypi.org/project/bittorrent-tracker-scraping/0.1.0/", "requires_dist": null, "requires_python": "", "summary": "TCP and UDP bittorrent tracker scraping abstraction.", "version": "0.1.0" }, "last_serial": 4475154, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "bd4e5bced21cbe097e5ce243b681375e", "sha256": "9b15e5ba1a012d91b6ac6312dc70bc30fcec48fe8caf49427918d123162688b2" }, "downloads": -1, "filename": "bittorrent_tracker_scraping-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bd4e5bced21cbe097e5ce243b681375e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12332, "upload_time": "2018-11-11T21:31:54", "url": "https://files.pythonhosted.org/packages/1b/58/b7115dc1cbb9b3f51498bdc20222693fcffa938e2ab72d76f00276752f04/bittorrent_tracker_scraping-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a3e6f0d48034d99ce1c560d22ff3b75", "sha256": "9e90733b454ef0f05caadd6bd608e8d735ee6c59432daa9145e1838e6550d09f" }, "downloads": -1, "filename": "bittorrent_tracker_scraping-0.1.0.tar.gz", "has_sig": false, "md5_digest": "0a3e6f0d48034d99ce1c560d22ff3b75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8677, "upload_time": "2018-11-11T04:49:23", "url": "https://files.pythonhosted.org/packages/d4/a8/75b7c5a53ad80711f512e803a31b4e5aed7e036de4bb1b5a3d04a566249d/bittorrent_tracker_scraping-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bd4e5bced21cbe097e5ce243b681375e", "sha256": "9b15e5ba1a012d91b6ac6312dc70bc30fcec48fe8caf49427918d123162688b2" }, "downloads": -1, "filename": "bittorrent_tracker_scraping-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bd4e5bced21cbe097e5ce243b681375e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12332, "upload_time": "2018-11-11T21:31:54", "url": "https://files.pythonhosted.org/packages/1b/58/b7115dc1cbb9b3f51498bdc20222693fcffa938e2ab72d76f00276752f04/bittorrent_tracker_scraping-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a3e6f0d48034d99ce1c560d22ff3b75", "sha256": "9e90733b454ef0f05caadd6bd608e8d735ee6c59432daa9145e1838e6550d09f" }, "downloads": -1, "filename": "bittorrent_tracker_scraping-0.1.0.tar.gz", "has_sig": false, "md5_digest": "0a3e6f0d48034d99ce1c560d22ff3b75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8677, "upload_time": "2018-11-11T04:49:23", "url": "https://files.pythonhosted.org/packages/d4/a8/75b7c5a53ad80711f512e803a31b4e5aed7e036de4bb1b5a3d04a566249d/bittorrent_tracker_scraping-0.1.0.tar.gz" } ] }