606 lines
75 KiB
Plaintext
606 lines
75 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"<class 'datetime.date'>\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from datetime import date, datetime\n",
|
|
"\n",
|
|
"print(date)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2022-06-07\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(date.today())"
|
|
],
|
|
"metadata": {
|
|
"collapsed": false
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"outputs": [
|
|
{
|
|
"ename": "RuntimeError",
|
|
"evalue": "asyncio.run() cannot be called from a running event loop",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
|
|
"\u001B[0;31mRuntimeError\u001B[0m Traceback (most recent call last)",
|
|
"\u001B[0;32m/var/folders/9l/5sls926d02g2kzqb70_0c7rc0000gn/T/ipykernel_40530/2714877972.py\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n\u001B[1;32m 52\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 53\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 54\u001B[0;31m \u001B[0masyncio\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mrun\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmain\u001B[0m\u001B[0;34m(\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[0m",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/asyncio/runners.py\u001B[0m in \u001B[0;36mrun\u001B[0;34m(main, debug)\u001B[0m\n\u001B[1;32m 31\u001B[0m \"\"\"\n\u001B[1;32m 32\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mevents\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_get_running_loop\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mis\u001B[0m \u001B[0;32mnot\u001B[0m \u001B[0;32mNone\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 33\u001B[0;31m raise RuntimeError(\n\u001B[0m\u001B[1;32m 34\u001B[0m \"asyncio.run() cannot be called from a running event loop\")\n\u001B[1;32m 35\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;31mRuntimeError\u001B[0m: asyncio.run() cannot be called from a running event loop"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from playwright.sync_api import sync_playwright\n",
|
|
"from playwright.async_api import async_playwright\n",
|
|
"# from playwright_stealth import stealth_sync\n",
|
|
"import asyncio\n",
|
|
"\n",
|
|
"async def run(pw):\n",
|
|
"\n",
|
|
" browser = await pw.chromium.launch(headless=False)\n",
|
|
" # context = browser.new_context(\n",
|
|
" # user_agent=ua,\n",
|
|
" # )\n",
|
|
"\n",
|
|
"\n",
|
|
" url = 'https://anilife.live/h/live?p=5aaf4907-da62-4b98-ba8f-59066a0dc0f4&a=none&player=jawcloud'\n",
|
|
" #\n",
|
|
" # if referer is not None:\n",
|
|
" # LogicAniLife.headers[\"Referer\"] = referer\n",
|
|
"\n",
|
|
" # context = browser.new_context(extra_http_headers=LogicAniLife.headers)\n",
|
|
" context = await browser.new_context()\n",
|
|
" # LogicAniLife.headers[\"Cookie\"] = cookie_value\n",
|
|
"\n",
|
|
" # context.set_extra_http_headers(LogicAniLife.headers)\n",
|
|
"\n",
|
|
" page = await context.new_page()\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
" # page.on(\"request\", set_cookie)\n",
|
|
" # stealth_sync(page)\n",
|
|
" page.goto(\n",
|
|
" url, wait_until=\"networkidle\"\n",
|
|
" )\n",
|
|
" page.wait_for_timeout(10000)\n",
|
|
" # time.sleep(1)\n",
|
|
" # page.reload()\n",
|
|
"\n",
|
|
" # time.sleep(10)\n",
|
|
" cookies = context.cookies\n",
|
|
" # print(cookies)\n",
|
|
"\n",
|
|
" # print(page.content())\n",
|
|
" vod_url = page.evaluate(\n",
|
|
" \"\"\"() => {\n",
|
|
" return console.log(vodUrl_1080p) }\"\"\"\n",
|
|
" )\n",
|
|
" print(vod_url)\n",
|
|
"\n",
|
|
"async def main():\n",
|
|
" async with async_playwright() as p:\n",
|
|
" await main_run(p)\n",
|
|
"\n",
|
|
"\n",
|
|
"asyncio.run(main())"
|
|
],
|
|
"metadata": {
|
|
"collapsed": false
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"outputs": [
|
|
{
|
|
"ename": "Error",
|
|
"evalue": "Executable doesn't exist at /Users/yommi/Library/Caches/ms-playwright/chromium-939194/chrome-mac/Chromium.app/Contents/MacOS/Chromium\n╔═════════════════════════════════════════════════════════════════════════╗\n║ Looks like Playwright Test or Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚═════════════════════════════════════════════════════════════════════════╝",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
|
|
"\u001B[0;31mError\u001B[0m Traceback (most recent call last)",
|
|
"\u001B[0;32m/var/folders/9l/5sls926d02g2kzqb70_0c7rc0000gn/T/ipykernel_67283/2756312828.py\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n\u001B[1;32m 57\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 58\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 59\u001B[0;31m \u001B[0masyncio\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mrun\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmain\u001B[0m\u001B[0;34m(\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[0m",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/nest_asyncio.py\u001B[0m in \u001B[0;36mrun\u001B[0;34m(future, debug)\u001B[0m\n\u001B[1;32m 30\u001B[0m \u001B[0mloop\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0masyncio\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_event_loop\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 31\u001B[0m \u001B[0mloop\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mset_debug\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdebug\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 32\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mloop\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mrun_until_complete\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mfuture\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 33\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 34\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0msys\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mversion_info\u001B[0m \u001B[0;34m>=\u001B[0m \u001B[0;34m(\u001B[0m\u001B[0;36m3\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;36m6\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;36m0\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[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/nest_asyncio.py\u001B[0m in \u001B[0;36mrun_until_complete\u001B[0;34m(self, future)\u001B[0m\n\u001B[1;32m 68\u001B[0m raise RuntimeError(\n\u001B[1;32m 69\u001B[0m 'Event loop stopped before Future completed.')\n\u001B[0;32m---> 70\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mf\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mresult\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[0m\u001B[1;32m 71\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 72\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0m_run_once\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\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[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/asyncio/futures.py\u001B[0m in \u001B[0;36mresult\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 176\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m__log_traceback\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mFalse\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 177\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_exception\u001B[0m \u001B[0;32mis\u001B[0m \u001B[0;32mnot\u001B[0m \u001B[0;32mNone\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 178\u001B[0;31m \u001B[0;32mraise\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_exception\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 179\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_result\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 180\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/asyncio/tasks.py\u001B[0m in \u001B[0;36m__step\u001B[0;34m(***failed resolving arguments***)\u001B[0m\n\u001B[1;32m 278\u001B[0m \u001B[0;31m# We use the `send` method directly, because coroutines\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 279\u001B[0m \u001B[0;31m# don't have `__iter__` and `__next__` methods.\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 280\u001B[0;31m \u001B[0mresult\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcoro\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0msend\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;32mNone\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 281\u001B[0m \u001B[0;32melse\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 282\u001B[0m \u001B[0mresult\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mcoro\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mthrow\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mexc\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;32m/var/folders/9l/5sls926d02g2kzqb70_0c7rc0000gn/T/ipykernel_67283/2756312828.py\u001B[0m in \u001B[0;36mmain\u001B[0;34m()\u001B[0m\n\u001B[1;32m 54\u001B[0m \u001B[0;32masync\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mmain\u001B[0m\u001B[0;34m(\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 55\u001B[0m \u001B[0;32masync\u001B[0m \u001B[0;32mwith\u001B[0m \u001B[0masync_playwright\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mas\u001B[0m \u001B[0mp\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 56\u001B[0;31m \u001B[0;32mawait\u001B[0m \u001B[0mmain_run\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mp\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 57\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 58\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;32m/var/folders/9l/5sls926d02g2kzqb70_0c7rc0000gn/T/ipykernel_67283/2756312828.py\u001B[0m in \u001B[0;36mmain_run\u001B[0;34m(playwright)\u001B[0m\n\u001B[1;32m 11\u001B[0m \u001B[0;32masync\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mmain_run\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mplaywright\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 12\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 13\u001B[0;31m \u001B[0mbrowser\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mawait\u001B[0m \u001B[0mplaywright\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mchromium\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mlaunch\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mheadless\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mFalse\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 14\u001B[0m \u001B[0;31m# context = browser.new_context(\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 15\u001B[0m \u001B[0;31m# user_agent=ua,\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/site-packages/playwright/async_api/_generated.py\u001B[0m in \u001B[0;36mlaunch\u001B[0;34m(self, executable_path, channel, args, ignore_default_args, handle_sigint, handle_sigterm, handle_sighup, timeout, env, headless, devtools, proxy, downloads_path, slow_mo, traces_dir, chromium_sandbox, firefox_user_prefs)\u001B[0m\n\u001B[1;32m 11600\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 11601\u001B[0m return mapping.from_impl(\n\u001B[0;32m> 11602\u001B[0;31m await self._async(\n\u001B[0m\u001B[1;32m 11603\u001B[0m \u001B[0;34m\"browser_type.launch\"\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 11604\u001B[0m self._impl_obj.launch(\n",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/playwright/_impl/_browser_type.py\u001B[0m in \u001B[0;36mlaunch\u001B[0;34m(self, executablePath, channel, args, ignoreDefaultArgs, handleSIGINT, handleSIGTERM, handleSIGHUP, timeout, env, headless, devtools, proxy, downloadsPath, slowMo, tracesDir, chromiumSandbox, firefoxUserPrefs)\u001B[0m\n\u001B[1;32m 86\u001B[0m \u001B[0mparams\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mlocals_to_params\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mlocals\u001B[0m\u001B[0;34m(\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 87\u001B[0m \u001B[0mnormalize_launch_params\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mparams\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 88\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mfrom_channel\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;32mawait\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_channel\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0msend\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m\"launch\"\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mparams\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[0m\u001B[1;32m 89\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 90\u001B[0m async def launch_persistent_context(\n",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/playwright/_impl/_connection.py\u001B[0m in \u001B[0;36msend\u001B[0;34m(self, method, params)\u001B[0m\n\u001B[1;32m 37\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 38\u001B[0m \u001B[0;32masync\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0msend\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mmethod\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mstr\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mparams\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mDict\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mNone\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m->\u001B[0m \u001B[0mAny\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 39\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0;32mawait\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0minner_send\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmethod\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mparams\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;32mFalse\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 40\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 41\u001B[0m \u001B[0;32masync\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0msend_return_as_dict\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mmethod\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mstr\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mparams\u001B[0m\u001B[0;34m:\u001B[0m \u001B[0mDict\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mNone\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m->\u001B[0m \u001B[0mAny\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/site-packages/playwright/_impl/_connection.py\u001B[0m in \u001B[0;36minner_send\u001B[0;34m(self, method, params, return_as_dict)\u001B[0m\n\u001B[1;32m 61\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0;32mnot\u001B[0m \u001B[0mcallback\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfuture\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdone\u001B[0m\u001B[0;34m(\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 62\u001B[0m \u001B[0mcallback\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfuture\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcancel\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[0;32m---> 63\u001B[0;31m \u001B[0mresult\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mnext\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0miter\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdone\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mresult\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[0m\u001B[1;32m 64\u001B[0m \u001B[0;31m# Protocol now has named return values, assume result is one level deeper unless\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 65\u001B[0m \u001B[0;31m# there is explicit ambiguity.\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/asyncio/futures.py\u001B[0m in \u001B[0;36mresult\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 176\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m__log_traceback\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mFalse\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 177\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_exception\u001B[0m \u001B[0;32mis\u001B[0m \u001B[0;32mnot\u001B[0m \u001B[0;32mNone\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 178\u001B[0;31m \u001B[0;32mraise\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_exception\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 179\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_result\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 180\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;31mError\u001B[0m: Executable doesn't exist at /Users/yommi/Library/Caches/ms-playwright/chromium-939194/chrome-mac/Chromium.app/Contents/MacOS/Chromium\n╔═════════════════════════════════════════════════════════════════════════╗\n║ Looks like Playwright Test or Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚═════════════════════════════════════════════════════════════════════════╝"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# !playwright install\n",
|
|
"\n",
|
|
"from playwright.sync_api import sync_playwright\n",
|
|
"from playwright.async_api import async_playwright\n",
|
|
"# from playwright_stealth import stealth_sync\n",
|
|
"import asyncio\n",
|
|
"import nest_asyncio\n",
|
|
"nest_asyncio.apply()\n",
|
|
"\n",
|
|
"\n",
|
|
"async def main_run(playwright):\n",
|
|
"\n",
|
|
" browser = await playwright.chromium.launch(headless=False)\n",
|
|
" # context = browser.new_context(\n",
|
|
" # user_agent=ua,\n",
|
|
" # )\n",
|
|
"\n",
|
|
"\n",
|
|
" url = 'https://sir.kr'\n",
|
|
" #\n",
|
|
" # if referer is not None:\n",
|
|
" # LogicAniLife.headers[\"Referer\"] = referer\n",
|
|
"\n",
|
|
" # context = browser.new_context(extra_http_headers=LogicAniLife.headers)\n",
|
|
" context = await browser.new_context()\n",
|
|
" # LogicAniLife.headers[\"Cookie\"] = cookie_value\n",
|
|
"\n",
|
|
" # context.set_extra_http_headers(LogicAniLife.headers)\n",
|
|
"\n",
|
|
" page = await context.new_page()\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
" # page.on(\"request\", set_cookie)\n",
|
|
" # stealth_sync(page)\n",
|
|
" page.goto(\n",
|
|
" url, wait_until=\"networkidle\"\n",
|
|
" )\n",
|
|
" page.wait_for_timeout(10000)\n",
|
|
" # time.sleep(1)\n",
|
|
" # page.reload()\n",
|
|
"\n",
|
|
" # time.sleep(10)\n",
|
|
" cookies = context.cookies\n",
|
|
" # print(cookies)\n",
|
|
"\n",
|
|
" # print(page.content())\n",
|
|
" vod_url = page.evaluate(\n",
|
|
" \"\"\"() => {\n",
|
|
" return console.log(vodUrl_1080p) }\"\"\"\n",
|
|
" )\n",
|
|
" print(vod_url)\n",
|
|
"\n",
|
|
"async def main():\n",
|
|
" async with async_playwright() as p:\n",
|
|
" await main_run(p)\n",
|
|
"\n",
|
|
"\n",
|
|
"asyncio.run(main())"
|
|
],
|
|
"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<module>\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=\"<iframe width=\\'100%\\' scrolling=\\'no\\' height=\\'2500\\' frameborder=\\'0\\' src=\\'http://www.exmaple.com\\'>\";',[],1,''.split('|'),0,{}))\"\"\"\n",
|
|
"\n",
|
|
"data = 'console.log' + data[4:]\n",
|
|
"p = subprocess.Popen(['node'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)\n",
|
|
"stdout, stderr = p.communicate(data)\n",
|
|
"print(stdout)"
|
|
],
|
|
"metadata": {
|
|
"collapsed": false
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Current Architecture:arm64\r\n",
|
|
"\u001B[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001B[0m\u001B[33m\r\n",
|
|
"\u001B[0mCollecting js2py\r\n",
|
|
" Downloading Js2Py-0.71-py3-none-any.whl (1.0 MB)\r\n",
|
|
"\u001B[2K \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.0/1.0 MB\u001B[0m \u001B[31m20.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0ma \u001B[36m0:00:01\u001B[0m\r\n",
|
|
"\u001B[?25hRequirement already satisfied: tzlocal>=1.2 in /opt/homebrew/lib/python3.9/site-packages (from js2py) (4.2)\r\n",
|
|
"Collecting pyjsparser>=2.5.1\r\n",
|
|
" Downloading pyjsparser-2.7.1.tar.gz (24 kB)\r\n",
|
|
" Preparing metadata (setup.py) ... \u001B[?25ldone\r\n",
|
|
"\u001B[?25hRequirement already satisfied: six>=1.10 in /opt/homebrew/lib/python3.9/site-packages (from js2py) (1.16.0)\r\n",
|
|
"Requirement already satisfied: pytz-deprecation-shim in /opt/homebrew/lib/python3.9/site-packages (from tzlocal>=1.2->js2py) (0.1.0.post0)\r\n",
|
|
"Requirement already satisfied: tzdata in /opt/homebrew/lib/python3.9/site-packages (from pytz-deprecation-shim->tzlocal>=1.2->js2py) (2022.1)\r\n",
|
|
"Building wheels for collected packages: pyjsparser\r\n",
|
|
" Building wheel for pyjsparser (setup.py) ... \u001B[?25ldone\r\n",
|
|
"\u001B[?25h Created wheel for pyjsparser: filename=pyjsparser-2.7.1-py3-none-any.whl size=25983 sha256=cafcd6f4c47975bcdae72d2a6b31c0d6e643dcdf5a283199381915dbea6c73bf\r\n",
|
|
" Stored in directory: /Users/yommi/Library/Caches/pip/wheels/f0/70/61/f42dc45dcf0fbe8c495ce579b04730787081499bfb5b8bc60e\r\n",
|
|
"Successfully built pyjsparser\r\n",
|
|
"Installing collected packages: pyjsparser, js2py\r\n",
|
|
"\u001B[33m DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001B[0m\u001B[33m\r\n",
|
|
"\u001B[0m\u001B[33m DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001B[0m\u001B[33m\r\n",
|
|
"\u001B[0m\u001B[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001B[0m\u001B[33m\r\n",
|
|
"\u001B[0mSuccessfully installed js2py-0.71 pyjsparser-2.7.1\r\n",
|
|
"\r\n",
|
|
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip available: \u001B[0m\u001B[31;49m22.2.2\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m22.3\u001B[0m\r\n",
|
|
"\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpython3.9 -m pip install --upgrade pip\u001B[0m\r\n"
|
|
]
|
|
},
|
|
{
|
|
"ename": "ModuleNotFoundError",
|
|
"evalue": "No module named 'js2py'",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
|
|
"\u001B[0;31mModuleNotFoundError\u001B[0m Traceback (most recent call last)",
|
|
"\u001B[0;32m/var/folders/9l/5sls926d02g2kzqb70_0c7rc0000gn/T/ipykernel_78001/2637102220.py\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n\u001B[1;32m 3\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 4\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m----> 5\u001B[0;31m \u001B[0;32mimport\u001B[0m \u001B[0mjs2py\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 6\u001B[0m js = r\"\"\"\n\u001B[1;32m 7\u001B[0m \u001B[0meval\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mfunction\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mp\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0mr\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0mx\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0ms\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mfunction\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0;32mreturn\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m<\u001B[0m\u001B[0mr\u001B[0m\u001B[0;31m?\u001B[0m\u001B[0;34m''\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mparseInt\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m/\u001B[0m\u001B[0mr\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m+\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m%\u001B[0m\u001B[0mr\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m>\u001B[0m\u001B[0;36m35\u001B[0m\u001B[0;31m?\u001B[0m\u001B[0mString\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfromCharCode\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m+\u001B[0m\u001B[0;36m29\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mtoString\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;36m36\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m;\u001B[0m\u001B[0;32mif\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;31m!\u001B[0m\u001B[0;34m''\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mreplace\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m/\u001B[0m\u001B[0;34m^\u001B[0m\u001B[0;34m/\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0mString\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0;32mwhile\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m-\u001B[0m\u001B[0;34m-\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0ms\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mx\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m|\u001B[0m\u001B[0;34m|\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0mx\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mfunction\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0;32mreturn\u001B[0m \u001B[0ms\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m;\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mfunction\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0;32mreturn\u001B[0m\u001B[0;34m'\\\\w+'\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m;\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;36m1\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m;\u001B[0m\u001B[0;32mwhile\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m-\u001B[0m\u001B[0;34m-\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0;32mif\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mx\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0mp\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mp\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mreplace\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mnew\u001B[0m \u001B[0mRegExp\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'\\\\b'\u001B[0m\u001B[0;34m+\u001B[0m\u001B[0my\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m+\u001B[0m\u001B[0;34m'\\\\b'\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m'g'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0mx\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mo\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;32mreturn\u001B[0m \u001B[0mp\u001B[0m\u001B[0;34m}\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'p=B^C;m=G^I;h=F^E;r=H^J;f=2;l=K^u;e=5;c=4;n=8;t=v^w;j=A^z;g=y^x;k=1;d=D^O;b=T^V;s=6;a=3;o=7;i=0;q=9;L=i^j;Q=k^g;P=f^b;M=a^m;N=c^d;R=e^l;S=s^r;X=o^p;W=n^t;U=q^h;'\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;36m60\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;36m60\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m'^^^^^^^^^^Four^Seven4Seven^Five^Nine3Three^One^Zero^OneTwoZero^Seven9Four^Two^Nine6Six^Three^TwoOneNine^Eight5One^Seven^Eight^NineThreeTwo^Nine^Four3Eight^Six^Seven0Five^8090^5462^88^808^12035^3129^11286^10218^8909^6038^8888^7449^6689^3320^80^443^2546^Zero9EightSeven^Nine1SixNine^SixThreeFiveFive^8000^Nine7OneZero^Seven0FourOne^ZeroSixTwoEight^One2NineSix^9273^Six2ZeroFour^8118^Eight9SevenThree^FiveFourThreeTwo'\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0msplit\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'\\u005e'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m{\u001B[0m\u001B[0;34m}\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[0;31mModuleNotFoundError\u001B[0m: No module named 'js2py'"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"!pip install js2py\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"import js2py\n",
|
|
"js = r\"\"\"\n",
|
|
"eval(function(p,r,o,x,y,s){y=function(c){return(c<r?'':y(parseInt(c/r)))+((c=c%r)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(o--){s[y(o)]=x[o]||y(o)}x=[function(y){return s[y]}];y=function(){return'\\\\w+'};o=1};while(o--){if(x[o]){p=p.replace(new RegExp('\\\\b'+y(o)+'\\\\b','g'),x[o])}}return p}('p=B^C;m=G^I;h=F^E;r=H^J;f=2;l=K^u;e=5;c=4;n=8;t=v^w;j=A^z;g=y^x;k=1;d=D^O;b=T^V;s=6;a=3;o=7;i=0;q=9;L=i^j;Q=k^g;P=f^b;M=a^m;N=c^d;R=e^l;S=s^r;X=o^p;W=n^t;U=q^h;',60,60,'^^^^^^^^^^Four^Seven4Seven^Five^Nine3Three^One^Zero^OneTwoZero^Seven9Four^Two^Nine6Six^Three^TwoOneNine^Eight5One^Seven^Eight^NineThreeTwo^Nine^Four3Eight^Six^Seven0Five^8090^5462^88^808^12035^3129^11286^10218^8909^6038^8888^7449^6689^3320^80^443^2546^Zero9EightSeven^Nine1SixNine^SixThreeFiveFive^8000^Nine7OneZero^Seven0FourOne^ZeroSixTwoEight^One2NineSix^9273^Six2ZeroFour^8118^Eight9SevenThree^FiveFourThreeTwo'.split('\\u005e'),0,{}))\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"print(js2py.eval_js(js))\n",
|
|
"\n"
|
|
],
|
|
"metadata": {
|
|
"collapsed": false
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"outputs": [
|
|
{
|
|
"ename": "NotImplementedError",
|
|
"evalue": "Defaults not supported",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
|
|
"\u001B[0;31mNotImplementedError\u001B[0m Traceback (most recent call last)",
|
|
"\u001B[0;32m/var/folders/9l/5sls926d02g2kzqb70_0c7rc0000gn/T/ipykernel_78001/445800267.py\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n\u001B[1;32m 33\u001B[0m \"\"\"\n\u001B[1;32m 34\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 35\u001B[0;31m \u001B[0mprint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mjs2py\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0meval_js\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mjs\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[0m",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/evaljs.py\u001B[0m in \u001B[0;36meval_js\u001B[0;34m(js)\u001B[0m\n\u001B[1;32m 113\u001B[0m \"\"\"\n\u001B[1;32m 114\u001B[0m \u001B[0me\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mEvalJs\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[0;32m--> 115\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0me\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0meval\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mjs\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 116\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 117\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/evaljs.py\u001B[0m in \u001B[0;36meval\u001B[0;34m(self, expression, use_compilation_plan)\u001B[0m\n\u001B[1;32m 202\u001B[0m \u001B[0;34m\"\"\"evaluates expression in current context and returns its value\"\"\"\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 203\u001B[0m \u001B[0mcode\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m'PyJsEvalResult = eval(%s)'\u001B[0m \u001B[0;34m%\u001B[0m \u001B[0mjson\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdumps\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mexpression\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 204\u001B[0;31m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mexecute\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcode\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0muse_compilation_plan\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0muse_compilation_plan\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 205\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m'PyJsEvalResult'\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 206\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/evaljs.py\u001B[0m in \u001B[0;36mexecute\u001B[0;34m(self, js, use_compilation_plan)\u001B[0m\n\u001B[1;32m 197\u001B[0m compiled = cache[hashkey] = compile(code, '<EvalJS snippet>',\n\u001B[1;32m 198\u001B[0m 'exec')\n\u001B[0;32m--> 199\u001B[0;31m \u001B[0mexec\u001B[0m \u001B[0;34m(\u001B[0m\u001B[0mcompiled\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_context\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 200\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 201\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0meval\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mexpression\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0muse_compilation_plan\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mFalse\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[0;32m<EvalJS snippet>\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n",
|
|
"\u001B[0;32m<EvalJS snippet>\u001B[0m in \u001B[0;36mPyJs_LONG_0_\u001B[0;34m(var)\u001B[0m\n",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/base.py\u001B[0m in \u001B[0;36m__call__\u001B[0;34m(self, *args)\u001B[0m\n\u001B[1;32m 947\u001B[0m raise MakeError('TypeError',\n\u001B[1;32m 948\u001B[0m '%s is not a function' % self.typeof())\n\u001B[0;32m--> 949\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcall\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mGlobalObject\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0margs\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 950\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 951\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mcreate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;34m*\u001B[0m\u001B[0margs\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[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/base.py\u001B[0m in \u001B[0;36mcall\u001B[0;34m(self, this, args)\u001B[0m\n\u001B[1;32m 1462\u001B[0m \u001B[0margs\u001B[0m \u001B[0;34m+=\u001B[0m \u001B[0mthis\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0marguments\u001B[0m \u001B[0;31m#append extra params to the arg list\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1463\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-> 1464\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mJs\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcode\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m*\u001B[0m\u001B[0margs\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[0m\u001B[1;32m 1465\u001B[0m \u001B[0;32mexcept\u001B[0m \u001B[0mNotImplementedError\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1466\u001B[0m \u001B[0;32mraise\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/site-packages/js2py/host/jseval.py\u001B[0m in \u001B[0;36mEval\u001B[0;34m(code, this, arguments)\u001B[0m\n\u001B[1;32m 43\u001B[0m \u001B[0;32mbreak\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 44\u001B[0m \u001B[0;31m#print py_code\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 45\u001B[0;31m \u001B[0mexecutor\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mpy_code\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 46\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mhas_return\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 47\u001B[0m \u001B[0;32mreturn\u001B[0m \u001B[0mglobals\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m'EVAL_RESULT'\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/site-packages/js2py/host/jseval.py\u001B[0m in \u001B[0;36mexecutor\u001B[0;34m(code)\u001B[0m\n\u001B[1;32m 49\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 50\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mexecutor\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcode\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[0;32m---> 51\u001B[0;31m \u001B[0mexec\u001B[0m \u001B[0;34m(\u001B[0m\u001B[0mcode\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mglobals\u001B[0m\u001B[0;34m(\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[0m",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/host/jseval.py\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/base.py\u001B[0m in \u001B[0;36m__call__\u001B[0;34m(self, *args)\u001B[0m\n\u001B[1;32m 947\u001B[0m raise MakeError('TypeError',\n\u001B[1;32m 948\u001B[0m '%s is not a function' % self.typeof())\n\u001B[0;32m--> 949\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcall\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mGlobalObject\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0margs\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 950\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 951\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mcreate\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;34m*\u001B[0m\u001B[0margs\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[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/base.py\u001B[0m in \u001B[0;36mcall\u001B[0;34m(self, this, args)\u001B[0m\n\u001B[1;32m 1462\u001B[0m \u001B[0margs\u001B[0m \u001B[0;34m+=\u001B[0m \u001B[0mthis\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0marguments\u001B[0m \u001B[0;31m#append extra params to the arg list\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1463\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-> 1464\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mJs\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mcode\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m*\u001B[0m\u001B[0margs\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[0m\u001B[1;32m 1465\u001B[0m \u001B[0;32mexcept\u001B[0m \u001B[0mNotImplementedError\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1466\u001B[0m \u001B[0;32mraise\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/site-packages/js2py/host/jseval.py\u001B[0m in \u001B[0;36mEval\u001B[0;34m(code, this, arguments)\u001B[0m\n\u001B[1;32m 15\u001B[0m \u001B[0mglobals\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m'var'\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mlocal_scope\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 16\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---> 17\u001B[0;31m \u001B[0mpy_code\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mtranslate_js\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mcode\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mto_string\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mvalue\u001B[0m\u001B[0;34m,\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[0m\u001B[1;32m 18\u001B[0m \u001B[0;32mexcept\u001B[0m \u001B[0mSyntaxError\u001B[0m \u001B[0;32mas\u001B[0m \u001B[0msyn_err\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 19\u001B[0m \u001B[0;32mraise\u001B[0m \u001B[0mMakeError\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'SyntaxError'\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mstr\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0msyn_err\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[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/translators/translator.py\u001B[0m in \u001B[0;36mtranslate_js\u001B[0;34m(js, HEADER, use_compilation_plan, parse_fn)\u001B[0m\n\u001B[1;32m 70\u001B[0m \u001B[0mparsed\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mparse_fn\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mjs\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 71\u001B[0m \u001B[0mtranslating_nodes\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mclean_stacks\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[0;32m---> 72\u001B[0;31m return HEADER + translating_nodes.trans(\n\u001B[0m\u001B[1;32m 73\u001B[0m parsed) # syntax tree to python code\n\u001B[1;32m 74\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n",
|
|
"\u001B[0;32m/Volumes/WD/Users/yommi/miniforge3/envs/ani-downloader/lib/python3.8/site-packages/js2py/translators/translating_nodes.py\u001B[0m in \u001B[0;36mtrans\u001B[0;34m(ele, standard)\u001B[0m\n\u001B[1;32m 126\u001B[0m node = node.__dict__[\n\u001B[1;32m 127\u001B[0m 'standard'] if 'standard' in node.__dict__ else node\n\u001B[0;32m--> 128\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mnode\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m**\u001B[0m\u001B[0mele\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 129\u001B[0m \u001B[0;32mexcept\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 130\u001B[0m \u001B[0;31m#print ele\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/site-packages/js2py/translators/translating_nodes.py\u001B[0m in \u001B[0;36mProgram\u001B[0;34m(type, body)\u001B[0m\n\u001B[1;32m 564\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mProgram\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtype\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mbody\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 565\u001B[0m \u001B[0minline_stack\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mreset\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[0;32m--> 566\u001B[0;31m \u001B[0mcode\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m''\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mjoin\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtrans\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0me\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0me\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mbody\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 567\u001B[0m \u001B[0;31m# here add hoisted elements (register variables and define functions)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 568\u001B[0m \u001B[0mcode\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mContext\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_code\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m+\u001B[0m \u001B[0mcode\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/site-packages/js2py/translators/translating_nodes.py\u001B[0m in \u001B[0;36m<genexpr>\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 564\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mProgram\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtype\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mbody\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 565\u001B[0m \u001B[0minline_stack\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mreset\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[0;32m--> 566\u001B[0;31m \u001B[0mcode\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m''\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mjoin\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mtrans\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0me\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0me\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mbody\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 567\u001B[0m \u001B[0;31m# here add hoisted elements (register variables and define functions)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 568\u001B[0m \u001B[0mcode\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mContext\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mget_code\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m+\u001B[0m \u001B[0mcode\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/site-packages/js2py/translators/translating_nodes.py\u001B[0m in \u001B[0;36mtrans\u001B[0;34m(ele, standard)\u001B[0m\n\u001B[1;32m 126\u001B[0m node = node.__dict__[\n\u001B[1;32m 127\u001B[0m 'standard'] if 'standard' in node.__dict__ else node\n\u001B[0;32m--> 128\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mnode\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m**\u001B[0m\u001B[0mele\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 129\u001B[0m \u001B[0;32mexcept\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 130\u001B[0m \u001B[0;31m#print ele\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/site-packages/js2py/translators/translating_nodes.py\u001B[0m in \u001B[0;36mFunctionDeclaration\u001B[0;34m(type, id, params, defaults, body, generator, expression)\u001B[0m\n\u001B[1;32m 580\u001B[0m \u001B[0;32mraise\u001B[0m \u001B[0mNotImplementedError\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'Generators not supported'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 581\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mdefaults\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 582\u001B[0;31m \u001B[0;32mraise\u001B[0m \u001B[0mNotImplementedError\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'Defaults not supported'\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 583\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0;32mnot\u001B[0m \u001B[0mid\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 584\u001B[0m return FunctionExpression(type, id, params, defaults, body, generator,\n",
|
|
"\u001B[0;31mNotImplementedError\u001B[0m: Defaults not supported"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import js2py\n",
|
|
"js = r\"\"\"\n",
|
|
"eval(function(p,r,o,x,y,s){y=function(c){return(c<r?'':y(parseInt(c/r)))+((c=c%r)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(o--){s[y(o)]=x[o]||y(o)}x=[function(y){return s[y]}];y=function(){return'\\\\w+'};o=1};while(o--){if(x[o]){p=p.replace(new RegExp('\\\\b'+y(o)+'\\\\b','g'),x[o])}}return p}('p=B^C;m=G^I;h=F^E;r=H^J;f=2;l=K^u;e=5;c=4;n=8;t=v^w;j=A^z;g=y^x;k=1;d=D^O;b=T^V;s=6;a=3;o=7;i=0;q=9;L=i^j;Q=k^g;P=f^b;M=a^m;N=c^d;R=e^l;S=s^r;X=o^p;W=n^t;U=q^h;',60,60,'^^^^^^^^^^Four^Seven4Seven^Five^Nine3Three^One^Zero^OneTwoZero^Seven9Four^Two^Nine6Six^Three^TwoOneNine^Eight5One^Seven^Eight^NineThreeTwo^Nine^Four3Eight^Six^Seven0Five^8090^5462^88^808^12035^3129^11286^10218^8909^6038^8888^7449^6689^3320^80^443^2546^Zero9EightSeven^Nine1SixNine^SixThreeFiveFive^8000^Nine7OneZero^Seven0FourOne^ZeroSixTwoEight^One2NineSix^9273^Six2ZeroFour^8118^Eight9SevenThree^FiveFourThreeTwo'.split('\\u005e'),0,{}))\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"js = r\"\"\"\n",
|
|
"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",
|
|
"print(js2py.eval_js(js))"
|
|
],
|
|
"metadata": {
|
|
"collapsed": false
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"function fireload(source = null) {\n",
|
|
" FirePlayer(\"c58ec9af29371058432c2c0ddf1f3c9a\", {\n",
|
|
" \"skin\": {\n",
|
|
" \"name\": \"tube-red\",\n",
|
|
" \"url\": \"\\/\\/ndoodle.xyz\\/player\\/assets\\/jwplayer\\/tube-red.css\"\n",
|
|
" },\n",
|
|
" \"logo\": {\n",
|
|
" \"file\": \"\",\n",
|
|
" \"link\": \"\",\n",
|
|
" \"position\": \"top-right\",\n",
|
|
" \"active\": false\n",
|
|
" },\n",
|
|
" \"tracks\": [{\n",
|
|
" \"file\": \"https:\\/\\/cdn1-nydoodle.xyz\\/cdn\\/down\\/cb81181382a6f4d29d4c9785d130fb12\\/thumbnails.vtt\",\n",
|
|
" \"kind\": \"thumbnails\"\n",
|
|
" }],\n",
|
|
" \"captions\": {\n",
|
|
" \"fontSize\": \"8\",\n",
|
|
" \"fontfamily\": \"Trebuchet MS\"\n",
|
|
" },\n",
|
|
" \"defaultImage\": \"\",\n",
|
|
" \"ck\": \"\\\\x59\\\\x7a\\\\x4e\\\\x6c\\\\x4d\\\\x44\\\\x4a\\\\x6c\\\\x5a\\\\x6a\\\\x52\\\\x6b\\\\x4d\\\\x57\\\\x5a\\\\x6c\\\\x4e\\\\x47\\\\x45\\\\x31\\\\x59\\\\x7a\\\\x6b\\\\x34\\\\x5a\\\\x54\\\\x5a\\\\x6a\\\\x4d\\\\x44\\\\x64\\\\x6a\\\\x59\\\\x7a\\\\x49\\\\x32\\\\x5a\\\\x47\\\\x4a\\\\x69\\\\x4d\\\\x32\\\\x51\\\\x3d\",\n",
|
|
" \"SubtitleManager\": true,\n",
|
|
" \"jwplayer8button1\": true,\n",
|
|
" \"jwplayer8quality\": true,\n",
|
|
" \"title\": \"[OHLI]나의 히어로 아카데미아 6기05.mkv\",\n",
|
|
" \"displaytitle\": false,\n",
|
|
" \"rememberPosition\": false,\n",
|
|
" \"advertising\": [],\n",
|
|
" \"p2p\": false,\n",
|
|
" \"p2pTrackers\": [\"wss:\\/\\/tracker.openwebtorrent.com\\/\"],\n",
|
|
" \"popactive\": false,\n",
|
|
" \"poplimit\": \"0\",\n",
|
|
" \"popurl\": \"https:\\/\\/firevideoplayer.com\\/\",\n",
|
|
" \"downloadFile\": false,\n",
|
|
" \"downloadType\": \"2\",\n",
|
|
" \"videoPlayer\": \"jwplayer\",\n",
|
|
" \"jwPlayerKey\": \"ksaKvjlJRbnrPXSGpuPVqfscYS9+rZFhulEcXvUQMbyWAmIQyyjPjZAQPLw=\",\n",
|
|
" \"jwPlayerURL\": \"https:\\/\\/ndoodle.xyz\\/player\\/assets\\/jwplayer\\/jwplayer-8.13.7\\/jwplayer.js?v=2\"\n",
|
|
" }, false, source)\n",
|
|
"}\n",
|
|
"$(function() {\n",
|
|
" $(document).ready(function() {\n",
|
|
" var fireplay = true;\n",
|
|
" if (fireplay) {\n",
|
|
" fireload()\n",
|
|
" }\n",
|
|
" })\n",
|
|
"});\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from subprocess import Popen, PIPE\n",
|
|
"\n",
|
|
"js = 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",
|
|
"# p = Popen(['node', '-p', js], stdout=PIPE)\n",
|
|
"# output, _ = p.communicate()\n",
|
|
"# print(output)\n",
|
|
"\n",
|
|
"import jsbeautifier\n",
|
|
"res = jsbeautifier.beautify(js)\n",
|
|
"print(res)"
|
|
],
|
|
"metadata": {
|
|
"collapsed": false
|
|
}
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 2
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython2",
|
|
"version": "2.7.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0
|
|
}
|