| import asyncio |
| import os |
| import sys |
|
|
| import aiohttp |
|
|
|
|
| PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) |
| if PROJECT_ROOT not in sys.path: |
| sys.path.insert(0, PROJECT_ROOT) |
|
|
| from API import app as pixif_app |
|
|
|
|
| def read_dotenv_value(path, key): |
| try: |
| with open(path, "r") as env_file: |
| for line in env_file: |
| line = line.strip() |
| if not line or line.startswith("#") or "=" not in line: |
| continue |
| k, v = line.split("=", 1) |
| if k == key: |
| return v |
| except FileNotFoundError: |
| return None |
| return None |
|
|
| def get_phpsessid(): |
| phpsessid = os.getenv("PHPSESSID") |
| if phpsessid: |
| return phpsessid |
| env_path = os.path.join(PROJECT_ROOT, ".env") |
| phpsessid = read_dotenv_value(env_path, "PHPSESSID") |
| if phpsessid: |
| return phpsessid |
| raise RuntimeError("PHPSESSID is not set in the environment or .env") |
|
|
| async def run_local() -> dict: |
| post_id = 138954885 |
| semaphore = asyncio.Semaphore(8) |
| cookies = pixif_app.build_cookies(get_phpsessid()) |
|
|
| async with aiohttp.ClientSession(cookies=cookies, headers=pixif_app.headers) as session: |
| _, image_url = await pixif_app.process_post(post_id, session, semaphore) |
|
|
| if not image_url: |
| return {} |
|
|
| return {post_id: image_url.replace(pixif_app.img_base, "", 1)} |
|
|
|
|
| def main() -> int: |
| try: |
| data = asyncio.run(run_local()) |
| except Exception as exc: |
| print(f"Run failed: {exc}") |
| return 1 |
|
|
| print(data) |
| return 0 |
|
|
|
|
| if __name__ == "__main__": |
| sys.exit(main()) |
|
|