From 9550d2a1b80c96adeaa3ac1fde6c61d37182c802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Sun, 19 Feb 2023 22:23:11 +0100 Subject: analiza: filetypes --- analiza/zvezek.ipynb | 2031 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 1933 insertions(+), 98 deletions(-) (limited to 'analiza') diff --git a/analiza/zvezek.ipynb b/analiza/zvezek.ipynb index dcf0e51..1731b4c 100644 --- a/analiza/zvezek.ipynb +++ b/analiza/zvezek.ipynb @@ -2,10 +2,10 @@ "cells": [ { "cell_type": "code", - "execution_count": 29, + "execution_count": 118, "id": "7e32a042", "metadata": { - "scrolled": true + "scrolled": false }, "outputs": [ { @@ -13,7 +13,9 @@ "output_type": "stream", "text": [ "......\n", - "31190 @ 59.71765779494308 s\n" + "fixed bad single file torrent 4f269d8aefd647ee270842d53ec98aebd23a4afe\n", + "fixed bad single file torrent 7b09ae0b612dafc1744562dccbbe4becf4d633c3\n", + "35109 @ 70.98992924904451 s\n" ] } ], @@ -31,7 +33,6 @@ "class Torrent():\n", " def __init__(self):\n", " self.sha1 = b''\n", - " self.duplicates = [] # filenames of duplicated files\n", " self.files = {}\n", " self.type = Type.UNDEF\n", " def file(self, f):\n", @@ -43,37 +44,42 @@ " self.dict = decode(b)\n", " if b'pieces' in self.dict.get(b'info'):\n", " self.dict.get(b'info').pop(b'pieces')\n", - " if b'file tree' in self.dict.get(b'info').keys():\n", - " self.type = Type.V2\n", - " def filetree(names):\n", - " r = {}\n", - " for key in names.keys():\n", - " if key == b'':\n", - " return names.get(key).get(b'length')\n", - " r[key] = filetree(names.get(key))\n", - " return r\n", - " self.files = filetree(self.dict.get(b'info').get(b'file tree'))\n", - " self.dict.get(b'info').pop(b'file tree')\n", " if b'files' in self.dict.get(b'info').keys():\n", - " if self.type is Type.V2:\n", + " self.type = Type.V1\n", + " for file in self.dict.get(b'info').get(b'files'):\n", + " if file.get(b'attr') is not None and b'p' in file.get(b'attr') or b'padding.file' in b'/'.join(file.get(b'path')) or b'.pad' in file.get(b'path'):\n", + " continue\n", + " def insert_file(d, path, length, self):\n", + " name = path.pop()\n", + " if not len(path):\n", + " d[name] = length\n", + " return\n", + " if name not in d.keys():\n", + " d[name] = {}\n", + " insert_file(d[name], path, length, self)\n", + " file.get(b'path').reverse()\n", + " insert_file(self.files, file.get(b'path'), file.get(b'length'), self)\n", + " self.dict.get(b'info').pop(b'files')\n", + " if b'file tree' in self.dict.get(b'info').keys(): # some torrents have broken file trees so we use files first\n", + " if self.type is Type.V1:\n", " self.type = Type.HYBRID\n", " else:\n", - " for file in self.dict.get(b'info').get(b'files'):\n", - " def insert_file(d, path, length, self):\n", - " name = path.pop()\n", - " if not len(path):\n", - " d[name] = length\n", - " return\n", - " if name not in d.keys():\n", - " d[name] = {}\n", - " insert_file(d[name], path, length, self)\n", - " file.get(b'path').reverse()\n", - " insert_file(self.files, file.get(b'path'), file.get(b'length'), self)\n", - " self.type = Type.V1\n", - " self.dict.get(b'info').pop(b'files')\n", + " def filetree(names):\n", + " r = {}\n", + " for key in names.keys():\n", + " if key == b'':\n", + " return names.get(key).get(b'length')\n", + " r[key] = filetree(names.get(key))\n", + " return r\n", + " self.files = filetree(self.dict.get(b'info').get(b'file tree'))\n", + " self.dict.get(b'info').pop(b'file tree')\n", " if not len(self.files):\n", " self.type = Type.V1\n", " self.files[self.dict.get(b'info').get(b'name')] = self.dict.get(b'info').get(b'length')\n", + " first_filename = [i for i in self.files.keys()][0]\n", + " if len(self.files) == 1 and self.files[first_filename] == {}:\n", + " print(\"fixed bad single file torrent\", self.sha1.hex())\n", + " self.files[first_filename] = self.dict.get(b'info').get(b'length')\n", " def paths(self):\n", " def paths_r(d, path=None):\n", " if path is None:\n", @@ -118,64 +124,12 @@ }, { "cell_type": "code", - "execution_count": 30, - "id": "b3e343fe", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "31190 @ 2.270925747929141 s 173.66823510221093 TiB\n" - ] - } - ], - "source": [ - "s = monotonic()\n", - "siz = 0\n", - "for sha1, torrent in torrents.items():\n", - " for path, size in torrent.paths():\n", - " siz += size\n", - "print(len(v), \"@\", monotonic()-s, \"s\", siz/(1024*1024*1024*1024), \"TiB\")" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "30237511", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "31190 @ 2.0061122900806367 s 2199626\n" - ] - } - ], - "source": [ - "s = monotonic()\n", - "files = 0\n", - "for sha1, torrent in torrents.items():\n", - " files += sum(1 for x in torrent.paths())\n", - "print(len(v), \"@\", monotonic()-s, \"s\", files)" - ] - }, - { - "cell_type": "code", - "execution_count": 96, + "execution_count": 67, "id": "e170de45", "metadata": { "scrolled": false }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "31190 @ 0.00032011792063713074 s 2199626\n" - ] - }, { "data": { "application/javascript": [ @@ -1147,7 +1101,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -1155,11 +1109,18 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.17794210999272764 za 64 različnih odjemalcev\n" + ] } ], "source": [ "s = monotonic()\n", - "def uas(normalize=True):\n", + "def uas(normalize=True, minrepr=0):\n", " odjemalci = {}\n", " for sha1, torrent in torrents.items():\n", " odjemalec = torrent.dict.get(b'source').get(b'v')\n", @@ -1175,21 +1136,29 @@ " odjemalci[odjemalec] = 1\n", " else:\n", " odjemalci[odjemalec] += 1\n", - " odjemalci = [(v, k) for k, v in odjemalci.items()]\n", - " sorted(odjemalci, reverse=True)\n", - " return odjemalci\n", - "print(len(v), \"@\", monotonic()-s, \"s\", files)\n", - "odjemalci = sorted(uas(True), reverse=True)\n", + " trueodj = {\"ostali\": 0}\n", + " count = 0\n", + " for key, value in odjemalci.items():\n", + " count += 1\n", + " if value < minrepr:\n", + " trueodj[\"ostali\"] += value\n", + " else:\n", + " trueodj[key] = value\n", + " trueodj = [(v, k) for k, v in trueodj.items()]\n", + " return trueodj, count\n", + "odjemalci, count = uas(True, minrepr=0.005*len(torrents))\n", + "odjemalci = sorted(odjemalci, reverse=True)\n", "from matplotlib import pyplot\n", "%matplotlib notebook\n", "fig, axes = pyplot.subplots()\n", "axes.pie([sights for sights, name in odjemalci], labels=[name for sights, name in odjemalci])\n", - "fig.show()" + "fig.show()\n", + "print(monotonic()-s, \"za\", count, \"različnih odjemalcev\")" ] }, { "cell_type": "code", - "execution_count": 143, + "execution_count": 12, "id": "52de34d6", "metadata": {}, "outputs": [ @@ -1197,7 +1166,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "31190 @ 0.13778187101706862 s 36\n" + "0.13192449719645083 s 39\n" ] }, { @@ -2171,7 +2140,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -2179,6 +2148,51 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3 [1, '', '93f549c401bebe4f86ef23626e0fed3d06183b02']\n", + "5555555 [1, '555555555555555555', '93f549c401bebe4f86ef23626e0fed3d06183b02']\n", + "name.utf8 [1, 'Connections', 'a23296ce90328791cb6974cf6f6306da4dd89735']\n", + "unique_torrent [1, 1, '2c3ea79de0771079e41fc25f4cabf23e11041829']\n", + "www.baidu.com [1, 'www.baidu.com', '43b238596c66575e7dfcd4d5b1d0fadb6c393adc']\n", + "entropy [1, 1460043970, '0635e6c7d348c2603501e9fa53e4cf07f9e31b5e']\n", + "license [1, OrderedDict([(b'creative-commons', OrderedDict([(b'attributionAuthor', b'Dave Doobie Aaron'), (b'attributionTitle', b'Doobie'), (b'attributionUrl', b'http://fb.com/doobiebrooklyn'), (b'licenseUrl', b'http://creativecommons.org/licenses/by-nc/4.0/')]))]), '1d670c41fd340c8ee280157400744402740fc1fd']\n", + "还 [1, '百度', '647e1210953d6080f714f0f8dabffe6ee9852800']\n", + " [2, 1, 'fa6fbc7d7796e49fbdf47731fe06a6e20ee74bb5']\n", + "abc [2, 'abc', '9c8047972d058dee41bab8ab68ad5da7c24275ed']\n", + "nnm-club_cool [3, 1, '57f6facb1bcef159b8075b578053fb4790e0c8d5']\n", + "tracker [5, '', 'e8ca2609b174df7b5c26538fb6f96d77a367da42']\n", + "x-amz-bucket [5, 'quranwave', '3af8e25c9eeca9402351820d8681fe0945c63cdb']\n", + "x-amz-key [5, 'torrent/70.zip', '3af8e25c9eeca9402351820d8681fe0945c63cdb']\n", + "attr [10, 'h', 'c9a279c4dff3b38ef806abb98515382798907654']\n", + "unique [10, 'fbvPqZTXkKQzRJzy6LXkdIp3iJoTNe', '3a84117d98683bd4a657a37932886d206486c11e']\n", + "comment [11, 'Torrent downloaded from torrent cache at http://torcache.net/', 'e92cd8e1ed1defad6d5211a42d2dbdf1e368b834']\n", + "sha256 [12, b'\\xfe\\x01\\x01\\xa4\\xf5Z\\xcd\\xa4\\xd9\\t\\x7f\\x8d\\x1c\\x9d\\x1a\\x89\\xdcV\\x9e\\x92\\xd6A\\xbf\\xf9\\x81\\x9a\\xea^\\xc8\\xcfT\\xcf', '1c565cb3249a8da64dbf7a82b3ed39e637e6e239']\n", + "creation date [36, 1400017482, '4488d559d4404875022d53c6039b0025c947ac84']\n", + "md5sum [36, 'e27e7b621f0adbcf072e4f13d78c4fc8', 'ef0c6b03d16457e1134bc63c18d527221639da8e']\n", + "cross_seed_entry [40, '02e940fec782a353d2e767cecde08041', 'b7c0ac4a9834c8e39f543f3f721eb90fbb58e179']\n", + "sha1 [68, b'\\xbe^\\xdc\\xd8\\x99\\x98\\xf0\\xe8_\\x8d\\xcbZ\\xc7\\xd21\\t`\\xec\\x9c\\xee', 'b4bf549d9d48bce1c1e026ff451ee76069b98c00']\n", + "collections [92, [b'org.archive.relaxingsounds'], 'ed7d4e9657cbfcde6baf89ace313ae77a1cefe91']\n", + "meta version [223, 2, '18d35502fca02a30811e4e001809ddd4147167e6']\n", + "filehash [229, b'\\xc9m.\\x93\\xbd\\x18fj:\\xb3${\\x9ak\\x9e\\xdbUI\\xf2\\xb5', '44af4eb9d35b94218b6fe5eb25a30b8e22fa5844']\n", + "ed2k [282, b',\\xf0O\\x9e\\x829\\x8e\\x1b{\\xf58\\xea\\x94\\n\\xe8\\x92', '44af4eb9d35b94218b6fe5eb25a30b8e22fa5844']\n", + "source [667, 'BT世界网 https://www.btsj6.com/', '417ef639eb95fbf68175a6a6b03076f9ee5f5744']\n", + "file-duration [861, [0, 0, 39097], '449a9054916600bc0a395a47c4a2421aa06ad04a']\n", + "file-media [861, [-1, -1, 0], '449a9054916600bc0a395a47c4a2421aa06ad04a']\n", + "profiles [861, [OrderedDict([(b'acodec', b'aac'), (b'height', 0), (b'vcodec', b''), (b'width', 0)])], '449a9054916600bc0a395a47c4a2421aa06ad04a']\n", + "publisher-url.utf-8 [1261, 'http://my155.cc', '4488cffb9ad5afc1174bc96754e9887158ce03eb']\n", + "publisher.utf-8 [1302, '小隻馬', '4488cffb9ad5afc1174bc96754e9887158ce03eb']\n", + "publisher-url [1837, 'http://my155.cc', '4488cffb9ad5afc1174bc96754e9887158ce03eb']\n", + "publisher [1931, '小隻馬', '4488cffb9ad5afc1174bc96754e9887158ce03eb']\n", + "name.utf-8 [2658, '60 Assorted Magazines Collection PDF September 4 2022 Set 3', '449a9e0e7375b6b6b7f55bdd6214f034a2edd4b8']\n", + "private [3984, 0, '449f65629260c258a999e6474f22ae00e83ee47a']\n", + "length [11058, 5209971966, '449a38ef7e042bd2d75e8921aa02f6f244165d9d']\n", + "name [33695, 'Big Buck Bunny', 'dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c']\n", + "piece length [33695, 262144, 'dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c']\n" + ] } ], "source": [ @@ -2193,26 +2207,1847 @@ " value = value.decode()\n", " except UnicodeDecodeError:\n", " pass\n", - " keys[key.decode()] = [1, value]\n", + " keys[key.decode()] = [1, value, sha1.hex()]\n", " else:\n", " keys[key.decode()][0] += 1\n", - "print(len(v), \"@\", monotonic()-s, \"s\", len(keys))\n", "sort = sorted(keys, key=lambda x: keys[x][0])\n", + "print(monotonic()-s, \"s\", len(keys))\n", "%matplotlib notebook\n", "fig, ax = pyplot.subplots();\n", "ax.barh(sort, [keys[x][0] for x in sort])\n", "pyplot.xscale(\"log\")\n", "pyplot.xlabel(\"število pojavitev ključa v slovarju info\")\n", - "fig.show() ## TODO komentiraj" + "fig.show() ## TODO komentiraj\n", + "for i in sort:\n", + " print(i, keys[i])" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "fea0f2b6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.07559785293415189 s 92.27481822228818 brez ključa source, publisher ali publisher-url\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
PMEDIA 123
http://tapochek.net/index.php 106
高清下载吧! 87
https://FreeCourseWeb.com 85
灣搭拉咩拉 71
脫拉庫 65
1024社區最新地址 57
第一會所新片@SIS001 57
大师兄福利网 56
50
2048 49
LostFilm.TV 48
RV原创 32
小贾_KTXP 31
1024核工厂 31
2048核基地 30
https://hjd.tw 30
[https://tanhuazu.com] 探花族社区 28
https://crackshash.com/ 28
國產精品 25
吃雞大神 23
1024社區 23
老含及 23
b48t.com 21
https://rh2048.com 20
麻豆之神 19
欧宝 19
@蜂鳥论坛@ 18
JAV Torrent 掲示板 18
小隻馬 17
发发发 17
刷刷刷 16
1024 16
1024工厂 16
AV大平台 16
Weagogo 15
第一會所新片 15
hjd.tw 15
b'\\xcf\\xeb\\xb7\\xa2\\xc8\\xb4\\xb2\\xbb\\xbb\\xe1' 14
不予 13
xp1024 12
https://1tors.ru/ 12
小樱 11
美女裸聊直播 11
發片小王子@18p2p 11
老司机论坛 11
(美女裸聊直播 uur68.com) 11
BT世界网 https://www.btsj6.com/ 10
olo 10
[animelayer.ru] Animelayer 10
https://discord.gg/vbJ7RTn 10
b'\\xb3\\xcc\\xb7sAV \\xa4\\xd1\\xaa\\xc5\\xbd\\xd7\\xbe\\xc2 IP' 10
PiRaX @ TamilBlasters.Net 10
nyaa001 9
b'dioguitar23(\\xb2\\xc4\\xa4\\xbb\\xa4\\xd1\\xc5]\\xa4\\xfd)\\xad\\xec\\xb3\\xd0' 9
orion 9
愛在黑夜001 9
Zelka.ORG 8
约战竞技场 8
xue0117 8
BBVC 8
threesixtyp 7
dio88.net(第六天魔王)@最新AV海量免費播放~魔王在線 7
https://infocon.org/ 7
dioguitar23(第六天魔王)@dioguitar23.net 7
Zamunda.NET 7
U6A6磁力搜索---U6A6.COM 6
[tp.m-team.cc] M-Team - TP 6
b'\\xb7\\xf6\\xba~\\xad\\xd1\\xbc\\xd6\\xb3\\xa1 dioguitar23 \\xad\\xec\\xb3\\xd0' 6
6969bt.com 6
百撸社区 6
www.dio8899.net(第六天魔王)@最新AV海量免費播放~魔王在線 6
規懶趴會 6
性吧RV原创 5
K8bet 5
b'\\xc1\\xf9\\xd4\\xc2\\xc1\\xaa\\xc3\\xcb' 5
94i88影城-点击跳转 5
百撸社区|高清资源 5
cangkong 5
♥im520♥ 5
arsenal-fan 5
[http://x-torrents.org] X-Torrents.org 5
dioguitar23.co(第六天魔王)@最新AV海量免費播放~魔王在線 5
1024核工厂/ 5
PMEDIA NETWORK 5
arsenal-fan@avsp2p.com 5
00armand00 5
dioguitar23(第六天魔王)@mw6.me 5
[https://majomparade.eu] 5
b'\\x9e\\xb3\\xb4\\xee\\xc0\\xad\\xdf\\xe3\\xc0\\xad@kb978.com' 4
https://downloadcursos.top/ 4
youiv 4
Burnbit 4
rutracker.org 4
olo@SIS001 4
b'\\xab\\xb0\\xa5\\xab\\xad\\xb7\\xb1\\xa1~\\xc5]\\xa7\\xd9\\xad\\xec\\xb3\\xd0' 4
魔王之家 4
杏吧 4
hotaru 4
xueru10405 4
1030社區---1030.ws 4
www.crackshash.com 4
https://www.javhdbbs.com 4
成年人的小游戏 4
kenelm 4
HiHBT 精品薈萃 4
m6688.net(第六天魔王)@最新AV海量免費播放~魔王在線 3
Mp4Ba 3
杏吧论坛 3
XIU 3
atrrea 3
1314 3
oldman原創DVD@18p2p.com 3
sogood@18p2p 3
? nike ? 3
https://toonshub.xyz 3
yoy123 3
https://www.torrentdosfilmes.tv/ 3
dioguitar23(第六天魔王) 3
广东雨神 3
上善若水@www.sexinsex.net 3
RZK 3
rxrj 3
YURASUKA 3
【神秘巨星CI】 3
dio66.net(第六天魔王)@最新AV海量免費播放~魔王在線 3
GIF出处系列 3
更多精彩!尽在99BT工厂@5120911 3
dioguitar23@dio66.net 3
dioguitar23(第六天魔王)@hotavxxx.com 3
x 3
萌你一脸@第一会所 3
罗马教皇@草榴社区 luckjam@sexinsex.net 3
么么哒 3
1stDragon 3
nyaa.si 3
uid-346380 3
Download from Sajber.org/blog 3
美女裸聊约炮 3
@微信订阅号专注稀有汁源 3
susun=eastv 3
buxxa 3
BT-btt.com 3
99BT工厂 @ 5120911 3
【RV原创】【sex8.cc】 3
Gfker@1024核工廠 3
鱼香肉丝 3
Hotaru 3
b'99\\xa5\\xfd\\xa5\\xcd' 3
https://DesignOptimal.com 3
zgome@18p2p 2
顶冠文化 2
MN Nambiar @ TamilBlasters.Net 2
老司机 2
dioguitar23.net(第六天魔王)@最新AV海量免費播放~魔王在線 2
https://media.defcon.org/ 2
https://sexasia.net/feed 2
黑色点击 2
1024社区 2
http://www.acgyinghua.com/ 2
嗨咻阁 2
Lucian2009@第一会所 2
枫雪动漫 2
dioguitar23(第六天魔王)@bbs.hotavxxx.com 2
roger92402094 2
https://www.terralibera.net/ 2
lxdng1218 2
飘嫖 2
红馆-红人馆-网络红人之家 2
ccc32.com 2
chikan 2
神秘巨星CI 2
dioguitar23(第六天魔王)@dio999.com 2
注册就送39元,联系:330545486 2
b'\\xb7\\xf6\\xba~\\xad\\xd1\\xbc\\xd6\\xb3\\xa1@\\xb4A\\xab\\xbd\\xa8\\xe0' 2
ITELLYOU 2
联系TG:yyllzy,fulihuoqu 2
強片皇帝999 2
XP1024 2
sogclub No.2 2
mmklp@第一会所 2
ssss1111@18p2p 2
bbvc 2
感冒清@sis001 2
afnami@64.78.163.55 2
M88(明陞) 2
西門吹水 2
www.dio7777.net(第六天魔王)@最新AV海量免費播放~魔王在線 2
goldpuzjying 2
uid=1591117 2
rh2048.com/ 2
www.javhdbbs.com 2
b'\\xb3\\xc7\\xca\\xd0\\xefL\\xc7\\xe9~\\xc4\\xa7\\xbd\\xe4\\xd4\\xad\\x84\\x93' 2
[http://energy-torrent.com] Energy-Torrent 2
SoushkinBoudera 2
[http://bko.baibako.tv] BaibaKo.TV 2
Western/HD-Jiggly 2
冷月无声 2
奥利给 2
b'\\xab\\xb0\\xa5\\xab\\xad\\xb7\\xb1\\xa1~\\xa4p\\xb9t\\xad\\xec\\xb3\\xd0' 2
b'\\xc1\\xf9\\xd4\\xc2\\xcc\\xec\\xbf\\xd5' 2
b'tanw\\xa9\\xceyk3325@www.sogclub.com' 2
3Li 2
b'giogio99\\xad\\xec\\xb3\\xd0' 2
BradPitt 2
downloadcursos.top 2
xinnian 2
漫之学园 2
9200 2
清雨 2
crazylazy 2
安西教练 2
感冒清@sis001.com 2
淘宝天猫优惠券秒杀 2
会飞的象@第一会所 2
mule_by_SpeedPluss.ORG 2
BT伙计 2
gnhyc11@18p2p.com 1
fyoulapk@18p2p 1
塔卡小爹賽 1
HD一条街论坛 1
dioguitar23原創 1
b'\\xb3\\xce\\xbf\\xd5\\xd1\\xa7\\xd4\\xb0' 1
cnmzlwb 1
zb77@18p2p 1
https://www.asmr.one/work/RJ374870 1
[uid-1591117] 1
奈特羅德 1
https://mega.nz/#F!DK4lCSwB!QdwaMCT3SpOxISAgnuX7nQ 1
小葫芦@www.sis001.com 1
柏林没有梦 1
ls611 1
qqtnt007 1
3E523E31D247_by_FDZone.ORG 1
JPopsuki 2.0 626225292 1
https://elamigosedition.com/ 1
guroemon 1
lyf634041775 1
1234567890 1
https://bitnova.info/ 1
asfile@SIS001 1
b'\\xbd\\xad\\xc4\\xcf\\xb7\\xe7\\xd3\\xea' 1
mikocon @ bbs.2djgame.net 1
http://mm.aayun.cc 1
aqcd123 1
维尼 1
iii 1
pornolab 1
极影字幕 1
b'\\xc9\\xab\\xd6\\xd0\\xc9\\xab@ypzhq\\xd4\\xad\\xb4\\xb4' 1
roger92402094(SIS) 1
erest 1
Baslilon=Baslilon23 1
b'\\xab\\xb0\\xa5\\xab\\xad\\xb7\\xb1\\xa1 dioguitar23 \\xad\\xec\\xb3\\xd0' 1
sigma 1
寂寞如漫天雪花 1
C:\\Users\\pongphon\\OneDrive\\Desktop\\New folder (2)\\FC2PPV 1218169 [Odorless video] [Leaked] JULIA High image quality BEB-016 JULIA Sweaty Backroom .ts 1
JPopsuki 2.0 2131292835 1
不予@暗香阁 1
sogclub No.2 BY sogclub 1
uid-1591117 1
b'\\xba\\xda\\xc2\\xfb\\xb0\\xc5' 1
微信一夜ONS协会 1
b'KUHO\\xd2\\xd5\\xca\\xf5\\xc1\\xaa\\xc3\\xcb' 1
b'\\xb6\\xc0\\xa5i\\xa8\\xe0_by_FDZone.org' 1
中文字幕無水印 1
http://www.wozai020.com 1
sop168 1
b'SP\\xa7\\xe4\\xbc\\xd6\\xa4l@\\xaa\\xe1\\xa9M\\xa9|' 1
tiantianlu186@公仔箱論壇 1
luckyjune 1
SK`|yEsMan<sk·> 1
b'@aaming2002@\\xa3\\xa2\\xb3\\xd5\\xba\\xba\\xa3\\xa2\\xc9\\xab\\xd6\\xd0\\xc9\\xab\\xa3\\xa2\\xc3\\xce\\xb9\\xab\\xd4\\xb0\\xa3\\xa2MimiP2P\\xa3\\xa2\\xa3\\xc4.\\xa3\\xc3P2P\\xa3\\xa2WaiKeungSite\\xa3\\xa2p2pZONE\\xa3\\xa2Mr.P2P\\xa3\\xa2' 1
hkkane@18p2p 1
www.4hu.com 1
b'\\xaeL\\xaa\\xef\\xacK@99p2p' 1
夜蒅星宸@第一会所 1
【更多资源用加手机QQ-17182252050】 1
jjjhn2003@18p2p 1
XIEYUXIA 1
b'@\\xc0\\xcb\\xb7\\xad\\xd4\\xc6@' 1
www.dio889.net(第六天魔王)@最新AV海量免費播放~魔王在線 1
TYBBX2 1
yjs521 1
hhbb_zcm 1
twsb.co 1
https://downloadcursos.top 1
https://www.musicastorrent.com/ 1
pandafood#panda1314#gg5123 獨家首發 1
探花族 1
zhoudehua200 1
AV大平台 - 发布页 1
b'tanw\\xa9\\xceyk3325' 1
Rivera@18p2p.com 1
b'\\xd7\\xcf\\xc3\\xb5\\xb9\\xe5' 1
[kp.m-team.cc] M-Team - TP 1
www.spankhash.com 1
UID 235465@www.mimip2p.net 1
草榴社区@MianSheng 1
Странник 1
CHANNEL NEO 1
hgr168168 1
BJ 1
mecaca 1
昆仑虚之巅@草榴社區 1
[欧美美@草榴社区] 1
没线的风筝 1
尼尼撸-综合网站 1
100%真人激情裸聊 www.78xo.com 1
jettej 1
Daddy 1
diamond 1
中文片库 1
https://worldmkv.com 1
b'yatsingkoon@\\xa1\\xb9\\xb6q\\xb3c\\xa4\\xc0\\xa8\\xc9\\xbd\\xd7\\xbe\\xc2\\xa1\\xb9' 1
入微 1
https://discord.com/invite/wweVHZd6qg 1
602@第一会所 1
3484988vikci@第一会所 1
evilzy 1
化骨龍 1
https://www.kobo.com/ebook/an-archdemon-s-dilemma-how-to-love-your-elf-bride-volume-13 1
cqkd_czy 1
不辣de皮特 1
kaito 1
u3c3.com 1
☆影视帝国论坛☆ 1
aaa23 1
hevcbay.com 1
gn7650104 1
老舅电影 1
捕鼠人 1
https://www.gamestorrents.nu/ 1
Aidoru-Online 1
公主殿下@第一會所 1
MP4BA电影网 1
b'\\xb8\\xb4\\xbb\\xee126' 1
微信公众号:卡其影视分享 1
百虎动画 1
425307@癡漢俱樂部 1
avp2p 1
GIFchuchushipin 1
EndlesSea 1
Tanhuazu-探花族 1
推特搞啥呢 1
@K8bet.io@ 1
Misfits 1
黑暗虫洞 1
magazinesbb.com 1
b'\\xc9\\xab\\xd6\\xd0\\xc9\\xab\\xd5\\x93\\x89\\xaf@www.SIS.xxx' 1
草榴社区@z10271 1
冰封爱河 1
b'[http://www.uniongang.net] \\xd4\\xe8\\xeb\\xfc\\xec\\xfb \\xee\\xf2 ELEKTRI4KA | \\xdd\\xcb\\xc5\\xca\\xd2\\xd0\\xc8\\xd7\\xca\\xc0 \\xed\\xe0 Uniongang' 1
zhangqq789@第一会所 1
D2mp4 1
wangye6 1
ann@myfun4u.org 1
kino9999@18p2p 1
b'CHD\\xc1\\xaa\\xc3\\xcb' 1
satu@hongfire 1
polee 1
GM3089@18P2P 1
BT工厂 @ 5120911 1
【U6A6.COM】_全网磁力最快更新 1
sklc-P2P101.COM 1
b'\\xb0\\xcb\\xd6\\xd8\\xf7\\xec' 1
b'\\xcc\\xda\\xb7\\xc9\\xd4\\xda\\xcf\\xdf' 1
b'doa_o[\\xb9\\xc5\\xce\\xef\\xce\\xdd]' 1
缘聚岛 1
素人辣妹正妹報報 1
b'sweetsmile@CHD\\xc1\\xaa\\xc3\\xcb' 1
javtv.me 1
zhaochuan99 1
草榴社区 1
四魂制作组 1
动漫花園 1
View my conspiracy torrents at 1
春卅娘@18p2p 1
1024核工厂最新地址 1
JPopsuki 2.0 904012437 1
wearebest@18P2P 1
HTCdesireHD@第一會所 1
11.55 1
shinjico 1
得得撸 www.dedelu.com 1
Western&HD-Jiggly 1
ningchia 1
filelist.ro 1
dengzhi123_by_FDZone.ORG 1
b'\\xab\\xb0\\xa5\\xab\\xad\\xb7\\xb1\\xa1 dioguitar23(\\xb2\\xc4\\xa4\\xbb\\xa4\\xd1\\xc5]\\xa4\\xfd)\\xad\\xec\\xb3\\xd0' 1
[http://rudub.tv] RuDub.TV 1
HZHJS 1
Audible 1
skyuz 1
ever 1
El tio WAPILLO :v 1
草莓TV 1
加菲豆@第一会所 1
yaoshiqiao 1
PB 1
b'\\xb9\\xda\\xa4\\xbd\\xb6\\xe9\\xaeT\\xbc\\xd6\\xa4u\\xa7{@p16847' 1
GF@1024核工廠 1
54CECB5A0EA7_by_FDZone.ORG 1
b'\\xc0\\xcb\\xd7\\xd3\\xd0\\xa1\\xb5\\xb6' 1
rendell_by_mimip2p.net, rendellxx_by_fdzone.org, rendell@SexInSex! 1
https://e-hentai.org 1
https://to-url.com/torrent-igruha 1
jinzebin86@18p2p.com 1
birdmanfocker@18p2p 1
GH37DgaBef6rQJyE2nvqb5YpS 1
AVdian@126.com 1
蜂鸟色区 1
亞瑟王 1
b'Bianca_Cooper_Touch99.com \\xa6\\xb3\\xa7\\xf3\\xa6h\\xa6n\\xb9\\xcf' 1
wT3j6PNrC5aOcD04yJ7xRotF8 1
村花论坛 1
b'\\xc4\\xfa_\\x89\\xf4\\xb9\\xab\\x88@\\x8a\\xca\\x98\\xb7\\xb9\\xa4\\xb7\\xbb' 1
FISH321@18P2P 1
第一会所 sis001 1
huPE@18P2P 1
houlai=biaoqian 1
b'qilibi@\\xc1\\xf9\\xd4\\xc2\\xc2\\x93\\xc3\\xcb' 1
天池妖尊 1
sing0212000 1
wandy_by_FDZone.org 1
XO@kazamis 1
百撸社区|高清影片 1
KOOK 1
HQC 1
mc733 1
爱游戏 1
1158012^@^18p2p 1
b'Bianca_Cooper \\xa7\\xf3\\xa6h\\xac\\xfc\\xb9\\xcf\\xa5u\\xa6bTouch99' 1
xiaocuitj 1
星星不舔屄 1
https://www.crnaberza.com CrnaBerza 1
boby@mimip2p 1
magnet360@163.com 1
Japanadultvideos 論壇 <-----按此瀏覽更多 1
[http://x-torrents.nu] X-Torrents.org 1
euphoricer 1
2048核基地!! 1
zlb273692399@第一会所 1
花和尚 1
b'\\xb4\\xbf\\xb0\\xae\\xc9\\xe7\\xc7\\xf8/wbzt' 1
三石@第一会所 1
JackyCheung@草榴社區 1
b'\\xbf\\xe7\\xca\\xa1\\xbe\\xdc\\xb7\\xf1@9999999' 1
菜牙电影网 1
mehappy2012 1
https://www.jp.square-enix.com/music/sem/page/chrono/trigger_revival/ 1
Scientists used to invent telephones, airplanes, microwave ovens... now all they invent is statistics that say they should get more funding. 1
RoxMarty 1
rczhi@18p2p.com 1
kkk8568 1
kenan2763 1
衣选集团 1
arthurwarlike@第一会所 1
b'\\xb3\\xc7\\xca\\xd0\\xefL\\xc7\\xe9~~\\xcb\\xba\\xd2\\xb9\\xd4\\xad\\x84\\x93' 1
東方明珠=ccvvm 1
从小缺钙 1
Jackie 1
www.lupola.com 1
ashow.cc 1
品色影院 1
8400327@草榴社區 1
gamezealot@18p2p 1
uhla454@第一会所 1
宅鱼 1
1024核工厂 Bt7086 1
hilllxs 1
豺狼也柔情 1
99堂 1
老肥 1
Chikyuji-Animes, 2006 maggle! 1
chaorentwo@18p2p 1
若無其事@18p2p.com 1
hhd000.com 1
掠风窃尘 1
b'\\xd3\\xd5\\xbb\\xf3\\xd3\\xe9\\xc0\\xd6\\xcd\\xf8\\xb5\\xe3\\xbb\\xf7\\xbd\\xf8\\xc8\\xeb \\xa8w\\xec\\xe1\\xbf\\xa1\\xc9\\xd9\\xec\\xe1\\xa8w' 1
Kura999 from WaikeungBBS 1
XFSUB 1
huiasd 1
b'Rory @ D.C.\\xb8\\xea\\xb0T\\xa5\\xe6\\xacy\\xba\\xf4' 1
https://t.me/deletetvwrestling 1
dodododo 1
Rambo@18p2p 1
b'\\xce\\xde\\xd0\\xc4\\xce\\xde\\xb4\\xe6' 1
filmplay 1
avdian@126.com 1
1025 1
956828@18p2p 1
夜游神 1
b'\\xb2\\xbb\\xb5\\xc3\\xb2\\xbb\\xc9\\xab' 1
vbiukj 1
buxxa=bbvc 1
jnd16d 1
烽火不熄 1
pietro716 1
Lus 1
b'\\x98Y\\xd4\\xad\\xa4\\xe6\\x97@' 1
國產無碼 1
b'\\xd0\\xc2\\xc7\\xd7\\xc3\\xdc\\xb0\\xae\\xc8\\xcb\\xc2\\xdb\\xcc\\xb3@\\xd6\\xc1\\xd7\\xf0\\xcc\\xec\\xc1\\xfa' 1
wangzhifeng@18p2p 1
dabohong_by_fdzone.org 1
TODO 1
b'\\xb7\\xc9\\xd3\\xb0\\xbf\\xcd\\xcd\\xf8' 1
yav.me 1
http://www.jizhang1.space/?3316427 1
pin0314(1470)@www.mycould.com 1
handsomemouse@18p2p 1
b'\\xa4\\xc6\\xb0\\xa9\\xc0s@mimip2p' 1
面瘫 1
遁去的壹 1
弄死你娃L@2018x.win 1
yyyyyuuuuu@18p2p 1
狼主@SexInSex.net 1
1394130143@第一会所 1
jove 1
电骡爱好者 1
westkyo@www.sis001.com 1
lzmcmbj@18p2p 1
dioguitar23(第六天魔王)@dioguitar23.me 1
VISTOR_by_FDZone.ORG 1
chris930 1
KTXP_秋沫 1
[WMAN-LorD] [UHD] [4K] [2160p] [REAL4K] [TGx] 1
b'A\\xab\\xac\\xa4\\xa3\\xa8}\\xc3\\xc8' 1
b'\\xb8\\xfc\\xb6\\xe0\\xb8\\xfc\\xd0\\xc2\\xb5\\xe7\\xd3\\xb0\\xcf\\xc2\\xd4\\xd8\\xc7\\xeb\\xb5\\xe3\\xbb\\xf7\\xd5\\xe2\\xc0\\xef' 1
Domaha.tv 1
destiny999@18p2p 1
水母飄 1
HOUSEKEEPER 1
RV原创组 1
月岚星辰520@第一会所 1
b'\\xc3\\xe2\\xb7\\xd1\\xd4\\xda\\xcf\\xdf\\xd2\\xf4\\xc0\\xd6' 1
www.1024pk.com 1
爱城 1
amge50@www.sogclub.com 1
OneStar 1
b'Jocky123#\\xb8\\xfc\\xb6\\xe0\\xb5\\xc4\\xbe\\xab\\xb2\\xca\\xd3\\xb0\\xc6\\xac!' 1
https://getcomics.info 1
点击-海量种子 1
btziyuan 1
[http://x-torrents.org] X-Torrents.org (ex X-Torrents.ru) 1
18p2p by_UID 1380364 1
https://www.lspback.com 1
foxmoder996 1
https://share.dmhy.org/topics/list/user_id/712935 1
玛尔亲王@第一会所 1
https://bbs2048.org/ 1
rtjhuytu 1
淨空法師專集網站 1
b'\\xa1\\xb6\\xbd\\xcc\\xd3\\xfd\\xca\\xd6\\xc0\\xad\\xca\\xd6\\xa1\\xb7' 1
mc733+zgome 1
Goddess 1
NikeのB@第一会所 1
b'dvt\\xb0\\xc9' 1
微博:止于影书,公众号:影遇见书,@小鱼 1
free4 1
靜風@sis001 1
https://www.1024btgc.com 1
kaniuniu 1
dcsk_By_FDZone.org 1
sigma@www.mimip2p.com 1
看翍荭尘 1
bjiok 1
lins2b 1
小馬克_by_FDZone.ORG 1
FSFS555@第一会所 1
flowerff 1
lascruces 1
?nike? 1
SEX8.CC 1
b'\\xb3\\xc9\\xc8\\xcb\\xc2\\xdb\\xcc\\xb3\\xbf\\xaa\\xb7\\xc5\\xd7\\xa2\\xb2\\xe1' 1
dio889.net(第六天魔王)@最新AV海量免費播放~魔王在線 1
APKMAZA.CO 1
13121152@18p2p 1
UID 185363@www.mimip2p.com 1
b'\\xa4^\\xa4\\xa2\\xb5\\xbe@FDZone.org' 1
更多资源联系qq1273288348 1
https://nyaa.si/user/mrshowoff 1
https://boards.4channel.org/h/#s=hentai+upscales 1
mimu@18P2P 1
b'\\xd7\\xd3\\xc7\\xe9 \\xd7\\xa3\\xba\\xd8\\xc9\\xab\\xd6\\xd0\\xc9\\xab \\xcb\\xc4\\xd6\\xdc\\xc4\\xea \\xcc\\xd8\\xb1\\xf0\\xcb\\xae\\xd3\\xa1\\xd1\\xb9\\xd6\\xc6' 1
殇情 1
风来西林 1
www.loliba.info 1
b'Nike\\xa4\\xce\\xa3\\xc2' 1
[www.pttime.org] PT时间 1
QxR 1
sunchiua_by_P2Pzone.org 1
wazx528 1
popgofansub 1
b'\\xc3\\xe2\\xb7\\xd1\\xb5\\xe7\\xd3\\xb0\\xcf\\xc2\\xd4\\xd8\\xbb\\xf9\\xb5\\xd8' 1
gremichaem 1
b'\\xd0\\xc7\\xb3\\xbd\\xd0\\xa1\\xb7\\xe7\\xa3\\xa6\\xbe\\xab\\xc9\\xf1\\xc9\\xab\\xcb\\xd8\\xa3\\xa6cookiexp\\xa3\\xc0\\xd1\\xb0\\xba\\xfc\\xc9\\xe7\\xc7\\xf8' 1
sukebei.nyaa.si 1
pademon18p2p 1
MingYSub 1
aaamfk+zgome+bbryans 1
cyxy@http://38.114.38.172/forum/ 1
b'\\xd3\\xd7\\xc5\\xae\\xbc\\xab\\xc6\\xb7' 1
https://e-hentai.org/g/2375721/1b5e081312/ 1
18P2P_dioguitar23.co(第六天魔王)@最新AV海量免費播放~魔王在線 1
b'AV\\xce\\xc4\\x99n\\xa3\\xfcADULT INTEGRATED COMMUNITY' 1
UID 1357210@18P2P.com 1
fuckkkingou 1
闲云野鹤 1
LAPUMiA.NeT 1
adult_cn 1
psoke 1
18p2p@liyang8926 1
尘封追忆+色十八 1
littlefatbee 1
秋叶TV 1
msy91 1
Niraya 1
https://www.kobo.com/ebook/that-time-i-got-reincarnated-as-a-slime-vol-13-light-novel 1
JPopsuki 2.0 941661648 1
yamyedye@18P2P 1
dansnow 1
H2CO3 1
Downloaded from CracksHash.com 1
b'\\x8e\\xf7\\x8e\\xf7@\\x88\\xc3\\x91\\xe9\\x9a\\xa0\\x8c\\xb4\\x91n' 1
kamigami 1
G@1024核工廠 1
The Seaside Corpse 1
b'\\xadw\\xbd\\xde_by_FDZone.ORG' 1
fangbayern 1
君乐 1
Doctor Who 1
第一流氓@18P2P 1
Deviloid.net 1
b'\\xc1\\xf9\\xd4\\xc2\\xc1\\xaa\\xc3\\xcb hgfhgf' 1
wcer@18p2p.com 1
https://www.yitarx.com 1
wuchengzhou9000@www.SexInSex.net 1
nwcd 1
p2p_user@mimip2p 1
zza@live.com 1
清风浪子@草榴社区 1
http://www.zone54.com 1
ssan998 1
xxfhd.com 1
mybmw320_by_SpeedPluss.ORG 1
woaibt@1024核工厂 1
b'[http://www.uniongang.tv] \\xd4\\xe8\\xeb\\xfc\\xec\\xfb \\xee\\xf2 ELEKTRI4KA | \\xdd\\xcb\\xc5\\xca\\xd2\\xd0\\xc8\\xd7\\xca\\xc0 \\xed\\xe0 Uniongang' 1
hegongc163 1
bigwai 1
t66y 1
cctc55 1
tto@18P2P 1
Antidot Team 1
Torrent Galaxy 1
https://rutor.org 1
萤火虫IT服务全国连锁 1
葬爱@18p2p 1
贴心话 1
xuerui810405 1
SoulSeek 1
abbt@18p2p.com 1
深深可许@第一会所 1
lixuhua 1
b'\\xcc\\x93\\x9fo' 1
animekayo.com 1
qiupianhao 1
173489627 1
wak11110@18P2P 1
[http://hdtracker.org] HD TRACKER 1
www.eien-acg.com 1
index0123 1
hhd800.com 1
hndwje 1
http://www.meitubb.com/forum.php 1
最新地址 1
https://anidb.net/file/3082403 1
更多精彩 @ 卡卡拉 1
olo@第一会所 1
" + ], + "text/plain": [ + "'\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
PMEDIA 123
http://tapochek.net/index.php 106
高清下载吧! 87
https://FreeCourseWeb.com 85
灣搭拉咩拉 71
脫拉庫 65
1024社區最新地址 57
第一會所新片@SIS001 57
大师兄福利网 56
50
2048 49
LostFilm.TV 48
RV原创 32
小贾_KTXP 31
1024核工厂 31
2048核基地 30
https://hjd.tw 30
[https://tanhuazu.com] 探花族社区 28
https://crackshash.com/ 28
國產精品 25
吃雞大神 23
1024社區 23
老含及 23
b48t.com 21
https://rh2048.com 20
麻豆之神 19
欧宝 19
@蜂鳥论坛@ 18
JAV Torrent 掲示板 18
小隻馬 17
发发发 17
刷刷刷 16
1024 16
1024工厂 16
AV大平台 16
Weagogo 15
第一會所新片 15
hjd.tw 15
b'\\\\xcf\\\\xeb\\\\xb7\\\\xa2\\\\xc8\\\\xb4\\\\xb2\\\\xbb\\\\xbb\\\\xe1' 14
不予 13
xp1024 12
https://1tors.ru/ 12
小樱 11
美女裸聊直播 11
發片小王子@18p2p 11
老司机论坛 11
(美女裸聊直播 uur68.com) 11
BT世界网 https://www.btsj6.com/ 10
olo 10
[animelayer.ru] Animelayer 10
https://discord.gg/vbJ7RTn 10
b'\\\\xb3\\\\xcc\\\\xb7sAV \\\\xa4\\\\xd1\\\\xaa\\\\xc5\\\\xbd\\\\xd7\\\\xbe\\\\xc2 IP' 10
PiRaX @ TamilBlasters.Net 10
nyaa001 9
b'dioguitar23(\\\\xb2\\\\xc4\\\\xa4\\\\xbb\\\\xa4\\\\xd1\\\\xc5]\\\\xa4\\\\xfd)\\\\xad\\\\xec\\\\xb3\\\\xd0' 9
orion 9
愛在黑夜001 9
Zelka.ORG 8
约战竞技场 8
xue0117 8
BBVC 8
threesixtyp 7
dio88.net(第六天魔王)@最新AV海量免費播放~魔王在線 7
https://infocon.org/ 7
dioguitar23(第六天魔王)@dioguitar23.net 7
Zamunda.NET 7
U6A6磁力搜索---U6A6.COM 6
[tp.m-team.cc] M-Team - TP 6
b'\\\\xb7\\\\xf6\\\\xba~\\\\xad\\\\xd1\\\\xbc\\\\xd6\\\\xb3\\\\xa1 dioguitar23 \\\\xad\\\\xec\\\\xb3\\\\xd0' 6
6969bt.com 6
百撸社区 6
www.dio8899.net(第六天魔王)@最新AV海量免費播放~魔王在線 6
規懶趴會 6
性吧RV原创 5
K8bet 5
b'\\\\xc1\\\\xf9\\\\xd4\\\\xc2\\\\xc1\\\\xaa\\\\xc3\\\\xcb' 5
94i88影城-点击跳转 5
百撸社区|高清资源 5
cangkong 5
♥im520♥ 5
arsenal-fan 5
[http://x-torrents.org] X-Torrents.org 5
dioguitar23.co(第六天魔王)@最新AV海量免費播放~魔王在線 5
1024核工厂/ 5
PMEDIA NETWORK 5
arsenal-fan@avsp2p.com 5
00armand00 5
dioguitar23(第六天魔王)@mw6.me 5
[https://majomparade.eu] 5
b'\\\\x9e\\\\xb3\\\\xb4\\\\xee\\\\xc0\\\\xad\\\\xdf\\\\xe3\\\\xc0\\\\xad@kb978.com' 4
https://downloadcursos.top/ 4
youiv 4
Burnbit 4
rutracker.org 4
olo@SIS001 4
b'\\\\xab\\\\xb0\\\\xa5\\\\xab\\\\xad\\\\xb7\\\\xb1\\\\xa1~\\\\xc5]\\\\xa7\\\\xd9\\\\xad\\\\xec\\\\xb3\\\\xd0' 4
魔王之家 4
杏吧 4
hotaru 4
xueru10405 4
1030社區---1030.ws 4
www.crackshash.com 4
https://www.javhdbbs.com 4
成年人的小游戏 4
kenelm 4
HiHBT 精品薈萃 4
m6688.net(第六天魔王)@最新AV海量免費播放~魔王在線 3
Mp4Ba 3
杏吧论坛 3
XIU 3
atrrea 3
1314 3
oldman原創DVD@18p2p.com 3
sogood@18p2p 3
? nike ? 3
https://toonshub.xyz 3
yoy123 3
https://www.torrentdosfilmes.tv/ 3
dioguitar23(第六天魔王) 3
广东雨神 3
上善若水@www.sexinsex.net 3
RZK 3
rxrj 3
YURASUKA 3
【神秘巨星CI】 3
dio66.net(第六天魔王)@最新AV海量免費播放~魔王在線 3
GIF出处系列 3
更多精彩!尽在99BT工厂@5120911 3
dioguitar23@dio66.net 3
dioguitar23(第六天魔王)@hotavxxx.com 3
x 3
萌你一脸@第一会所 3
罗马教皇@草榴社区 luckjam@sexinsex.net 3
么么哒 3
1stDragon 3
nyaa.si 3
uid-346380 3
Download from Sajber.org/blog 3
美女裸聊约炮 3
@微信订阅号专注稀有汁源 3
susun=eastv 3
buxxa 3
BT-btt.com 3
99BT工厂 @ 5120911 3
【RV原创】【sex8.cc】 3
Gfker@1024核工廠 3
鱼香肉丝 3
Hotaru 3
b'99\\\\xa5\\\\xfd\\\\xa5\\\\xcd' 3
https://DesignOptimal.com 3
zgome@18p2p 2
顶冠文化 2
MN Nambiar @ TamilBlasters.Net 2
老司机 2
dioguitar23.net(第六天魔王)@最新AV海量免費播放~魔王在線 2
https://media.defcon.org/ 2
https://sexasia.net/feed 2
黑色点击 2
1024社区 2
http://www.acgyinghua.com/ 2
嗨咻阁 2
Lucian2009@第一会所 2
枫雪动漫 2
dioguitar23(第六天魔王)@bbs.hotavxxx.com 2
roger92402094 2
https://www.terralibera.net/ 2
lxdng1218 2
飘嫖 2
红馆-红人馆-网络红人之家 2
ccc32.com 2
chikan 2
神秘巨星CI 2
dioguitar23(第六天魔王)@dio999.com 2
注册就送39元,联系:330545486 2
b'\\\\xb7\\\\xf6\\\\xba~\\\\xad\\\\xd1\\\\xbc\\\\xd6\\\\xb3\\\\xa1@\\\\xb4A\\\\xab\\\\xbd\\\\xa8\\\\xe0' 2
ITELLYOU 2
联系TG:yyllzy,fulihuoqu 2
強片皇帝999 2
XP1024 2
sogclub No.2 2
mmklp@第一会所 2
ssss1111@18p2p 2
bbvc 2
感冒清@sis001 2
afnami@64.78.163.55 2
M88(明陞) 2
西門吹水 2
www.dio7777.net(第六天魔王)@最新AV海量免費播放~魔王在線 2
goldpuzjying 2
uid=1591117 2
rh2048.com/ 2
www.javhdbbs.com 2
b'\\\\xb3\\\\xc7\\\\xca\\\\xd0\\\\xefL\\\\xc7\\\\xe9~\\\\xc4\\\\xa7\\\\xbd\\\\xe4\\\\xd4\\\\xad\\\\x84\\\\x93' 2
[http://energy-torrent.com] Energy-Torrent 2
SoushkinBoudera 2
[http://bko.baibako.tv] BaibaKo.TV 2
Western/HD-Jiggly 2
冷月无声 2
奥利给 2
b'\\\\xab\\\\xb0\\\\xa5\\\\xab\\\\xad\\\\xb7\\\\xb1\\\\xa1~\\\\xa4p\\\\xb9t\\\\xad\\\\xec\\\\xb3\\\\xd0' 2
b'\\\\xc1\\\\xf9\\\\xd4\\\\xc2\\\\xcc\\\\xec\\\\xbf\\\\xd5' 2
b'tanw\\\\xa9\\\\xceyk3325@www.sogclub.com' 2
3Li 2
b'giogio99\\\\xad\\\\xec\\\\xb3\\\\xd0' 2
BradPitt 2
downloadcursos.top 2
xinnian 2
漫之学园 2
9200 2
清雨 2
crazylazy 2
安西教练 2
感冒清@sis001.com 2
淘宝天猫优惠券秒杀 2
会飞的象@第一会所 2
mule_by_SpeedPluss.ORG 2
BT伙计 2
gnhyc11@18p2p.com 1
fyoulapk@18p2p 1
塔卡小爹賽 1
HD一条街论坛 1
dioguitar23原創 1
b'\\\\xb3\\\\xce\\\\xbf\\\\xd5\\\\xd1\\\\xa7\\\\xd4\\\\xb0' 1
cnmzlwb 1
zb77@18p2p 1
https://www.asmr.one/work/RJ374870 1
[uid-1591117] 1
奈特羅德 1
https://mega.nz/#F!DK4lCSwB!QdwaMCT3SpOxISAgnuX7nQ 1
小葫芦@www.sis001.com 1
柏林没有梦 1
ls611 1
qqtnt007 1
3E523E31D247_by_FDZone.ORG 1
JPopsuki 2.0 626225292 1
https://elamigosedition.com/ 1
guroemon 1
lyf634041775 1
1234567890 1
https://bitnova.info/ 1
asfile@SIS001 1
b'\\\\xbd\\\\xad\\\\xc4\\\\xcf\\\\xb7\\\\xe7\\\\xd3\\\\xea' 1
mikocon @ bbs.2djgame.net 1
http://mm.aayun.cc 1
aqcd123 1
维尼 1
iii 1
pornolab 1
极影字幕 1
b'\\\\xc9\\\\xab\\\\xd6\\\\xd0\\\\xc9\\\\xab@ypzhq\\\\xd4\\\\xad\\\\xb4\\\\xb4' 1
roger92402094(SIS) 1
erest 1
Baslilon=Baslilon23 1
b'\\\\xab\\\\xb0\\\\xa5\\\\xab\\\\xad\\\\xb7\\\\xb1\\\\xa1 dioguitar23 \\\\xad\\\\xec\\\\xb3\\\\xd0' 1
sigma 1
寂寞如漫天雪花 1
C:\\\\Users\\\\pongphon\\\\OneDrive\\\\Desktop\\\\New folder (2)\\\\FC2PPV 1218169 [Odorless video] [Leaked] JULIA High image quality BEB-016 JULIA Sweaty Backroom .ts 1
JPopsuki 2.0 2131292835 1
不予@暗香阁 1
sogclub No.2 BY sogclub 1
uid-1591117 1
b'\\\\xba\\\\xda\\\\xc2\\\\xfb\\\\xb0\\\\xc5' 1
微信一夜ONS协会 1
b'KUHO\\\\xd2\\\\xd5\\\\xca\\\\xf5\\\\xc1\\\\xaa\\\\xc3\\\\xcb' 1
b'\\\\xb6\\\\xc0\\\\xa5i\\\\xa8\\\\xe0_by_FDZone.org' 1
中文字幕無水印 1
http://www.wozai020.com 1
sop168 1
b'SP\\\\xa7\\\\xe4\\\\xbc\\\\xd6\\\\xa4l@\\\\xaa\\\\xe1\\\\xa9M\\\\xa9|' 1
tiantianlu186@公仔箱論壇 1
luckyjune 1
SK`|yEsMan<sk·> 1
b'@aaming2002@\\\\xa3\\\\xa2\\\\xb3\\\\xd5\\\\xba\\\\xba\\\\xa3\\\\xa2\\\\xc9\\\\xab\\\\xd6\\\\xd0\\\\xc9\\\\xab\\\\xa3\\\\xa2\\\\xc3\\\\xce\\\\xb9\\\\xab\\\\xd4\\\\xb0\\\\xa3\\\\xa2MimiP2P\\\\xa3\\\\xa2\\\\xa3\\\\xc4.\\\\xa3\\\\xc3P2P\\\\xa3\\\\xa2WaiKeungSite\\\\xa3\\\\xa2p2pZONE\\\\xa3\\\\xa2Mr.P2P\\\\xa3\\\\xa2' 1
hkkane@18p2p 1
www.4hu.com 1
b'\\\\xaeL\\\\xaa\\\\xef\\\\xacK@99p2p' 1
夜蒅星宸@第一会所 1
【更多资源用加手机QQ-17182252050】 1
jjjhn2003@18p2p 1
XIEYUXIA 1
b'@\\\\xc0\\\\xcb\\\\xb7\\\\xad\\\\xd4\\\\xc6@' 1
www.dio889.net(第六天魔王)@最新AV海量免費播放~魔王在線 1
TYBBX2 1
yjs521 1
hhbb_zcm 1
twsb.co 1
https://downloadcursos.top 1
https://www.musicastorrent.com/ 1
pandafood#panda1314#gg5123 獨家首發 1
探花族 1
zhoudehua200 1
AV大平台 - 发布页 1
b'tanw\\\\xa9\\\\xceyk3325' 1
Rivera@18p2p.com 1
b'\\\\xd7\\\\xcf\\\\xc3\\\\xb5\\\\xb9\\\\xe5' 1
[kp.m-team.cc] M-Team - TP 1
www.spankhash.com 1
UID 235465@www.mimip2p.net 1
草榴社区@MianSheng 1
Странник 1
CHANNEL NEO 1
hgr168168 1
BJ 1
mecaca 1
昆仑虚之巅@草榴社區 1
[欧美美@草榴社区] 1
没线的风筝 1
尼尼撸-综合网站 1
100%真人激情裸聊 www.78xo.com 1
jettej 1
Daddy 1
diamond 1
中文片库 1
https://worldmkv.com 1
b'yatsingkoon@\\\\xa1\\\\xb9\\\\xb6q\\\\xb3c\\\\xa4\\\\xc0\\\\xa8\\\\xc9\\\\xbd\\\\xd7\\\\xbe\\\\xc2\\\\xa1\\\\xb9' 1
入微 1
https://discord.com/invite/wweVHZd6qg 1
602@第一会所 1
3484988vikci@第一会所 1
evilzy 1
化骨龍 1
https://www.kobo.com/ebook/an-archdemon-s-dilemma-how-to-love-your-elf-bride-volume-13 1
cqkd_czy 1
不辣de皮特 1
kaito 1
u3c3.com 1
☆影视帝国论坛☆ 1
aaa23 1
hevcbay.com 1
gn7650104 1
老舅电影 1
捕鼠人 1
https://www.gamestorrents.nu/ 1
Aidoru-Online 1
公主殿下@第一會所 1
MP4BA电影网 1
b'\\\\xb8\\\\xb4\\\\xbb\\\\xee126' 1
微信公众号:卡其影视分享 1
百虎动画 1
425307@癡漢俱樂部 1
avp2p 1
GIFchuchushipin 1
EndlesSea 1
Tanhuazu-探花族 1
推特搞啥呢 1
@K8bet.io@ 1
Misfits 1
黑暗虫洞 1
magazinesbb.com 1
b'\\\\xc9\\\\xab\\\\xd6\\\\xd0\\\\xc9\\\\xab\\\\xd5\\\\x93\\\\x89\\\\xaf@www.SIS.xxx' 1
草榴社区@z10271 1
冰封爱河 1
b'[http://www.uniongang.net] \\\\xd4\\\\xe8\\\\xeb\\\\xfc\\\\xec\\\\xfb \\\\xee\\\\xf2 ELEKTRI4KA | \\\\xdd\\\\xcb\\\\xc5\\\\xca\\\\xd2\\\\xd0\\\\xc8\\\\xd7\\\\xca\\\\xc0 \\\\xed\\\\xe0 Uniongang' 1
zhangqq789@第一会所 1
D2mp4 1
wangye6 1
ann@myfun4u.org 1
kino9999@18p2p 1
b'CHD\\\\xc1\\\\xaa\\\\xc3\\\\xcb' 1
satu@hongfire 1
polee 1
GM3089@18P2P 1
BT工厂 @ 5120911 1
【U6A6.COM】_全网磁力最快更新 1
sklc-P2P101.COM 1
b'\\\\xb0\\\\xcb\\\\xd6\\\\xd8\\\\xf7\\\\xec' 1
b'\\\\xcc\\\\xda\\\\xb7\\\\xc9\\\\xd4\\\\xda\\\\xcf\\\\xdf' 1
b'doa_o[\\\\xb9\\\\xc5\\\\xce\\\\xef\\\\xce\\\\xdd]' 1
缘聚岛 1
素人辣妹正妹報報 1
b'sweetsmile@CHD\\\\xc1\\\\xaa\\\\xc3\\\\xcb' 1
javtv.me 1
zhaochuan99 1
草榴社区 1
四魂制作组 1
动漫花園 1
View my conspiracy torrents at 1
春卅娘@18p2p 1
1024核工厂最新地址 1
JPopsuki 2.0 904012437 1
wearebest@18P2P 1
HTCdesireHD@第一會所 1
11.55 1
shinjico 1
得得撸 www.dedelu.com 1
Western&HD-Jiggly 1
ningchia 1
filelist.ro 1
dengzhi123_by_FDZone.ORG 1
b'\\\\xab\\\\xb0\\\\xa5\\\\xab\\\\xad\\\\xb7\\\\xb1\\\\xa1 dioguitar23(\\\\xb2\\\\xc4\\\\xa4\\\\xbb\\\\xa4\\\\xd1\\\\xc5]\\\\xa4\\\\xfd)\\\\xad\\\\xec\\\\xb3\\\\xd0' 1
[http://rudub.tv] RuDub.TV 1
HZHJS 1
Audible 1
skyuz 1
ever 1
El tio WAPILLO :v 1
草莓TV 1
加菲豆@第一会所 1
yaoshiqiao 1
PB 1
b'\\\\xb9\\\\xda\\\\xa4\\\\xbd\\\\xb6\\\\xe9\\\\xaeT\\\\xbc\\\\xd6\\\\xa4u\\\\xa7{@p16847' 1
GF@1024核工廠 1
54CECB5A0EA7_by_FDZone.ORG 1
b'\\\\xc0\\\\xcb\\\\xd7\\\\xd3\\\\xd0\\\\xa1\\\\xb5\\\\xb6' 1
rendell_by_mimip2p.net, rendellxx_by_fdzone.org, rendell@SexInSex! 1
https://e-hentai.org 1
https://to-url.com/torrent-igruha 1
jinzebin86@18p2p.com 1
birdmanfocker@18p2p 1
GH37DgaBef6rQJyE2nvqb5YpS 1
AVdian@126.com 1
蜂鸟色区 1
亞瑟王 1
b'Bianca_Cooper_Touch99.com \\\\xa6\\\\xb3\\\\xa7\\\\xf3\\\\xa6h\\\\xa6n\\\\xb9\\\\xcf' 1
wT3j6PNrC5aOcD04yJ7xRotF8 1
村花论坛 1
b'\\\\xc4\\\\xfa_\\\\x89\\\\xf4\\\\xb9\\\\xab\\\\x88@\\\\x8a\\\\xca\\\\x98\\\\xb7\\\\xb9\\\\xa4\\\\xb7\\\\xbb' 1
FISH321@18P2P 1
第一会所 sis001 1
huPE@18P2P 1
houlai=biaoqian 1
b'qilibi@\\\\xc1\\\\xf9\\\\xd4\\\\xc2\\\\xc2\\\\x93\\\\xc3\\\\xcb' 1
天池妖尊 1
sing0212000 1
wandy_by_FDZone.org 1
XO@kazamis 1
百撸社区|高清影片 1
KOOK 1
HQC 1
mc733 1
爱游戏 1
1158012^@^18p2p 1
b'Bianca_Cooper \\\\xa7\\\\xf3\\\\xa6h\\\\xac\\\\xfc\\\\xb9\\\\xcf\\\\xa5u\\\\xa6bTouch99' 1
xiaocuitj 1
星星不舔屄 1
https://www.crnaberza.com CrnaBerza 1
boby@mimip2p 1
magnet360@163.com 1
Japanadultvideos 論壇 <-----按此瀏覽更多 1
[http://x-torrents.nu] X-Torrents.org 1
euphoricer 1
2048核基地!! 1
zlb273692399@第一会所 1
花和尚 1
b'\\\\xb4\\\\xbf\\\\xb0\\\\xae\\\\xc9\\\\xe7\\\\xc7\\\\xf8/wbzt' 1
三石@第一会所 1
JackyCheung@草榴社區 1
b'\\\\xbf\\\\xe7\\\\xca\\\\xa1\\\\xbe\\\\xdc\\\\xb7\\\\xf1@9999999' 1
菜牙电影网 1
mehappy2012 1
https://www.jp.square-enix.com/music/sem/page/chrono/trigger_revival/ 1
Scientists used to invent telephones, airplanes, microwave ovens... now all they invent is statistics that say they should get more funding. 1
RoxMarty 1
rczhi@18p2p.com 1
kkk8568 1
kenan2763 1
衣选集团 1
arthurwarlike@第一会所 1
b'\\\\xb3\\\\xc7\\\\xca\\\\xd0\\\\xefL\\\\xc7\\\\xe9~~\\\\xcb\\\\xba\\\\xd2\\\\xb9\\\\xd4\\\\xad\\\\x84\\\\x93' 1
東方明珠=ccvvm 1
从小缺钙 1
Jackie 1
www.lupola.com 1
ashow.cc 1
品色影院 1
8400327@草榴社區 1
gamezealot@18p2p 1
uhla454@第一会所 1
宅鱼 1
1024核工厂 Bt7086 1
hilllxs 1
豺狼也柔情 1
99堂 1
老肥 1
Chikyuji-Animes, 2006 maggle! 1
chaorentwo@18p2p 1
若無其事@18p2p.com 1
hhd000.com 1
掠风窃尘 1
b'\\\\xd3\\\\xd5\\\\xbb\\\\xf3\\\\xd3\\\\xe9\\\\xc0\\\\xd6\\\\xcd\\\\xf8\\\\xb5\\\\xe3\\\\xbb\\\\xf7\\\\xbd\\\\xf8\\\\xc8\\\\xeb \\\\xa8w\\\\xec\\\\xe1\\\\xbf\\\\xa1\\\\xc9\\\\xd9\\\\xec\\\\xe1\\\\xa8w' 1
Kura999 from WaikeungBBS 1
XFSUB 1
huiasd 1
b'Rory @ D.C.\\\\xb8\\\\xea\\\\xb0T\\\\xa5\\\\xe6\\\\xacy\\\\xba\\\\xf4' 1
https://t.me/deletetvwrestling 1
dodododo 1
Rambo@18p2p 1
b'\\\\xce\\\\xde\\\\xd0\\\\xc4\\\\xce\\\\xde\\\\xb4\\\\xe6' 1
filmplay 1
avdian@126.com 1
1025 1
956828@18p2p 1
夜游神 1
b'\\\\xb2\\\\xbb\\\\xb5\\\\xc3\\\\xb2\\\\xbb\\\\xc9\\\\xab' 1
vbiukj 1
buxxa=bbvc 1
jnd16d 1
烽火不熄 1
pietro716 1
Lus 1
b'\\\\x98Y\\\\xd4\\\\xad\\\\xa4\\\\xe6\\\\x97@' 1
國產無碼 1
b'\\\\xd0\\\\xc2\\\\xc7\\\\xd7\\\\xc3\\\\xdc\\\\xb0\\\\xae\\\\xc8\\\\xcb\\\\xc2\\\\xdb\\\\xcc\\\\xb3@\\\\xd6\\\\xc1\\\\xd7\\\\xf0\\\\xcc\\\\xec\\\\xc1\\\\xfa' 1
wangzhifeng@18p2p 1
dabohong_by_fdzone.org 1
TODO 1
b'\\\\xb7\\\\xc9\\\\xd3\\\\xb0\\\\xbf\\\\xcd\\\\xcd\\\\xf8' 1
yav.me 1
http://www.jizhang1.space/?3316427 1
pin0314(1470)@www.mycould.com 1
handsomemouse@18p2p 1
b'\\\\xa4\\\\xc6\\\\xb0\\\\xa9\\\\xc0s@mimip2p' 1
面瘫 1
遁去的壹 1
弄死你娃L@2018x.win 1
yyyyyuuuuu@18p2p 1
狼主@SexInSex.net 1
1394130143@第一会所 1
jove 1
电骡爱好者 1
westkyo@www.sis001.com 1
lzmcmbj@18p2p 1
dioguitar23(第六天魔王)@dioguitar23.me 1
VISTOR_by_FDZone.ORG 1
chris930 1
KTXP_秋沫 1
[WMAN-LorD] [UHD] [4K] [2160p] [REAL4K] [TGx] 1
b'A\\\\xab\\\\xac\\\\xa4\\\\xa3\\\\xa8}\\\\xc3\\\\xc8' 1
b'\\\\xb8\\\\xfc\\\\xb6\\\\xe0\\\\xb8\\\\xfc\\\\xd0\\\\xc2\\\\xb5\\\\xe7\\\\xd3\\\\xb0\\\\xcf\\\\xc2\\\\xd4\\\\xd8\\\\xc7\\\\xeb\\\\xb5\\\\xe3\\\\xbb\\\\xf7\\\\xd5\\\\xe2\\\\xc0\\\\xef' 1
Domaha.tv 1
destiny999@18p2p 1
水母飄 1
HOUSEKEEPER 1
RV原创组 1
月岚星辰520@第一会所 1
b'\\\\xc3\\\\xe2\\\\xb7\\\\xd1\\\\xd4\\\\xda\\\\xcf\\\\xdf\\\\xd2\\\\xf4\\\\xc0\\\\xd6' 1
www.1024pk.com 1
爱城 1
amge50@www.sogclub.com 1
OneStar 1
b'Jocky123#\\\\xb8\\\\xfc\\\\xb6\\\\xe0\\\\xb5\\\\xc4\\\\xbe\\\\xab\\\\xb2\\\\xca\\\\xd3\\\\xb0\\\\xc6\\\\xac!' 1
https://getcomics.info 1
点击-海量种子 1
btziyuan 1
[http://x-torrents.org] X-Torrents.org (ex X-Torrents.ru) 1
18p2p by_UID 1380364 1
https://www.lspback.com 1
foxmoder996 1
https://share.dmhy.org/topics/list/user_id/712935 1
玛尔亲王@第一会所 1
https://bbs2048.org/ 1
rtjhuytu 1
淨空法師專集網站 1
b'\\\\xa1\\\\xb6\\\\xbd\\\\xcc\\\\xd3\\\\xfd\\\\xca\\\\xd6\\\\xc0\\\\xad\\\\xca\\\\xd6\\\\xa1\\\\xb7' 1
mc733+zgome 1
Goddess 1
NikeのB@第一会所 1
b'dvt\\\\xb0\\\\xc9' 1
微博:止于影书,公众号:影遇见书,@小鱼 1
free4 1
靜風@sis001 1
https://www.1024btgc.com 1
kaniuniu 1
dcsk_By_FDZone.org 1
sigma@www.mimip2p.com 1
看翍荭尘 1
bjiok 1
lins2b 1
小馬克_by_FDZone.ORG 1
FSFS555@第一会所 1
flowerff 1
lascruces 1
?nike? 1
SEX8.CC 1
b'\\\\xb3\\\\xc9\\\\xc8\\\\xcb\\\\xc2\\\\xdb\\\\xcc\\\\xb3\\\\xbf\\\\xaa\\\\xb7\\\\xc5\\\\xd7\\\\xa2\\\\xb2\\\\xe1' 1
dio889.net(第六天魔王)@最新AV海量免費播放~魔王在線 1
APKMAZA.CO 1
13121152@18p2p 1
UID 185363@www.mimip2p.com 1
b'\\\\xa4^\\\\xa4\\\\xa2\\\\xb5\\\\xbe@FDZone.org' 1
更多资源联系qq1273288348 1
https://nyaa.si/user/mrshowoff 1
https://boards.4channel.org/h/#s=hentai+upscales 1
mimu@18P2P 1
b'\\\\xd7\\\\xd3\\\\xc7\\\\xe9 \\\\xd7\\\\xa3\\\\xba\\\\xd8\\\\xc9\\\\xab\\\\xd6\\\\xd0\\\\xc9\\\\xab \\\\xcb\\\\xc4\\\\xd6\\\\xdc\\\\xc4\\\\xea \\\\xcc\\\\xd8\\\\xb1\\\\xf0\\\\xcb\\\\xae\\\\xd3\\\\xa1\\\\xd1\\\\xb9\\\\xd6\\\\xc6' 1
殇情 1
风来西林 1
www.loliba.info 1
b'Nike\\\\xa4\\\\xce\\\\xa3\\\\xc2' 1
[www.pttime.org] PT时间 1
QxR 1
sunchiua_by_P2Pzone.org 1
wazx528 1
popgofansub 1
b'\\\\xc3\\\\xe2\\\\xb7\\\\xd1\\\\xb5\\\\xe7\\\\xd3\\\\xb0\\\\xcf\\\\xc2\\\\xd4\\\\xd8\\\\xbb\\\\xf9\\\\xb5\\\\xd8' 1
gremichaem 1
b'\\\\xd0\\\\xc7\\\\xb3\\\\xbd\\\\xd0\\\\xa1\\\\xb7\\\\xe7\\\\xa3\\\\xa6\\\\xbe\\\\xab\\\\xc9\\\\xf1\\\\xc9\\\\xab\\\\xcb\\\\xd8\\\\xa3\\\\xa6cookiexp\\\\xa3\\\\xc0\\\\xd1\\\\xb0\\\\xba\\\\xfc\\\\xc9\\\\xe7\\\\xc7\\\\xf8' 1
sukebei.nyaa.si 1
pademon18p2p 1
MingYSub 1
aaamfk+zgome+bbryans 1
cyxy@http://38.114.38.172/forum/ 1
b'\\\\xd3\\\\xd7\\\\xc5\\\\xae\\\\xbc\\\\xab\\\\xc6\\\\xb7' 1
https://e-hentai.org/g/2375721/1b5e081312/ 1
18P2P_dioguitar23.co(第六天魔王)@最新AV海量免費播放~魔王在線 1
b'AV\\\\xce\\\\xc4\\\\x99n\\\\xa3\\\\xfcADULT INTEGRATED COMMUNITY' 1
UID 1357210@18P2P.com 1
fuckkkingou 1
闲云野鹤 1
LAPUMiA.NeT 1
adult_cn 1
psoke 1
18p2p@liyang8926 1
尘封追忆+色十八 1
littlefatbee 1
秋叶TV 1
msy91 1
Niraya 1
https://www.kobo.com/ebook/that-time-i-got-reincarnated-as-a-slime-vol-13-light-novel 1
JPopsuki 2.0 941661648 1
yamyedye@18P2P 1
dansnow 1
H2CO3 1
Downloaded from CracksHash.com 1
b'\\\\x8e\\\\xf7\\\\x8e\\\\xf7@\\\\x88\\\\xc3\\\\x91\\\\xe9\\\\x9a\\\\xa0\\\\x8c\\\\xb4\\\\x91n' 1
kamigami 1
G@1024核工廠 1
The Seaside Corpse 1
b'\\\\xadw\\\\xbd\\\\xde_by_FDZone.ORG' 1
fangbayern 1
君乐 1
Doctor Who 1
第一流氓@18P2P 1
Deviloid.net 1
b'\\\\xc1\\\\xf9\\\\xd4\\\\xc2\\\\xc1\\\\xaa\\\\xc3\\\\xcb hgfhgf' 1
wcer@18p2p.com 1
https://www.yitarx.com 1
wuchengzhou9000@www.SexInSex.net 1
nwcd 1
p2p_user@mimip2p 1
zza@live.com 1
清风浪子@草榴社区 1
http://www.zone54.com 1
ssan998 1
xxfhd.com 1
mybmw320_by_SpeedPluss.ORG 1
woaibt@1024核工厂 1
b'[http://www.uniongang.tv] \\\\xd4\\\\xe8\\\\xeb\\\\xfc\\\\xec\\\\xfb \\\\xee\\\\xf2 ELEKTRI4KA | \\\\xdd\\\\xcb\\\\xc5\\\\xca\\\\xd2\\\\xd0\\\\xc8\\\\xd7\\\\xca\\\\xc0 \\\\xed\\\\xe0 Uniongang' 1
hegongc163 1
bigwai 1
t66y 1
cctc55 1
tto@18P2P 1
Antidot Team 1
Torrent Galaxy 1
https://rutor.org 1
萤火虫IT服务全国连锁 1
葬爱@18p2p 1
贴心话 1
xuerui810405 1
SoulSeek 1
abbt@18p2p.com 1
深深可许@第一会所 1
lixuhua 1
b'\\\\xcc\\\\x93\\\\x9fo' 1
animekayo.com 1
qiupianhao 1
173489627 1
wak11110@18P2P 1
[http://hdtracker.org] HD TRACKER 1
www.eien-acg.com 1
index0123 1
hhd800.com 1
hndwje 1
http://www.meitubb.com/forum.php 1
最新地址 1
https://anidb.net/file/3082403 1
更多精彩 @ 卡卡拉 1
olo@第一会所 1
'" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s = monotonic()\n", + "def sources():\n", + " sources = {}\n", + " for sha1, torrent in torrents.items():\n", + " source = torrent.dict.get(b'info').get(b'source')\n", + " if source is None:\n", + " source = torrent.dict.get(b'info').get(b'publisher')\n", + " if source is None:\n", + " source = torrent.dict.get(b'info').get(b'publisher-url')\n", + " try:\n", + " if type(source) is bytes:\n", + " source = source.decode().strip()\n", + " except UnicodeDecodeError:\n", + " pass\n", + " if source not in sources.keys():\n", + " sources[source] = 1\n", + " else:\n", + " sources[source] += 1\n", + " return sources\n", + "sources = sources()\n", + "sort = sorted(sources, reverse=True, key=lambda x:sources[x])\n", + "sort.remove(None)\n", + "print(monotonic()-s, \"s\", sources[None]/len(torrents)*100, \"brez ključa source, publisher ali publisher-url\")\n", + "from tabulate import tabulate\n", + "tabulate([[x, sources[x]] for x in sort], tablefmt=\"html\")" ] }, { "cell_type": "code", "execution_count": null, - "id": "930e96ab", + "id": "4bd1f517", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "s = monotonic()\n", + "def removeminorities(population, minrepr=0, ostalo=\"ostalo\"):\n", + " true = {ostalo: 0}\n", + " for key, value in population.items():\n", + " if value < minrepr:\n", + " true[ostalo] += value\n", + " else:\n", + " true[key] = value\n", + " return true\n", + "from mimetypes import guess_type\n", + "def ext(mime=False, minreprratio=0):\n", + " bycount = {}\n", + " bysize = {}\n", + " bysizerepresentative = {}\n", + " filescount = 0\n", + " bytescount = 0\n", + " for sha1, torrent in torrents.items():\n", + " try:\n", + " representatives = {}\n", + " for path, size in torrent.paths():\n", + " filescount += 1\n", + " bytescount += size\n", + " if mime:\n", + " ext = guess_type(path.pop().decode(encoding=\"iso-8859-2\"))[0]\n", + " else:\n", + " ext = path.pop().split(b'.').pop().decode(encoding=\"iso-8859-2\").lower()\n", + " if ext not in bycount.keys():\n", + " bycount[ext] = 1\n", + " else:\n", + " bycount[ext] += 1\n", + " if ext not in bysize.keys():\n", + " bysize[ext] = size\n", + " else:\n", + " bysize[ext] += size\n", + " if ext not in representatives.keys():\n", + " representatives[ext] = size\n", + " else:\n", + " representatives[ext] += size\n", + " except AttributeError:\n", + " print(sha1.hex(), torrent)\n", + " raise AttributeError\n", + " try:\n", + " representative = sorted(representatives, key=lambda x:representatives[x]).pop()\n", + " except IndexError:\n", + " print(sha1.hex(), torrent)\n", + " raise IndexError\n", + " if representative not in bysizerepresentative.keys():\n", + " bysizerepresentative[representative] = 1\n", + " else:\n", + " bysizerepresentative[representative] += 1\n", + " truebycount = removeminorities(bycount, minreprratio*filescount, \"ostale\")\n", + " truebysize = removeminorities(bysize, minreprratio*bytescount, \"ostale\")\n", + " truebysizerepresentative = removeminorities(bysizerepresentative, minreprratio*len(torrents), \"ostale\")\n", + " for data in [truebycount, truebysize, truebysizerepresentative]:\n", + " data = [(v, k) for k, v in data.items()]\n", + " return truebycount, truebysize, truebysizerepresentative, len(bycount), filescount, bytescount\n", + "print(\"...\")\n", + "bycount, bysize, bysizerepresentative, kinds, filescount, bytescount = ext(False, 0.001)\n", + "print(monotonic()-s, \"s\", count, \"različnih tipov v\", filescount, \"datotekah in\", bytescount/(1024**4), \"TiB\")" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "82ab922a", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "/* global mpl */\n", + "window.mpl = {};\n", + "\n", + "mpl.get_websocket_type = function () {\n", + " if (typeof WebSocket !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof MozWebSocket !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert(\n", + " 'Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.'\n", + " );\n", + " }\n", + "};\n", + "\n", + "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = this.ws.binaryType !== undefined;\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById('mpl-warnings');\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent =\n", + " 'This browser does not support binary websocket messages. ' +\n", + " 'Performance may be slow.';\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = document.createElement('div');\n", + " this.root.setAttribute('style', 'display: inline-block');\n", + " this._root_extra_style(this.root);\n", + "\n", + " parent_element.appendChild(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message('supports_binary', { value: fig.supports_binary });\n", + " fig.send_message('send_image_mode', {});\n", + " if (fig.ratio !== 1) {\n", + " fig.send_message('set_device_pixel_ratio', {\n", + " device_pixel_ratio: fig.ratio,\n", + " });\n", + " }\n", + " fig.send_message('refresh', {});\n", + " };\n", + "\n", + " this.imageObj.onload = function () {\n", + " if (fig.image_mode === 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function () {\n", + " fig.ws.close();\n", + " };\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "};\n", + "\n", + "mpl.figure.prototype._init_header = function () {\n", + " var titlebar = document.createElement('div');\n", + " titlebar.classList =\n", + " 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n", + " var titletext = document.createElement('div');\n", + " titletext.classList = 'ui-dialog-title';\n", + " titletext.setAttribute(\n", + " 'style',\n", + " 'width: 100%; text-align: center; padding: 3px;'\n", + " );\n", + " titlebar.appendChild(titletext);\n", + " this.root.appendChild(titlebar);\n", + " this.header = titletext;\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n", + "\n", + "mpl.figure.prototype._init_canvas = function () {\n", + " var fig = this;\n", + "\n", + " var canvas_div = (this.canvas_div = document.createElement('div'));\n", + " canvas_div.setAttribute('tabindex', '0');\n", + " canvas_div.setAttribute(\n", + " 'style',\n", + " 'border: 1px solid #ddd;' +\n", + " 'box-sizing: content-box;' +\n", + " 'clear: both;' +\n", + " 'min-height: 1px;' +\n", + " 'min-width: 1px;' +\n", + " 'outline: 0;' +\n", + " 'overflow: hidden;' +\n", + " 'position: relative;' +\n", + " 'resize: both;' +\n", + " 'z-index: 2;'\n", + " );\n", + "\n", + " function on_keyboard_event_closure(name) {\n", + " return function (event) {\n", + " return fig.key_event(event, name);\n", + " };\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'keydown',\n", + " on_keyboard_event_closure('key_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'keyup',\n", + " on_keyboard_event_closure('key_release')\n", + " );\n", + "\n", + " this._canvas_extra_style(canvas_div);\n", + " this.root.appendChild(canvas_div);\n", + "\n", + " var canvas = (this.canvas = document.createElement('canvas'));\n", + " canvas.classList.add('mpl-canvas');\n", + " canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box;' +\n", + " 'pointer-events: none;' +\n", + " 'position: relative;' +\n", + " 'z-index: 0;'\n", + " );\n", + "\n", + " this.context = canvas.getContext('2d');\n", + "\n", + " var backingStore =\n", + " this.context.backingStorePixelRatio ||\n", + " this.context.webkitBackingStorePixelRatio ||\n", + " this.context.mozBackingStorePixelRatio ||\n", + " this.context.msBackingStorePixelRatio ||\n", + " this.context.oBackingStorePixelRatio ||\n", + " this.context.backingStorePixelRatio ||\n", + " 1;\n", + "\n", + " this.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n", + " 'canvas'\n", + " ));\n", + " rubberband_canvas.setAttribute(\n", + " 'style',\n", + " 'box-sizing: content-box;' +\n", + " 'left: 0;' +\n", + " 'pointer-events: none;' +\n", + " 'position: absolute;' +\n", + " 'top: 0;' +\n", + " 'z-index: 1;'\n", + " );\n", + "\n", + " // Apply a ponyfill if ResizeObserver is not implemented by browser.\n", + " if (this.ResizeObserver === undefined) {\n", + " if (window.ResizeObserver !== undefined) {\n", + " this.ResizeObserver = window.ResizeObserver;\n", + " } else {\n", + " var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n", + " this.ResizeObserver = obs.ResizeObserver;\n", + " }\n", + " }\n", + "\n", + " this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n", + " var nentries = entries.length;\n", + " for (var i = 0; i < nentries; i++) {\n", + " var entry = entries[i];\n", + " var width, height;\n", + " if (entry.contentBoxSize) {\n", + " if (entry.contentBoxSize instanceof Array) {\n", + " // Chrome 84 implements new version of spec.\n", + " width = entry.contentBoxSize[0].inlineSize;\n", + " height = entry.contentBoxSize[0].blockSize;\n", + " } else {\n", + " // Firefox implements old version of spec.\n", + " width = entry.contentBoxSize.inlineSize;\n", + " height = entry.contentBoxSize.blockSize;\n", + " }\n", + " } else {\n", + " // Chrome <84 implements even older version of spec.\n", + " width = entry.contentRect.width;\n", + " height = entry.contentRect.height;\n", + " }\n", + "\n", + " // Keep the size of the canvas and rubber band canvas in sync with\n", + " // the canvas container.\n", + " if (entry.devicePixelContentBoxSize) {\n", + " // Chrome 84 implements new version of spec.\n", + " canvas.setAttribute(\n", + " 'width',\n", + " entry.devicePixelContentBoxSize[0].inlineSize\n", + " );\n", + " canvas.setAttribute(\n", + " 'height',\n", + " entry.devicePixelContentBoxSize[0].blockSize\n", + " );\n", + " } else {\n", + " canvas.setAttribute('width', width * fig.ratio);\n", + " canvas.setAttribute('height', height * fig.ratio);\n", + " }\n", + " /* This rescales the canvas back to display pixels, so that it\n", + " * appears correct on HiDPI screens. */\n", + " canvas.style.width = width + 'px';\n", + " canvas.style.height = height + 'px';\n", + "\n", + " rubberband_canvas.setAttribute('width', width);\n", + " rubberband_canvas.setAttribute('height', height);\n", + "\n", + " // And update the size in Python. We ignore the initial 0/0 size\n", + " // that occurs as the element is placed into the DOM, which should\n", + " // otherwise not happen due to the minimum size styling.\n", + " if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n", + " fig.request_resize(width, height);\n", + " }\n", + " }\n", + " });\n", + " this.resizeObserverInstance.observe(canvas_div);\n", + "\n", + " function on_mouse_event_closure(name) {\n", + " /* User Agent sniffing is bad, but WebKit is busted:\n", + " * https://bugs.webkit.org/show_bug.cgi?id=144526\n", + " * https://bugs.webkit.org/show_bug.cgi?id=181818\n", + " * The worst that happens here is that they get an extra browser\n", + " * selection when dragging, if this check fails to catch them.\n", + " */\n", + " var UA = navigator.userAgent;\n", + " var isWebKit = /AppleWebKit/.test(UA) && !/Chrome/.test(UA);\n", + " if(isWebKit) {\n", + " return function (event) {\n", + " /* This prevents the web browser from automatically changing to\n", + " * the text insertion cursor when the button is pressed. We\n", + " * want to control all of the cursor setting manually through\n", + " * the 'cursor' event from matplotlib */\n", + " event.preventDefault()\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " } else {\n", + " return function (event) {\n", + " return fig.mouse_event(event, name);\n", + " };\n", + " }\n", + " }\n", + "\n", + " canvas_div.addEventListener(\n", + " 'mousedown',\n", + " on_mouse_event_closure('button_press')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'mouseup',\n", + " on_mouse_event_closure('button_release')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'dblclick',\n", + " on_mouse_event_closure('dblclick')\n", + " );\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " canvas_div.addEventListener(\n", + " 'mousemove',\n", + " on_mouse_event_closure('motion_notify')\n", + " );\n", + "\n", + " canvas_div.addEventListener(\n", + " 'mouseenter',\n", + " on_mouse_event_closure('figure_enter')\n", + " );\n", + " canvas_div.addEventListener(\n", + " 'mouseleave',\n", + " on_mouse_event_closure('figure_leave')\n", + " );\n", + "\n", + " canvas_div.addEventListener('wheel', function (event) {\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " on_mouse_event_closure('scroll')(event);\n", + " });\n", + "\n", + " canvas_div.appendChild(canvas);\n", + " canvas_div.appendChild(rubberband_canvas);\n", + "\n", + " this.rubberband_context = rubberband_canvas.getContext('2d');\n", + " this.rubberband_context.strokeStyle = '#000000';\n", + "\n", + " this._resize_canvas = function (width, height, forward) {\n", + " if (forward) {\n", + " canvas_div.style.width = width + 'px';\n", + " canvas_div.style.height = height + 'px';\n", + " }\n", + " };\n", + "\n", + " // Disable right mouse context menu.\n", + " canvas_div.addEventListener('contextmenu', function (_e) {\n", + " event.preventDefault();\n", + " return false;\n", + " });\n", + "\n", + " function set_focus() {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'mpl-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'mpl-button-group';\n", + " continue;\n", + " }\n", + "\n", + " var button = (fig.buttons[name] = document.createElement('button'));\n", + " button.classList = 'mpl-widget';\n", + " button.setAttribute('role', 'button');\n", + " button.setAttribute('aria-disabled', 'false');\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + "\n", + " var icon_img = document.createElement('img');\n", + " icon_img.src = '_images/' + image + '.png';\n", + " icon_img.srcset = '_images/' + image + '_large.png 2x';\n", + " icon_img.alt = tooltip;\n", + " button.appendChild(icon_img);\n", + "\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " var fmt_picker = document.createElement('select');\n", + " fmt_picker.classList = 'mpl-widget';\n", + " toolbar.appendChild(fmt_picker);\n", + " this.format_dropdown = fmt_picker;\n", + "\n", + " for (var ind in mpl.extensions) {\n", + " var fmt = mpl.extensions[ind];\n", + " var option = document.createElement('option');\n", + " option.selected = fmt === mpl.default_extension;\n", + " option.innerHTML = fmt;\n", + " fmt_picker.appendChild(option);\n", + " }\n", + "\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "};\n", + "\n", + "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n", + " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", + " // which will in turn request a refresh of the image.\n", + " this.send_message('resize', { width: x_pixels, height: y_pixels });\n", + "};\n", + "\n", + "mpl.figure.prototype.send_message = function (type, properties) {\n", + " properties['type'] = type;\n", + " properties['figure_id'] = this.id;\n", + " this.ws.send(JSON.stringify(properties));\n", + "};\n", + "\n", + "mpl.figure.prototype.send_draw_message = function () {\n", + " if (!this.waiting) {\n", + " this.waiting = true;\n", + " this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " var format_dropdown = fig.format_dropdown;\n", + " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", + " fig.ondownload(fig, format);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_resize = function (fig, msg) {\n", + " var size = msg['size'];\n", + " if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n", + " fig._resize_canvas(size[0], size[1], msg['forward']);\n", + " fig.send_message('refresh', {});\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n", + " var x0 = msg['x0'] / fig.ratio;\n", + " var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n", + " var x1 = msg['x1'] / fig.ratio;\n", + " var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n", + " x0 = Math.floor(x0) + 0.5;\n", + " y0 = Math.floor(y0) + 0.5;\n", + " x1 = Math.floor(x1) + 0.5;\n", + " y1 = Math.floor(y1) + 0.5;\n", + " var min_x = Math.min(x0, x1);\n", + " var min_y = Math.min(y0, y1);\n", + " var width = Math.abs(x1 - x0);\n", + " var height = Math.abs(y1 - y0);\n", + "\n", + " fig.rubberband_context.clearRect(\n", + " 0,\n", + " 0,\n", + " fig.canvas.width / fig.ratio,\n", + " fig.canvas.height / fig.ratio\n", + " );\n", + "\n", + " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n", + " // Updates the figure title.\n", + " fig.header.textContent = msg['label'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n", + " fig.canvas_div.style.cursor = msg['cursor'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_message = function (fig, msg) {\n", + " fig.message.textContent = msg['message'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n", + " // Request the server to send over a new figure.\n", + " fig.send_draw_message();\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n", + " fig.image_mode = msg['mode'];\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n", + " for (var key in msg) {\n", + " if (!(key in fig.buttons)) {\n", + " continue;\n", + " }\n", + " fig.buttons[key].disabled = !msg[key];\n", + " fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n", + " if (msg['mode'] === 'PAN') {\n", + " fig.buttons['Pan'].classList.add('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " } else if (msg['mode'] === 'ZOOM') {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.add('active');\n", + " } else {\n", + " fig.buttons['Pan'].classList.remove('active');\n", + " fig.buttons['Zoom'].classList.remove('active');\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Called whenever the canvas gets updated.\n", + " this.send_message('ack', {});\n", + "};\n", + "\n", + "// A function to construct a web socket function for onmessage handling.\n", + "// Called in the figure constructor.\n", + "mpl.figure.prototype._make_on_message_function = function (fig) {\n", + " return function socket_on_message(evt) {\n", + " if (evt.data instanceof Blob) {\n", + " var img = evt.data;\n", + " if (img.type !== 'image/png') {\n", + " /* FIXME: We get \"Resource interpreted as Image but\n", + " * transferred with MIME type text/plain:\" errors on\n", + " * Chrome. But how to set the MIME type? It doesn't seem\n", + " * to be part of the websocket stream */\n", + " img.type = 'image/png';\n", + " }\n", + "\n", + " /* Free the memory for the previous frames */\n", + " if (fig.imageObj.src) {\n", + " (window.URL || window.webkitURL).revokeObjectURL(\n", + " fig.imageObj.src\n", + " );\n", + " }\n", + "\n", + " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", + " img\n", + " );\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " } else if (\n", + " typeof evt.data === 'string' &&\n", + " evt.data.slice(0, 21) === 'data:image/png;base64'\n", + " ) {\n", + " fig.imageObj.src = evt.data;\n", + " fig.updated_canvas_event();\n", + " fig.waiting = false;\n", + " return;\n", + " }\n", + "\n", + " var msg = JSON.parse(evt.data);\n", + " var msg_type = msg['type'];\n", + "\n", + " // Call the \"handle_{type}\" callback, which takes\n", + " // the figure and JSON message as its only arguments.\n", + " try {\n", + " var callback = fig['handle_' + msg_type];\n", + " } catch (e) {\n", + " console.log(\n", + " \"No handler for the '\" + msg_type + \"' message type: \",\n", + " msg\n", + " );\n", + " return;\n", + " }\n", + "\n", + " if (callback) {\n", + " try {\n", + " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", + " callback(fig, msg);\n", + " } catch (e) {\n", + " console.log(\n", + " \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n", + " e,\n", + " e.stack,\n", + " msg\n", + " );\n", + " }\n", + " }\n", + " };\n", + "};\n", + "\n", + "\n", + "/*\n", + " * return a copy of an object with only non-object keys\n", + " * we need this to avoid circular references\n", + " * https://stackoverflow.com/a/24161582/3208463\n", + " */\n", + "function simpleKeys(original) {\n", + " return Object.keys(original).reduce(function (obj, key) {\n", + " if (typeof original[key] !== 'object') {\n", + " obj[key] = original[key];\n", + " }\n", + " return obj;\n", + " }, {});\n", + "}\n", + "\n", + "mpl.figure.prototype.mouse_event = function (event, name) {\n", + " if (name === 'button_press') {\n", + " this.canvas.focus();\n", + " this.canvas_div.focus();\n", + " }\n", + "\n", + " // from https://stackoverflow.com/q/1114465\n", + " var boundingRect = this.canvas.getBoundingClientRect();\n", + " var x = (event.clientX - boundingRect.left) * this.ratio;\n", + " var y = (event.clientY - boundingRect.top) * this.ratio;\n", + "\n", + " this.send_message(name, {\n", + " x: x,\n", + " y: y,\n", + " button: event.button,\n", + " step: event.step,\n", + " guiEvent: simpleKeys(event),\n", + " });\n", + "\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n", + " // Handle any extra behaviour associated with a key event\n", + "};\n", + "\n", + "mpl.figure.prototype.key_event = function (event, name) {\n", + " // Prevent repeat events\n", + " if (name === 'key_press') {\n", + " if (event.key === this._key) {\n", + " return;\n", + " } else {\n", + " this._key = event.key;\n", + " }\n", + " }\n", + " if (name === 'key_release') {\n", + " this._key = null;\n", + " }\n", + "\n", + " var value = '';\n", + " if (event.ctrlKey && event.key !== 'Control') {\n", + " value += 'ctrl+';\n", + " }\n", + " else if (event.altKey && event.key !== 'Alt') {\n", + " value += 'alt+';\n", + " }\n", + " else if (event.shiftKey && event.key !== 'Shift') {\n", + " value += 'shift+';\n", + " }\n", + "\n", + " value += 'k' + event.key;\n", + "\n", + " this._key_event_extra(event, name);\n", + "\n", + " this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n", + " return false;\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n", + " if (name === 'download') {\n", + " this.handle_save(this, null);\n", + " } else {\n", + " this.send_message('toolbar_button', { name: name });\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n", + " this.message.textContent = tooltip;\n", + "};\n", + "\n", + "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n", + "// prettier-ignore\n", + "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n", + "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o\", \"download\"]];\n", + "\n", + "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\", \"webp\"];\n", + "\n", + "mpl.default_extension = \"png\";/* global mpl */\n", + "\n", + "var comm_websocket_adapter = function (comm) {\n", + " // Create a \"websocket\"-like object which calls the given IPython comm\n", + " // object with the appropriate methods. Currently this is a non binary\n", + " // socket, so there is still some room for performance tuning.\n", + " var ws = {};\n", + "\n", + " ws.binaryType = comm.kernel.ws.binaryType;\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " function updateReadyState(_event) {\n", + " if (comm.kernel.ws) {\n", + " ws.readyState = comm.kernel.ws.readyState;\n", + " } else {\n", + " ws.readyState = 3; // Closed state.\n", + " }\n", + " }\n", + " comm.kernel.ws.addEventListener('open', updateReadyState);\n", + " comm.kernel.ws.addEventListener('close', updateReadyState);\n", + " comm.kernel.ws.addEventListener('error', updateReadyState);\n", + "\n", + " ws.close = function () {\n", + " comm.close();\n", + " };\n", + " ws.send = function (m) {\n", + " //console.log('sending', m);\n", + " comm.send(m);\n", + " };\n", + " // Register the callback with on_msg.\n", + " comm.on_msg(function (msg) {\n", + " //console.log('receiving', msg['content']['data'], msg);\n", + " var data = msg['content']['data'];\n", + " if (data['blob'] !== undefined) {\n", + " data = {\n", + " data: new Blob(msg['buffers'], { type: data['blob'] }),\n", + " };\n", + " }\n", + " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", + " ws.onmessage(data);\n", + " });\n", + " return ws;\n", + "};\n", + "\n", + "mpl.mpl_figure_comm = function (comm, msg) {\n", + " // This is the function which gets called when the mpl process\n", + " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", + "\n", + " var id = msg.content.data.id;\n", + " // Get hold of the div created by the display call when the Comm\n", + " // socket was opened in Python.\n", + " var element = document.getElementById(id);\n", + " var ws_proxy = comm_websocket_adapter(comm);\n", + "\n", + " function ondownload(figure, _format) {\n", + " window.open(figure.canvas.toDataURL());\n", + " }\n", + "\n", + " var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n", + "\n", + " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", + " // web socket which is closed, not our websocket->open comm proxy.\n", + " ws_proxy.onopen();\n", + "\n", + " fig.parent_element = element;\n", + " fig.cell_info = mpl.find_output_cell(\"
\");\n", + " if (!fig.cell_info) {\n", + " console.error('Failed to find cell for figure', id, fig);\n", + " return;\n", + " }\n", + " fig.cell_info[0].output_area.element.on(\n", + " 'cleared',\n", + " { fig: fig },\n", + " fig._remove_fig_handler\n", + " );\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_close = function (fig, msg) {\n", + " var width = fig.canvas.width / fig.ratio;\n", + " fig.cell_info[0].output_area.element.off(\n", + " 'cleared',\n", + " fig._remove_fig_handler\n", + " );\n", + " fig.resizeObserverInstance.unobserve(fig.canvas_div);\n", + "\n", + " // Update the output cell to use the data from the current canvas.\n", + " fig.push_to_output();\n", + " var dataURL = fig.canvas.toDataURL();\n", + " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", + " // the notebook keyboard shortcuts fail.\n", + " IPython.keyboard_manager.enable();\n", + " fig.parent_element.innerHTML =\n", + " '';\n", + " fig.close_ws(fig, msg);\n", + "};\n", + "\n", + "mpl.figure.prototype.close_ws = function (fig, msg) {\n", + " fig.send_message('closing', msg);\n", + " // fig.ws.close()\n", + "};\n", + "\n", + "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n", + " // Turn the data on the canvas into data in the output cell.\n", + " var width = this.canvas.width / this.ratio;\n", + " var dataURL = this.canvas.toDataURL();\n", + " this.cell_info[1]['text/html'] =\n", + " '';\n", + "};\n", + "\n", + "mpl.figure.prototype.updated_canvas_event = function () {\n", + " // Tell IPython that the notebook contents must change.\n", + " IPython.notebook.set_dirty(true);\n", + " this.send_message('ack', {});\n", + " var fig = this;\n", + " // Wait a second, then push the new image to the DOM so\n", + " // that it is saved nicely (might be nice to debounce this).\n", + " setTimeout(function () {\n", + " fig.push_to_output();\n", + " }, 1000);\n", + "};\n", + "\n", + "mpl.figure.prototype._init_toolbar = function () {\n", + " var fig = this;\n", + "\n", + " var toolbar = document.createElement('div');\n", + " toolbar.classList = 'btn-toolbar';\n", + " this.root.appendChild(toolbar);\n", + "\n", + " function on_click_closure(name) {\n", + " return function (_event) {\n", + " return fig.toolbar_button_onclick(name);\n", + " };\n", + " }\n", + "\n", + " function on_mouseover_closure(tooltip) {\n", + " return function (event) {\n", + " if (!event.currentTarget.disabled) {\n", + " return fig.toolbar_button_onmouseover(tooltip);\n", + " }\n", + " };\n", + " }\n", + "\n", + " fig.buttons = {};\n", + " var buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " var button;\n", + " for (var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " /* Instead of a spacer, we start a new button group. */\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + " buttonGroup = document.createElement('div');\n", + " buttonGroup.classList = 'btn-group';\n", + " continue;\n", + " }\n", + "\n", + " button = fig.buttons[name] = document.createElement('button');\n", + " button.classList = 'btn btn-default';\n", + " button.href = '#';\n", + " button.title = name;\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', on_click_closure(method_name));\n", + " button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n", + " buttonGroup.appendChild(button);\n", + " }\n", + "\n", + " if (buttonGroup.hasChildNodes()) {\n", + " toolbar.appendChild(buttonGroup);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = document.createElement('span');\n", + " status_bar.classList = 'mpl-message pull-right';\n", + " toolbar.appendChild(status_bar);\n", + " this.message = status_bar;\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = document.createElement('div');\n", + " buttongrp.classList = 'btn-group inline pull-right';\n", + " button = document.createElement('button');\n", + " button.classList = 'btn btn-mini btn-primary';\n", + " button.href = '#';\n", + " button.title = 'Stop Interaction';\n", + " button.innerHTML = '';\n", + " button.addEventListener('click', function (_evt) {\n", + " fig.handle_close(fig, {});\n", + " });\n", + " button.addEventListener(\n", + " 'mouseover',\n", + " on_mouseover_closure('Stop Interaction')\n", + " );\n", + " buttongrp.appendChild(button);\n", + " var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n", + " titlebar.insertBefore(buttongrp, titlebar.firstChild);\n", + "};\n", + "\n", + "mpl.figure.prototype._remove_fig_handler = function (event) {\n", + " var fig = event.data.fig;\n", + " if (event.target !== this) {\n", + " // Ignore bubbled events from children.\n", + " return;\n", + " }\n", + " fig.close_ws(fig, {});\n", + "};\n", + "\n", + "mpl.figure.prototype._root_extra_style = function (el) {\n", + " el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n", + "};\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function (el) {\n", + " // this is important to make the div 'focusable\n", + " el.setAttribute('tabindex', 0);\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " } else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype._key_event_extra = function (event, _name) {\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which === 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "};\n", + "\n", + "mpl.figure.prototype.handle_save = function (fig, _msg) {\n", + " fig.ondownload(fig, null);\n", + "};\n", + "\n", + "mpl.find_output_cell = function (html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i = 0; i < ncells; i++) {\n", + " var cell = cells[i];\n", + " if (cell.cell_type === 'code') {\n", + " for (var j = 0; j < cell.output_area.outputs.length; j++) {\n", + " var data = cell.output_area.outputs[j];\n", + " if (data.data) {\n", + " // IPython >= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] === html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "};\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel !== null) {\n", + " IPython.notebook.kernel.comm_manager.register_target(\n", + " 'matplotlib',\n", + " mpl.mpl_figure_comm\n", + " );\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[132], line 9\u001b[0m\n\u001b[1;32m 7\u001b[0m fig, axes \u001b[38;5;241m=\u001b[39m pyplot\u001b[38;5;241m.\u001b[39msubplots()\n\u001b[1;32m 8\u001b[0m \u001b[38;5;66;03m# axes.pie([data[1][key] for key in data[0]], labels=data[0])\u001b[39;00m\n\u001b[0;32m----> 9\u001b[0m \u001b[43maxes\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbarh\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 10\u001b[0m pyplot\u001b[38;5;241m.\u001b[39mxscale(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlog\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 11\u001b[0m axes\u001b[38;5;241m.\u001b[39mset_title(desc)\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/axes/_axes.py:2623\u001b[0m, in \u001b[0;36mAxes.barh\u001b[0;34m(self, y, width, height, left, align, data, **kwargs)\u001b[0m\n\u001b[1;32m 2513\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2514\u001b[0m \u001b[38;5;124;03mMake a horizontal bar plot.\u001b[39;00m\n\u001b[1;32m 2515\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2620\u001b[0m \u001b[38;5;124;03m:doc:`/gallery/lines_bars_and_markers/horizontal_barchart_distribution`.\u001b[39;00m\n\u001b[1;32m 2621\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2622\u001b[0m kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124morientation\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhorizontal\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m-> 2623\u001b[0m patches \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbar\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mleft\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheight\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwidth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mwidth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbottom\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2624\u001b[0m \u001b[43m \u001b[49m\u001b[43malign\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43malign\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2625\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m patches\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/__init__.py:1423\u001b[0m, in \u001b[0;36m_preprocess_data..inner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1420\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 1421\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minner\u001b[39m(ax, \u001b[38;5;241m*\u001b[39margs, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 1422\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m data \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1423\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mmap\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1425\u001b[0m bound \u001b[38;5;241m=\u001b[39m new_sig\u001b[38;5;241m.\u001b[39mbind(ax, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 1426\u001b[0m auto_label \u001b[38;5;241m=\u001b[39m (bound\u001b[38;5;241m.\u001b[39marguments\u001b[38;5;241m.\u001b[39mget(label_namer)\n\u001b[1;32m 1427\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m bound\u001b[38;5;241m.\u001b[39mkwargs\u001b[38;5;241m.\u001b[39mget(label_namer))\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/axes/_axes.py:2454\u001b[0m, in \u001b[0;36mAxes.bar\u001b[0;34m(self, x, height, width, bottom, align, **kwargs)\u001b[0m\n\u001b[1;32m 2451\u001b[0m args \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mzip\u001b[39m(left, bottom, width, height, color, edgecolor, linewidth,\n\u001b[1;32m 2452\u001b[0m hatch, patch_labels)\n\u001b[1;32m 2453\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m l, b, w, h, c, e, lw, htch, lbl \u001b[38;5;129;01min\u001b[39;00m args:\n\u001b[0;32m-> 2454\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43mmpatches\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mRectangle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2455\u001b[0m \u001b[43m \u001b[49m\u001b[43mxy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43ml\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwidth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheight\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mh\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2456\u001b[0m \u001b[43m \u001b[49m\u001b[43mfacecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2457\u001b[0m \u001b[43m \u001b[49m\u001b[43medgecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43me\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2458\u001b[0m \u001b[43m \u001b[49m\u001b[43mlinewidth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlw\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2459\u001b[0m \u001b[43m \u001b[49m\u001b[43mlabel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mlbl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2460\u001b[0m \u001b[43m \u001b[49m\u001b[43mhatch\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhtch\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2461\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2462\u001b[0m r\u001b[38;5;241m.\u001b[39m_internal_update(kwargs)\n\u001b[1;32m 2463\u001b[0m r\u001b[38;5;241m.\u001b[39mget_path()\u001b[38;5;241m.\u001b[39m_interpolation_steps \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m100\u001b[39m\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/_api/deprecation.py:454\u001b[0m, in \u001b[0;36mmake_keyword_only..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m name_idx:\n\u001b[1;32m 449\u001b[0m warn_deprecated(\n\u001b[1;32m 450\u001b[0m since, message\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPassing the \u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;132;01m%(obj_type)s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 451\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpositionally is deprecated since Matplotlib \u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[38;5;124m; the \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 452\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparameter will become keyword-only \u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 453\u001b[0m name\u001b[38;5;241m=\u001b[39mname, obj_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparameter of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m()\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 454\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/patches.py:712\u001b[0m, in \u001b[0;36mRectangle.__init__\u001b[0;34m(self, xy, width, height, angle, rotation_point, **kwargs)\u001b[0m\n\u001b[1;32m 687\u001b[0m \u001b[38;5;129m@_docstring\u001b[39m\u001b[38;5;241m.\u001b[39mdedent_interpd\n\u001b[1;32m 688\u001b[0m \u001b[38;5;129m@_api\u001b[39m\u001b[38;5;241m.\u001b[39mmake_keyword_only(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m3.6\u001b[39m\u001b[38;5;124m\"\u001b[39m, name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mangle\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 689\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, xy, width, height, angle\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.0\u001b[39m, \u001b[38;5;241m*\u001b[39m,\n\u001b[1;32m 690\u001b[0m rotation_point\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mxy\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 691\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 692\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[1;32m 693\u001b[0m \u001b[38;5;124;03m ----------\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 710\u001b[0m \u001b[38;5;124;03m %(Patch:kwdoc)s\u001b[39;00m\n\u001b[1;32m 711\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 712\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 713\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_x0 \u001b[38;5;241m=\u001b[39m xy[\u001b[38;5;241m0\u001b[39m]\n\u001b[1;32m 714\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_y0 \u001b[38;5;241m=\u001b[39m xy[\u001b[38;5;241m1\u001b[39m]\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/_api/deprecation.py:454\u001b[0m, in \u001b[0;36mmake_keyword_only..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m name_idx:\n\u001b[1;32m 449\u001b[0m warn_deprecated(\n\u001b[1;32m 450\u001b[0m since, message\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPassing the \u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;132;01m%(obj_type)s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 451\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpositionally is deprecated since Matplotlib \u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[38;5;124m; the \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 452\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparameter will become keyword-only \u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 453\u001b[0m name\u001b[38;5;241m=\u001b[39mname, obj_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparameter of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m()\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 454\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/patches.py:98\u001b[0m, in \u001b[0;36mPatch.__init__\u001b[0;34m(self, edgecolor, facecolor, color, linewidth, linestyle, antialiased, hatch, fill, capstyle, joinstyle, **kwargs)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mset_joinstyle(joinstyle)\n\u001b[1;32m 97\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(kwargs):\n\u001b[0;32m---> 98\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_internal_update\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/artist.py:1186\u001b[0m, in \u001b[0;36mArtist._internal_update\u001b[0;34m(self, kwargs)\u001b[0m\n\u001b[1;32m 1179\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_internal_update\u001b[39m(\u001b[38;5;28mself\u001b[39m, kwargs):\n\u001b[1;32m 1180\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1181\u001b[0m \u001b[38;5;124;03m Update artist properties without prenormalizing them, but generating\u001b[39;00m\n\u001b[1;32m 1182\u001b[0m \u001b[38;5;124;03m errors as if calling `set`.\u001b[39;00m\n\u001b[1;32m 1183\u001b[0m \n\u001b[1;32m 1184\u001b[0m \u001b[38;5;124;03m The lack of prenormalization is to maintain backcompatibility.\u001b[39;00m\n\u001b[1;32m 1185\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1186\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_update_props\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1187\u001b[0m \u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{cls.__name__}\u001b[39;49;00m\u001b[38;5;124;43m.set() got an unexpected keyword argument \u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 1188\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{prop_name!r}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/usr/lib/python3.10/site-packages/matplotlib/artist.py:1151\u001b[0m, in \u001b[0;36mArtist._update_props\u001b[0;34m(self, props, errfmt)\u001b[0m\n\u001b[1;32m 1144\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1145\u001b[0m \u001b[38;5;124;03mHelper for `.Artist.set` and `.Artist.update`.\u001b[39;00m\n\u001b[1;32m 1146\u001b[0m \n\u001b[1;32m 1147\u001b[0m \u001b[38;5;124;03m*errfmt* is used to generate error messages for invalid property\u001b[39;00m\n\u001b[1;32m 1148\u001b[0m \u001b[38;5;124;03mnames; it get formatted with ``type(self)`` and the property name.\u001b[39;00m\n\u001b[1;32m 1149\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1150\u001b[0m ret \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m-> 1151\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m cbook\u001b[38;5;241m.\u001b[39m_setattr_cm(\u001b[38;5;28mself\u001b[39m, eventson\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m 1152\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, v \u001b[38;5;129;01min\u001b[39;00m props\u001b[38;5;241m.\u001b[39mitems():\n\u001b[1;32m 1153\u001b[0m \u001b[38;5;66;03m# Allow attributes we want to be able to update through\u001b[39;00m\n\u001b[1;32m 1154\u001b[0m \u001b[38;5;66;03m# art.update, art.set, setp.\u001b[39;00m\n\u001b[1;32m 1155\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m k \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maxes\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "sortcount = sorted(bycount, reverse=False, key=lambda x: bycount[x])\n", + "sortsize = sorted(bysize, reverse=False, key=lambda x: bysize[x])\n", + "sortsizerepresentative = sorted(bysizerepresentative, reverse=False, key=lambda x: bysizerepresentative[x])\n", + "from matplotlib import pyplot\n", + "%matplotlib notebook\n", + "for desc, data in {\"po številu datotek\": (sortcount, bycount), \"po velikosti datotek\": (sortsize, bysize), \"po številu po velikosti največjih datotek torrentov\": (sortsizerepresentative, bysizerepresentative)}.items():\n", + " fig, axes = pyplot.subplots()\n", + " # axes.pie([data[1][key] for key in data[0]], labels=data[0])\n", + " axes.barh(data[0], [data[1][key] for key in data[0]])\n", + " pyplot.xscale(\"log\")\n", + " axes.set_title(desc)\n", + " fig.show()" + ] } ], "metadata": { -- cgit v1.2.3