mirror of
https://github.com/HugeFrog24/jailbirdz-dl.git
synced 2026-03-02 09:04:33 +00:00
115 lines
3.6 KiB
Python
115 lines
3.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
grab_cookie.py — read the WordPress login cookie from an
|
|
installed browser and write it to .env as WP_LOGIN_COOKIE=name=value.
|
|
|
|
Usage:
|
|
python grab_cookie.py # tries Firefox, Chrome, Edge, Brave
|
|
python grab_cookie.py --browser firefox # explicit browser
|
|
"""
|
|
|
|
import argparse
|
|
from pathlib import Path
|
|
from config import COOKIE_DOMAIN
|
|
|
|
ENV_FILE = Path(".env")
|
|
ENV_KEY = "WP_LOGIN_COOKIE"
|
|
COOKIE_PREFIX = "wordpress_logged_in_"
|
|
|
|
BROWSER_NAMES = ["firefox", "chrome", "edge", "brave"]
|
|
|
|
|
|
def find_cookie(browser_name):
|
|
"""Return (name, value) for the wordpress_logged_in_* cookie, or (None, None)."""
|
|
try:
|
|
import rookiepy
|
|
except ImportError:
|
|
raise ImportError("rookiepy not installed — run: pip install rookiepy")
|
|
|
|
fn = getattr(rookiepy, browser_name, None)
|
|
if fn is None:
|
|
raise ValueError(f"rookiepy does not support '{browser_name}'.")
|
|
|
|
try:
|
|
cookies = fn([COOKIE_DOMAIN])
|
|
except PermissionError:
|
|
raise PermissionError(
|
|
f"Permission denied reading {browser_name} cookies.\n"
|
|
" Close the browser, or on Windows run as Administrator for Chrome/Edge."
|
|
)
|
|
except Exception as e:
|
|
raise RuntimeError(f"Could not read {browser_name} cookies: {e}")
|
|
|
|
for c in cookies:
|
|
if c.get("name", "").startswith(COOKIE_PREFIX):
|
|
return c["name"], c["value"]
|
|
|
|
return None, None
|
|
|
|
|
|
def update_env(name, value):
|
|
"""Write WP_LOGIN_COOKIE=name=value into .env, replacing any existing line."""
|
|
new_line = f"{ENV_KEY}={name}={value}\n"
|
|
|
|
if ENV_FILE.exists():
|
|
text = ENV_FILE.read_text(encoding="utf-8")
|
|
lines = text.splitlines(keepends=True)
|
|
for i, line in enumerate(lines):
|
|
if line.startswith(f"{ENV_KEY}=") or line.strip() == ENV_KEY:
|
|
lines[i] = new_line
|
|
ENV_FILE.write_text("".join(lines), encoding="utf-8")
|
|
return "updated"
|
|
# Key not present — append
|
|
if text and not text.endswith("\n"):
|
|
text += "\n"
|
|
ENV_FILE.write_text(text + new_line, encoding="utf-8")
|
|
return "appended"
|
|
else:
|
|
ENV_FILE.write_text(new_line, encoding="utf-8")
|
|
return "created"
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description=f"Copy the {COOKIE_DOMAIN} login cookie from your browser into .env."
|
|
)
|
|
parser.add_argument(
|
|
"--browser", "-b",
|
|
choices=BROWSER_NAMES,
|
|
metavar="BROWSER",
|
|
help=f"Browser to read from: {', '.join(BROWSER_NAMES)} (default: try all in order)",
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
order = [args.browser] if args.browser else BROWSER_NAMES
|
|
|
|
cookie_name = cookie_value = None
|
|
for browser in order:
|
|
print(f"[…] Trying {browser}…")
|
|
try:
|
|
cookie_name, cookie_value = find_cookie(browser)
|
|
except ImportError as e:
|
|
raise SystemExit(f"[!] {e}")
|
|
except (ValueError, PermissionError, RuntimeError) as e:
|
|
print(f"[!] {e}")
|
|
continue
|
|
|
|
if cookie_name:
|
|
print(f"[+] Found in {browser}: {cookie_name}")
|
|
break
|
|
print(f" No {COOKIE_PREFIX}* cookie found in {browser}.")
|
|
|
|
if not cookie_name:
|
|
raise SystemExit(
|
|
f"\n[!] No {COOKIE_PREFIX}* cookie found in any browser.\n"
|
|
f" Make sure you are logged into {COOKIE_DOMAIN}, then re-run.\n"
|
|
" Or set WP_LOGIN_COOKIE manually in .env — see .env.example."
|
|
)
|
|
|
|
action = update_env(cookie_name, cookie_value)
|
|
print(f"[✓] {ENV_KEY} {action} in {ENV_FILE}.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|