Spaces:
Running
Running
Download db/test_functions/create_data.py from tonyliu404/Manglify_Backend: direct link, hf CLI and curl.
- Browser
- Download file 4.3 kB
-
https://huggingface.co/spaces/tonyliu404/Manglify_Backend/resolve/main/db/test_functions/create_data.py
- Command line
-
hf download hf://spaces/tonyliu404/Manglify_Backend/db/test_functions/create_data.py
-
curl -L -o create_data.py https://huggingface.co/spaces/tonyliu404/Manglify_Backend/resolve/main/db/test_functions/create_data.py
4.3 kB
| """ | |
| Insert sample data into the database for testing. | |
| Run from backend: python -m db.test_functions.create_data | |
| Requires DATABASE_URL in backend/.env. | |
| Uses umbrella Manga + Chapters. Optional external_manga_id (MangaDex series id) | |
| on save_panels_translation stores MangaDex series id. | |
| """ | |
| import db | |
| # Demo external ids (MangaDex uses UUID strings; local can use legacy-* from DB or omit) | |
| NARUTO_MANGADEX_ID = "931b3112-7b75-43e4-a13f-908f0a251ae2" # example placeholder UUID | |
| def _slug(title: str) -> str: | |
| s = title.strip().lower().replace(" ", "_") | |
| return "".join(ch for ch in s if ch.isalnum() or ch == "_") | |
| def _bubbles( | |
| manga_title: str, | |
| chapter_number: float, | |
| page_number: int, | |
| *pairs: tuple[str, str], | |
| ) -> list[dict]: | |
| """Create fake panels from (original, translated) pairs.""" | |
| slug = _slug(manga_title) | |
| result = [] | |
| for i, (orig, trans) in enumerate(pairs): | |
| result.append({ | |
| "bubble_index": i, | |
| # Page coordinate space (example values) | |
| "width": 1080, | |
| "height": 1522, | |
| # Globally unique demo URLs (matches global uniqueness on panel_url). | |
| "panel_url": ( | |
| "https://example.invalid/panels/" | |
| f"{slug}/ch{chapter_number:g}/p{page_number}/b{i}.jpg" | |
| ), | |
| "x1": 120.0 + i * 18, | |
| "y1": 140.0 + i * 55, | |
| "x2": 420.0 + i * 18, | |
| "y2": 260.0 + i * 55, | |
| "original_text": orig, | |
| "translated_text": trans, | |
| }) | |
| return result | |
| def seed(): | |
| db.init_db() | |
| # Umbrella manga 1: One Piece — MangaDex provider (example seed) | |
| db.save_panels_translation( | |
| manga_title="One Piece", | |
| chapter_number=1.0, | |
| page_number=1, | |
| panels=_bubbles( | |
| "One Piece", | |
| 1.0, | |
| 1, | |
| ("海賊王に俺はなる!", "I'm gonna be King of the Pirates!"), | |
| ), | |
| language_code="en", | |
| ) | |
| db.save_panels_translation( | |
| manga_title="One Piece", | |
| chapter_number=1.0, | |
| page_number=2, | |
| panels=_bubbles( | |
| "One Piece", | |
| 1.0, | |
| 2, | |
| ("麦わらのルフィ", "Monkey D. Luffy"), | |
| ("ゼファ", "Zeff"), | |
| ), | |
| language_code="en", | |
| ) | |
| db.save_panels_translation( | |
| manga_title="One Piece", | |
| chapter_number=2.0, | |
| page_number=1, | |
| panels=_bubbles( | |
| "One Piece", | |
| 2.0, | |
| 1, | |
| ("冒険の始まり", "The adventure begins"), | |
| ), | |
| language_code="en", | |
| ) | |
| # Umbrella manga 2: Naruto — MangaDex series id stored on Manga via external_manga_id | |
| db.save_panels_translation( | |
| manga_title="Naruto", | |
| chapter_number=1.0, | |
| page_number=1, | |
| panels=_bubbles( | |
| "Naruto", | |
| 1.0, | |
| 1, | |
| ("忍たま乱太郎", "Ninja Academy"), | |
| ("うずまきナルト", "Uzumaki Naruto"), | |
| ), | |
| language_code="en", | |
| external_manga_id=NARUTO_MANGADEX_ID, | |
| ) | |
| print("Seed data inserted.\n") | |
| # --- Queries: umbrella manga (no provider on Manga row) --- | |
| mangas = db.list_mangas(order_by="updated_at", order_desc=True) | |
| print("=== list_mangas (umbrella) ===") | |
| for m in mangas: | |
| print(f" id={m.id} title={m.manga_title!r} updated_at={m.updated_at}") | |
| # --- Chapters are scoped by provider: same title can exist per source --- | |
| print("\n=== list_chapters('One Piece') ===") | |
| for c in db.list_chapters("One Piece"): | |
| print(f" ch.id={c.id} ch={c.chapter_number} updated={c.updated_at}") | |
| print("\n=== list_chapters('Naruto') ===") | |
| for c in db.list_chapters("Naruto"): | |
| print(f" ch.id={c.id} ch={c.chapter_number} updated={c.updated_at}") | |
| print("\n=== MangaDex external_manga_id mapping ===") | |
| print(" Stored on manga.mangadex_manga_id") | |
| # Sample panel query | |
| panels = db.get_chapter_panels("One Piece", 1.0) | |
| print("\n=== get_chapter_panels('One Piece', 1.0) ===") | |
| print(f" panel count: {len(panels)}") | |
| if panels: | |
| p0 = panels[0] | |
| print(f" first: page={p0.page_number} translated={p0.translated_text!r}") | |
| if __name__ == "__main__": | |
| seed() | |