{ "info": { "author": "D.Bashkirtsevich", "author_email": "bashkirtsevich@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python" ], "description": "# Asyncio Bittorrent DHT Server\n[![Build Status](https://travis-ci.org/bashkirtsevich-llc/aiobtdht.svg?branch=master)](https://travis-ci.org/bashkirtsevich-llc/aiobtdht)\n\nSimply async distributed hash table for Bittorrent network.\n\nBased on [aio-KRPC](https://github.com/bashkirtsevich-llc/aiokrpc) and [aio-UDP](https://github.com/bashkirtsevich-llc/aioudp).\n\nClass hierarchy:\n* UDPServer \u2014 low level async [U]ser [D]atagram [P]rotocol socket server;\n * KRPCServer \u2014 async [K]ademlia [R]emote [P]rocedure [C]all protocol provider; \n * DHT \u2014 implementation of Bittorrent [D]istributed [H]ash [T]able;\n\n\n## Methods\n\n### `DHT.__init__`\n\nArguments:\n* `local_id` (int) \u2014 local node identifier in range [0..2^160).\n\nOptional arguments:\n* `upload_speed` (int, default `0`) \u2014 outgoing traffic throttler;\n* `download_speed` (int, default `0`) \u2014 incoming traffic throttler;\n* `recv_max_size` (int, default `256 * 1024`) \u2014 socket reading buffer size.\n\n\n### `run`\n\nLaunch servering.\n\nArguments: \n* `host` (str) \u2014 local host address, e.g. `0.0.0.0`;\n* `port` (int) \u2014 local port for outgoing and incoming UDP traffic;\n* `loop` (object, default `None`) \u2014 asyncio eventloop, will create while `None` and run forever.\n\nResult: `None`.\n\n\n### async `bootstrap`\n\nMethod for initializing routing table.\n\nArguments:\n* `initial_peers` (list, example: `[(ip: str, port: int), ...]`) \u2014 list of router for initialize routing table;\n\nResult: `None`.\n\n### async `announce`\n\nAnnounce peer for specified `info_hash`.\n\nArguemtns:\n* `info_hash` (20 bytes) \u2014 binary form of `info_hash`;\n* `port` (int, default `None`) \u2014 information for announce, value is DHT-server listen port when `None`.\n\nResult: `None`.\n\n\n### async `__getitem__`\n\nGet peers for torrent by `info_hash`.\n\nArguemtns:\n* `info_hash` (20 bytes) \u2014 binary form of `info_hash`;\n\nResult: `Set((host: str, port: int), ...)`.\n\n\n## Example\n\n```python\nimport asyncio\nfrom aiobtdht import DHT \n\n\nasync def main(loop):\n dht = DHT(int(\"0x54A10C9B159FC0FBBF6A39029BCEF406904019E0\", 16))\n dht.run(\"0.0.0.0\", 12346, loop=loop)\n\n initial_nodes = [\n (\"67.215.246.10\", 6881), # router.bittorrent.com\n (\"87.98.162.88\", 6881), # dht.transmissionbt.com\n (\"82.221.103.244\", 6881) # router.utorrent.com\n ]\n\n print(\"bootstrap\")\n await dht.bootstrap(initial_nodes)\n print(\"bootstrap done\")\n\n print(\"search peers for Linux Mint torrent (8df9e68813c4232db0506c897ae4c210daa98250)\")\n peers = await dht[bytes.fromhex(\"8df9e68813c4232db0506c897ae4c210daa98250\")]\n print(\"peers:\", peers)\n\n print(\"peer search for ECB3E22E1DC0AA078B48B7323AEBBA827AD9BD80\")\n peers = await dht[bytes.fromhex(\"ECB3E22E1DC0AA078B48B7323AEBBA827AD9BD80\")]\n print(\"peers:\", peers)\n\n print(\"announce with port `2357`\")\n await dht.announce(bytes.fromhex(\"ECB3E22E1DC0AA078B48B7323AEBBA827AD9BD80\"), 2357)\n print(\"announce done\")\n\n print(\"search our own ip\")\n peers = await dht[bytes.fromhex(\"ECB3E22E1DC0AA078B48B7323AEBBA827AD9BD80\")]\n print(\"peers:\", peers)\n\n\nif __name__ == '__main__':\n loop = asyncio.get_event_loop()\n loop.run_until_complete(main(loop))\n```\n\nOutput:\n```\nbootstrap\nbootstrap done\nsearch peers for Linux Mint torrent (8df9e68813c4232db0506c897ae4c210daa98250)\npeers: {('146.120.244.10', 1078), ('162.244.138.182', 42000), ('79.226.71.128', 16881), ('24.236.49.9', 41785), ('91.138.144.37', 1487), ('68.44.225.100', 8967), ('80.44.205.104', 6881), ('212.32.229.66', 1160), ('108.204.244.160', 51413), ('66.130.106.74', 49160), ('90.128.48.99', 1348), ('188.232.107.50', 61025), ('173.44.55.179', 8589), ('46.242.8.31', 51413), ('181.97.186.68', 51413), ('68.114.220.251', 49237), ('172.98.67.53', 31545), ('94.212.149.191', 16881), ('188.163.46.182', 31217), ('185.148.3.42', 58489), ('37.24.80.202', 6881), ('86.159.123.195', 51413), ('88.202.177.238', 41280), ('87.79.216.207', 50000), ('73.24.30.122', 35727), ('212.32.229.66', 1842), ('97.103.206.29', 53314), ('58.6.89.141', 1157), ('78.92.112.15', 60745), ('124.176.208.220', 51413), ('68.44.225.100', 5051), ('188.6.231.166', 51413), ('58.6.89.141', 1099), ('99.28.209.57', 29694), ('108.172.92.81', 55555), ('46.107.192.126', 8999), ('212.232.79.196', 27886), ('24.236.49.9', 14100), ('84.28.172.201', 51413), ('188.195.3.8', 51413), ('92.110.18.80', 8999), ('91.153.229.129', 51413), ('5.196.71.175', 51413), ('185.21.217.21', 56031), ('93.77.142.76', 63193), ('145.130.138.96', 51413), ('73.14.170.195', 51413), ('79.121.6.189', 6318), ('78.142.23.65', 57171), ('101.112.156.11', 51413), ('195.242.156.241', 1194), ('92.247.152.29', 54217), ('81.171.9.199', 50781), ('75.108.45.243', 51413), ('172.98.67.53', 1842), ('68.44.225.100', 53849), ('81.171.9.199', 23542), ('37.214.48.240', 51413), ('72.177.3.209', 51413), ('93.203.236.159', 51413), ('95.154.19.186', 6881), ('50.39.164.144', 16881), ('88.223.24.14', 51413), ('213.188.38.130', 8999), ('85.3.104.53', 51413), ('173.69.6.72', 51413), ('46.166.190.136', 46825), ('45.231.194.211', 41481), ('77.50.127.80', 41446), ('5.39.88.54', 49420), ('78.42.236.30', 16881), ('5.227.15.139', 42068), ('31.17.12.154', 51413), ('41.188.115.45', 56763), ('46.246.123.24', 39574), ('144.172.126.68', 65516), ('72.14.181.193', 62904), ('90.128.48.99', 1347), ('90.92.181.147', 16881), ('184.175.133.66', 8999), ('185.45.195.161', 20064), ('188.243.178.111', 51413), ('139.47.117.179', 49967), ('88.138.252.41', 57837), ('91.237.164.182', 57310), ('199.204.160.119', 51413), ('50.39.198.212', 8999), ('183.89.65.240', 44808), ('90.154.5.75', 51413), ('68.44.225.100', 58836), ('89.165.156.40', 32435), ('23.227.192.103', 51413), ('217.10.117.5', 55179), ('83.149.46.57', 51413), ('217.120.102.36', 22449), ('27.255.16.95', 40001), ('68.44.225.100', 11790), ('98.142.213.39', 7401), ('38.141.32.249', 49222), ('71.38.191.134', 51413), ('68.44.225.100', 15234), ('24.236.49.9', 42805), ('74.205.141.130', 8999), ('46.158.232.118', 63782), ('66.78.249.53', 42065), ('78.239.83.41', 50505), ('89.134.45.63', 51413), ('89.202.42.62', 51413), ('198.48.184.203', 51157), ('172.98.67.53', 2623), ('109.104.17.83', 50000), ('80.128.42.85', 51413), ('82.253.238.71', 51413), ('81.171.9.199', 10128), ('68.44.225.100', 47320), ('88.172.132.57', 12464), ('84.57.138.103', 51413), ('68.44.225.100', 7158), ('23.82.10.32', 40779), ('5.189.164.178', 62924), ('86.171.122.135', 51413), ('91.226.253.69', 1039), ('188.32.24.204', 17691), ('79.121.6.189', 1060), ('68.44.225.100', 34255), ('68.44.225.100', 42549), ('91.227.46.177', 51413), ('87.253.244.34', 16881), ('73.64.230.136', 51413), ('203.184.52.1', 8999), ('66.78.249.53', 8999), ('109.197.193.160', 56172), ('109.252.2.116', 8197), ('151.252.157.50', 61213), ('37.53.35.117', 32852), ('74.140.192.66', 18954), ('71.197.139.141', 51413), ('173.179.36.233', 58948), ('75.174.143.174', 55265), ('70.56.193.245', 51413)}\npeer search for ECB3E22E1DC0AA078B48B7323AEBBA827AD9BD80\npeers: {('192.168.10.10', 2357)}\nannounce with port `2357`\nannounce done\nsearch our own ip\npeers: {('192.168.10.10', 2357)}\n```\n\n## Links\n\n* [AIO-KRPC](https://github.com/bashkirtsevich-llc/aiokrpc); \n* [AIO-UDP](https://github.com/bashkirtsevich-llc/aioudp);\n* [BEP 0005](http://www.bittorrent.org/beps/bep_0005.html);\n* [DHT on Wikipedia](https://en.wikipedia.org/wiki/Distributed_hash_table);\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bashkirtsevich-llc/aiobtdht", "keywords": "Async Bittorrent-DHT DHT", "license": "GPL3 License", "maintainer": "", "maintainer_email": "", "name": "aio-btdht", "package_url": "https://pypi.org/project/aio-btdht/", "platform": "", "project_url": "https://pypi.org/project/aio-btdht/", "project_urls": { "Homepage": "https://github.com/bashkirtsevich-llc/aiobtdht" }, "release_url": "https://pypi.org/project/aio-btdht/0.0.8/", "requires_dist": [ "aio-krpc-server (==0.0.6)" ], "requires_python": ">=3.6.*", "summary": "Asyncio Bittorrent DHT", "version": "0.0.8" }, "last_serial": 5653778, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "77791ef7e91b435a4da2f5d2eeb574d1", "sha256": "1260d5209d437b92c01b3b5739675076d8fc051b36dde057dc6f2a97887c7f48" }, "downloads": -1, "filename": "aio_btdht-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "77791ef7e91b435a4da2f5d2eeb574d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 22441, "upload_time": "2019-07-26T08:13:25", "url": "https://files.pythonhosted.org/packages/ac/63/fc344d3dc7617535db6e289cb006eecfe1d66e14e1d86f64b0e863901d2d/aio_btdht-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "421faa3db5465120432f6be8632e8cb9", "sha256": "4d9656c88957144a014444ebf1d2480bfab58ba128ef722a82c1608aa25a35ac" }, "downloads": -1, "filename": "aio-btdht-0.0.1.tar.gz", "has_sig": false, "md5_digest": "421faa3db5465120432f6be8632e8cb9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 8285, "upload_time": "2019-07-26T08:13:27", "url": "https://files.pythonhosted.org/packages/1f/ab/d0993b0b1bbd45a462be0a971bf2e202dd6802539c20317f7227f11a604d/aio-btdht-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "fe0ef36e13008596265e85b58411f60e", "sha256": "dcd834cc7fe30216211ceddcf693ccfbeaa87ca4b9149c38cc99691966f94ebb" }, "downloads": -1, "filename": "aio_btdht-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fe0ef36e13008596265e85b58411f60e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 22443, "upload_time": "2019-07-26T08:19:21", "url": "https://files.pythonhosted.org/packages/35/8a/1f7b005e9f684dff9841962fa1a8a4ed2638f2bdf74ffce218a614ecff46/aio_btdht-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f63ba24f610c00a77e2673cb884badaa", "sha256": "65c0b98dca3f25f2a78a54f2868146a9d20c5eab4ce93167de13e7d1e7d1a27f" }, "downloads": -1, "filename": "aio-btdht-0.0.2.tar.gz", "has_sig": false, "md5_digest": "f63ba24f610c00a77e2673cb884badaa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 8284, "upload_time": "2019-07-26T08:19:23", "url": "https://files.pythonhosted.org/packages/91/90/0e555c63a8db8bf3dc5d12e852b27d818ac75201e7041d5cd6e5a240fcdf/aio-btdht-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "962dcc8369a456e98d4956766d39cfee", "sha256": "af9a1c71c738048ddfb3da03eb753ef45f7e97791e7dcb06100a92f19dd13a2d" }, "downloads": -1, "filename": "aio_btdht-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "962dcc8369a456e98d4956766d39cfee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 22882, "upload_time": "2019-07-26T17:32:08", "url": "https://files.pythonhosted.org/packages/3b/24/b1ec2f472817a0942cebf04afd6c960b45a2e2b2c5405dec3a236f145e55/aio_btdht-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33e94576abe58ce35914a95e938abf20", "sha256": "d5a079d44bcadeddd29de153747c5072e15e3d74529379ab3ce716bc796adcdb" }, "downloads": -1, "filename": "aio-btdht-0.0.3.tar.gz", "has_sig": false, "md5_digest": "33e94576abe58ce35914a95e938abf20", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 8880, "upload_time": "2019-07-26T17:32:09", "url": "https://files.pythonhosted.org/packages/77/a5/dfbe058d0e2a7c6eef23853effbf3d2d0c1098192a3e769370233121c645/aio-btdht-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "798b27f5ef0becd61977d9ed46ba1ccb", "sha256": "4ad5a7b8bdda57de396390297022bcdfdeacad633051b006e8770345beef072d" }, "downloads": -1, "filename": "aio_btdht-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "798b27f5ef0becd61977d9ed46ba1ccb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 22930, "upload_time": "2019-07-30T17:36:41", "url": "https://files.pythonhosted.org/packages/cb/81/d21b550b0a8300842742b31d8960d9eb1c686c6852a5d66bdb2e7f83a29f/aio_btdht-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c685da0b9c693501dc65927e194e305e", "sha256": "8b1e6192d6cad889619e1d36a625bc493364b396ed4e2f9b7536b27e22d3d97c" }, "downloads": -1, "filename": "aio-btdht-0.0.4.tar.gz", "has_sig": false, "md5_digest": "c685da0b9c693501dc65927e194e305e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 8957, "upload_time": "2019-07-30T17:36:43", "url": "https://files.pythonhosted.org/packages/7e/c7/9147cd75c57e93407b7c7e0c1e6ead3b8270eaa6066e0d69ccd8eec870ef/aio-btdht-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "3a9a5773786bedc4151a9c4afacc5cc0", "sha256": "5475426f0bc2549fc6b8c0a26a5ad20ff24a02c60b711755219899e21f39fa7f" }, "downloads": -1, "filename": "aio_btdht-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "3a9a5773786bedc4151a9c4afacc5cc0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 23022, "upload_time": "2019-08-08T19:50:03", "url": "https://files.pythonhosted.org/packages/c8/fe/247692b1705e51b008db8e664a5202c43cf5996e5d1b01c9b8a54404f5f1/aio_btdht-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7fc5b1f6a786bffce8f245aadff08c92", "sha256": "5d8cabe49716bfaa7665d3a1c83496d103ef7c6c8d7138e0f187b6b0590b7367" }, "downloads": -1, "filename": "aio-btdht-0.0.5.tar.gz", "has_sig": false, "md5_digest": "7fc5b1f6a786bffce8f245aadff08c92", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 9011, "upload_time": "2019-08-08T19:50:05", "url": "https://files.pythonhosted.org/packages/70/da/5c2000a5f1d1b2d2c884571f317d2d7b65307ab68f42bf898047ff27d525/aio-btdht-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "bcd2aff82ec1ced1a8fceadf018f47e7", "sha256": "86f41afaea5f64bad4aaa56a6fd4e452aa23b4035b7e00567cfaca8c2eca2b0f" }, "downloads": -1, "filename": "aio_btdht-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "bcd2aff82ec1ced1a8fceadf018f47e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 23025, "upload_time": "2019-08-08T19:54:14", "url": "https://files.pythonhosted.org/packages/cc/8b/79cf94aef79f39dbd8f5f05e547fe4eb12a21a62cb8dd7ff568ffe57c893/aio_btdht-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68fb617b98b6a80fdcc02ff5cd979d07", "sha256": "552483db03bdc98bf35a69624ac041a7703a941da74f173febcff503e165a69d" }, "downloads": -1, "filename": "aio-btdht-0.0.6.tar.gz", "has_sig": false, "md5_digest": "68fb617b98b6a80fdcc02ff5cd979d07", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 9011, "upload_time": "2019-08-08T19:54:16", "url": "https://files.pythonhosted.org/packages/d8/a5/06009db6b9985230d1c482e614473a64a05e4d8e958f1c33dd9659c9d34d/aio-btdht-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "16c0683489e04f6f5abe2081a69b330b", "sha256": "6ec4e97f4c6c8bf35f5db38aef940a2a18bfaedcdbf87d5c48d9693a3470d8d9" }, "downloads": -1, "filename": "aio_btdht-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "16c0683489e04f6f5abe2081a69b330b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 23014, "upload_time": "2019-08-09T06:16:31", "url": "https://files.pythonhosted.org/packages/33/f2/8046e0e82edc628abb66bd4cc7da117bf708ff779a2d4eab3defc8ed17a5/aio_btdht-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6f7fcdc8792bb4ae8a7ec97bcdc29fe9", "sha256": "fecc5354e2453116283557afa5288fe2498f9e862e93b259e4d93e7cb95fc846" }, "downloads": -1, "filename": "aio-btdht-0.0.7.tar.gz", "has_sig": false, "md5_digest": "6f7fcdc8792bb4ae8a7ec97bcdc29fe9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 9012, "upload_time": "2019-08-09T06:16:33", "url": "https://files.pythonhosted.org/packages/33/de/06af9aaa6fe35e2849fde40d427751d6e45e4c74756534eb8e9f1793cb3b/aio-btdht-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "fc9276584dfe6c5a031cea082fa25249", "sha256": "016537d4b5539574f578c24acdc67e7ab406d7ea35dc7911b21333defdb39fb0" }, "downloads": -1, "filename": "aio_btdht-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "fc9276584dfe6c5a031cea082fa25249", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 23013, "upload_time": "2019-08-09T06:22:02", "url": "https://files.pythonhosted.org/packages/c7/cf/7eb9d7191b483d77873248dfe170d719a237e3d96db2e41140017064fa5d/aio_btdht-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c44210e18973038cd0dbd991ef62ef4", "sha256": "dd9591731e9e8e2488ef1aaccf0b853abfed1f9bd7b6873a4bea544a0fc82722" }, "downloads": -1, "filename": "aio-btdht-0.0.8.tar.gz", "has_sig": false, "md5_digest": "1c44210e18973038cd0dbd991ef62ef4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 9019, "upload_time": "2019-08-09T06:22:04", "url": "https://files.pythonhosted.org/packages/3f/af/941e36bb2897ea4d84595ca30eebbb760a423fdaa8720fd9c85d6517427f/aio-btdht-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fc9276584dfe6c5a031cea082fa25249", "sha256": "016537d4b5539574f578c24acdc67e7ab406d7ea35dc7911b21333defdb39fb0" }, "downloads": -1, "filename": "aio_btdht-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "fc9276584dfe6c5a031cea082fa25249", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.*", "size": 23013, "upload_time": "2019-08-09T06:22:02", "url": "https://files.pythonhosted.org/packages/c7/cf/7eb9d7191b483d77873248dfe170d719a237e3d96db2e41140017064fa5d/aio_btdht-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c44210e18973038cd0dbd991ef62ef4", "sha256": "dd9591731e9e8e2488ef1aaccf0b853abfed1f9bd7b6873a4bea544a0fc82722" }, "downloads": -1, "filename": "aio-btdht-0.0.8.tar.gz", "has_sig": false, "md5_digest": "1c44210e18973038cd0dbd991ef62ef4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.*", "size": 9019, "upload_time": "2019-08-09T06:22:04", "url": "https://files.pythonhosted.org/packages/3f/af/941e36bb2897ea4d84595ca30eebbb760a423fdaa8720fd9c85d6517427f/aio-btdht-0.0.8.tar.gz" } ] }