From 027e41be4625ec00d80dd212fb1cca70009b0acc Mon Sep 17 00:00:00 2001 From: projectdx Date: Sun, 30 Oct 2022 05:22:00 +0900 Subject: [PATCH] =?UTF-8?q?2022-10-30=20(=EC=9D=BC=EB=B6=80=EC=88=98?= =?UTF-8?q?=EC=A0=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 +- .../anime_downloader_ohli24_category.html | 1702 +++++++++-------- test.ipynb | 371 ++++ 3 files changed, 1231 insertions(+), 849 deletions(-) diff --git a/.gitignore b/.gitignore index 38389e3..c8d59c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ *.pyo -*.pyc \ No newline at end of file +*.pyc + +.idea +.vscode +.gitignore +test.ipynb diff --git a/templates/anime_downloader_ohli24_category.html b/templates/anime_downloader_ohli24_category.html index 7c48ac8..d5a18e3 100644 --- a/templates/anime_downloader_ohli24_category.html +++ b/templates/anime_downloader_ohli24_category.html @@ -1,923 +1,929 @@ {% extends "base.html" %} {% block content %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- - -
+
+ + +
-
-
- - - -
-
-
-
-
-
-
-
-
- Loading... -
-
-
-
-
+
+
+ + +
+
+
+
+
+
+
+
+
+ Loading... +
+
+
+
+
+
+ - - + {% endblock %} diff --git a/test.ipynb b/test.ipynb index 4d1aa16..b1862f6 100644 --- a/test.ipynb +++ b/test.ipynb @@ -208,6 +208,377 @@ "metadata": { "collapsed": false } + }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'c h(w=1t){R(\"S\",{\"T\":{\"U\":\"r-q\",\"V\":\"\\\\/\\\\/u.d\\\\/y\\\\/x\\\\/4\\\\/r-q.Q\"},\"Y\":{\"p\":\"\",\"10\":\"\",\"11\":\"12-14\",\"15\":1},\"16\":[{\"p\":\"b:\\\\/\\\\/18-Z.d\\\\/O\\\\/I\\\\/N\\\\/o.A\",\"B\":\"o\"}],\"D\":{\"E\":\"8\",\"z\":\"G H\"},\"J\":\"\",\"K\":\"\\\\\\\\a\\\\\\\\f\\\\\\\\n\\\\\\\\e\\\\\\\\5\\\\\\\\k\\\\\\\\i\\\\\\\\e\\\\\\\\3\\\\\\\\g\\\\\\\\L\\\\\\\\m\\\\\\\\5\\\\\\\\M\\\\\\\\3\\\\\\\\e\\\\\\\\n\\\\\\\\j\\\\\\\\19\\\\\\\\P\\\\\\\\a\\\\\\\\f\\\\\\\\m\\\\\\\\1b\\\\\\\\3\\\\\\\\1a\\\\\\\\3\\\\\\\\g\\\\\\\\5\\\\\\\\k\\\\\\\\1y\\\\\\\\g\\\\\\\\a\\\\\\\\f\\\\\\\\1z\\\\\\\\t\\\\\\\\3\\\\\\\\j\\\\\\\\i\\\\\\\\1B\\\\\\\\5\\\\\\\\t\\\\\\\\1C\\\\\\\\1D\",\"1E\":9,\"1F\":9,\"1G\":9,\"1H\":\"[1u]나의 히어로 아카데미아 6기1k.1s\",\"1d\":1,\"1e\":1,\"1f\":[],\"1g\":1,\"1h\":[\"1i:\\\\/\\\\/1c.1j.l\\\\/\"],\"1l\":1,\"1m\":\"0\",\"1n\":\"b:\\\\/\\\\/1o.l\\\\/\",\"1q\":1,\"1r\":\"2\",\"1w\":\"4\",\"F\":\"1p+1v=\",\"1A\":\"b:\\\\/\\\\/u.d\\\\/y\\\\/x\\\\/4\\\\/4-8.13.7\\\\/4.1x?v=2\"},1,w)}$(c(){$(C).17(c(){X s=9;W(s){h()}})});', 62, 106, '|false||x5a|jwplayer|x4d||||true|x59|https|function|xyz|x6c|x7a|x6a|fireload|x4a|x47|x44|com|x6b|x4e|thumbnails|file|red|tube|fireplay|x32|ndoodle||source|assets|player|fontfamily|vtt|kind|document|captions|fontSize|jwPlayerKey|Trebuchet|MS|down|defaultImage|ck|x52|x57|cb81181382a6f4d29d4c9785d130fb12|cdn|x31|css|FirePlayer|c58ec9af29371058432c2c0ddf1f3c9a|skin|name|url|if|var|logo|nydoodle|link|position|top||right|active|tracks|ready|cdn1|x45|x54|x34|tracker|displaytitle|rememberPosition|advertising|p2p|p2pTrackers|wss|openwebtorrent|05|popactive|poplimit|popurl|firevideoplayer|ksaKvjlJRbnrPXSGpuPVqfscYS9|downloadFile|downloadType|mkv|null|OHLI|rZFhulEcXvUQMbyWAmIQyyjPjZAQPLw|videoPlayer|js|x64|x49|jwPlayerURL|x69|x51|x3d|SubtitleManager|jwplayer8button1|jwplayer8quality|title'.split('|'), 0, {}))\n" + ] + } + ], + "source": [ + "import re\n", + "\n", + "def baseN(num,b,numerals=\"0123456789abcdefghijklmnopqrstuvwxyz\"):\n", + " return ((num == 0) and numerals[0]) or (baseN(num // b, b, numerals).lstrip(numerals[0]) + numerals[num % b])\n", + "\n", + "def unpack(p, a, c, k, e=None, d=None):\n", + " while (c):\n", + " c-=1\n", + " if (k[c]):\n", + " p = re.sub(\"\\\\b\" + baseN(c, a) + \"\\\\b\", k[c], p)\n", + " return p\n", + "\n", + "encrypted = r'''eval(function(p, a, c, k, e, d) {\n", + " e = function(c) {\n", + " return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))\n", + " }\n", + " ;\n", + " if (!''.replace(/^/, String)) {\n", + " while (c--) {\n", + " d[e(c)] = k[c] || e(c)\n", + " }\n", + " k = [function(e) {\n", + " return d[e]\n", + " }\n", + " ];\n", + " e = function() {\n", + " return '\\\\w+'\n", + " }\n", + " ;\n", + " c = 1\n", + " }\n", + " ;while (c--) {\n", + " if (k[c]) {\n", + " p = p.replace(new RegExp('\\\\b' + e(c) + '\\\\b','g'), k[c])\n", + " }\n", + " }\n", + " return p\n", + " }('c h(w=1t){R(\"S\",{\"T\":{\"U\":\"r-q\",\"V\":\"\\\\/\\\\/u.d\\\\/y\\\\/x\\\\/4\\\\/r-q.Q\"},\"Y\":{\"p\":\"\",\"10\":\"\",\"11\":\"12-14\",\"15\":1},\"16\":[{\"p\":\"b:\\\\/\\\\/18-Z.d\\\\/O\\\\/I\\\\/N\\\\/o.A\",\"B\":\"o\"}],\"D\":{\"E\":\"8\",\"z\":\"G H\"},\"J\":\"\",\"K\":\"\\\\\\\\a\\\\\\\\f\\\\\\\\n\\\\\\\\e\\\\\\\\5\\\\\\\\k\\\\\\\\i\\\\\\\\e\\\\\\\\3\\\\\\\\g\\\\\\\\L\\\\\\\\m\\\\\\\\5\\\\\\\\M\\\\\\\\3\\\\\\\\e\\\\\\\\n\\\\\\\\j\\\\\\\\19\\\\\\\\P\\\\\\\\a\\\\\\\\f\\\\\\\\m\\\\\\\\1b\\\\\\\\3\\\\\\\\1a\\\\\\\\3\\\\\\\\g\\\\\\\\5\\\\\\\\k\\\\\\\\1y\\\\\\\\g\\\\\\\\a\\\\\\\\f\\\\\\\\1z\\\\\\\\t\\\\\\\\3\\\\\\\\j\\\\\\\\i\\\\\\\\1B\\\\\\\\5\\\\\\\\t\\\\\\\\1C\\\\\\\\1D\",\"1E\":9,\"1F\":9,\"1G\":9,\"1H\":\"[1u]나의 히어로 아카데미아 6기1k.1s\",\"1d\":1,\"1e\":1,\"1f\":[],\"1g\":1,\"1h\":[\"1i:\\\\/\\\\/1c.1j.l\\\\/\"],\"1l\":1,\"1m\":\"0\",\"1n\":\"b:\\\\/\\\\/1o.l\\\\/\",\"1q\":1,\"1r\":\"2\",\"1w\":\"4\",\"F\":\"1p+1v=\",\"1A\":\"b:\\\\/\\\\/u.d\\\\/y\\\\/x\\\\/4\\\\/4-8.13.7\\\\/4.1x?v=2\"},1,w)}$(c(){$(C).17(c(){X s=9;W(s){h()}})});', 62, 106, '|false||x5a|jwplayer|x4d||||true|x59|https|function|xyz|x6c|x7a|x6a|fireload|x4a|x47|x44|com|x6b|x4e|thumbnails|file|red|tube|fireplay|x32|ndoodle||source|assets|player|fontfamily|vtt|kind|document|captions|fontSize|jwPlayerKey|Trebuchet|MS|down|defaultImage|ck|x52|x57|cb81181382a6f4d29d4c9785d130fb12|cdn|x31|css|FirePlayer|c58ec9af29371058432c2c0ddf1f3c9a|skin|name|url|if|var|logo|nydoodle|link|position|top||right|active|tracks|ready|cdn1|x45|x54|x34|tracker|displaytitle|rememberPosition|advertising|p2p|p2pTrackers|wss|openwebtorrent|05|popactive|poplimit|popurl|firevideoplayer|ksaKvjlJRbnrPXSGpuPVqfscYS9|downloadFile|downloadType|mkv|null|OHLI|rZFhulEcXvUQMbyWAmIQyyjPjZAQPLw|videoPlayer|js|x64|x49|jwPlayerURL|x69|x51|x3d|SubtitleManager|jwplayer8button1|jwplayer8quality|title'.split('|'), 0, {}))\n", + "'''\n", + "\n", + "encrypted = encrypted.split('}(')[1][:-1]\n", + "\n", + "def unpack(p, a, c, k, e=None, d=None):\n", + " ''' unpack\n", + " Unpacker for the popular Javascript compression algorithm.\n", + "\n", + " @param p template code\n", + " @param a radix for variables in p\n", + " @param c number of variables in p\n", + " @param k list of c variable substitutions\n", + " @param e not used\n", + " @param d not used\n", + " @return p decompressed string\n", + " '''\n", + " # Paul Koppen, 2011\n", + " for i in xrange(c-1,-1,-1):\n", + " if k[i]: p = re.sub('\\\\b'+int2base(i,a)+'\\\\b', k[i], p)\n", + " return p\n", + "\n", + "print(encrypted)\n", + "\n", + "print(eval('unpack(' + encrypted))" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [ + { + "ename": "TypeError", + "evalue": "memoryview: a bytes-like object is required, not 'str'", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mTypeError\u001B[0m Traceback (most recent call last)", + "\u001B[0;32m/var/folders/9l/5sls926d02g2kzqb70_0c7rc0000gn/T/ipykernel_78001/3486714554.py\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[1;32m 6\u001B[0m \u001B[0mdata\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m'console.log'\u001B[0m \u001B[0;34m+\u001B[0m \u001B[0mdata\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m4\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 7\u001B[0m \u001B[0mp\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0msubprocess\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mPopen\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m'node'\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstdin\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0msubprocess\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mPIPE\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstdout\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0msubprocess\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mPIPE\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m----> 8\u001B[0;31m \u001B[0mstdout\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstderr\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mp\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcommunicate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 9\u001B[0m \u001B[0mprint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mstdout\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/subprocess.py\u001B[0m in \u001B[0;36mcommunicate\u001B[0;34m(self, input, timeout)\u001B[0m\n\u001B[1;32m 1026\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1027\u001B[0m \u001B[0;32mtry\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1028\u001B[0;31m \u001B[0mstdout\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstderr\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_communicate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0minput\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mendtime\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mtimeout\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 1029\u001B[0m \u001B[0;32mexcept\u001B[0m \u001B[0mKeyboardInterrupt\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1030\u001B[0m \u001B[0;31m# https://bugs.python.org/issue25942\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/subprocess.py\u001B[0m in \u001B[0;36m_communicate\u001B[0;34m(self, input, endtime, orig_timeout)\u001B[0m\n\u001B[1;32m 1846\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1847\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_input\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1848\u001B[0;31m \u001B[0minput_view\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mmemoryview\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_input\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 1849\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1850\u001B[0m \u001B[0;32mwith\u001B[0m \u001B[0m_PopenSelector\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mas\u001B[0m \u001B[0mselector\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;31mTypeError\u001B[0m: memoryview: a bytes-like object is required, not 'str'" + ] + } + ], + "source": [ + "import subprocess\n", + "# import StringIO\n", + "\n", + "data = r\"\"\"eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'^$'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p}('document.body.innerHTML=\"