Files
MediaFusion/migrations/20250201080223_cleanup_deprecated_catalogs.py
mhdzumair 6e9ac6fc69 Add cleanup and catalog stats migrations; update startup script
Introduce migrations for cleaning deprecated catalogs and adding catalog stats. Replace the Gunicorn command in the Dockerfile with a startup script to run migrations automatically before starting the server. Update .dockerignore to include the new startup script.
2025-02-01 17:10:29 +05:30

104 lines
2.6 KiB
Python

from typing import List
from beanie import Document, free_fall_migration
from pydantic import Field
SUPPORTED_CATALOGS = {
"american_football",
"arabic_movies",
"arabic_series",
"baseball",
"basketball",
"contribution_stream",
"english_hdrip",
"english_series",
"english_tcrip",
"fighting",
"football",
"formula_racing",
"hindi_dubbed",
"hindi_hdrip",
"hindi_old",
"hindi_series",
"hindi_tcrip",
"hockey",
"kannada_dubbed",
"kannada_hdrip",
"kannada_old",
"kannada_series",
"kannada_tcrip",
"live_sport_events",
"live_tv",
"malayalam_dubbed",
"malayalam_hdrip",
"malayalam_old",
"malayalam_series",
"malayalam_tcrip",
"mediafusion_search_movies",
"mediafusion_search_series",
"mediafusion_search_tv",
"motogp_racing",
"other_sports",
"prowlarr_movies",
"prowlarr_series",
"rugby",
"tamil_dubbed",
"tamil_hdrip",
"tamil_old",
"tamil_series",
"tamil_tcrip",
"telugu_dubbed",
"telugu_hdrip",
"telugu_old",
"telugu_series",
"telugu_tcrip",
"tgx_movie",
"tgx_series",
}
class TorrentStreams(Document):
meta_id: str
catalog: List[str] = Field(default_factory=list)
class Settings:
name = "TorrentStreams"
class MediaFusionMetaData(Document):
catalogs: List[str] = Field(default_factory=list)
class Settings:
name = "MediaFusionMetaData"
class Forward:
@free_fall_migration(document_models=[TorrentStreams, MediaFusionMetaData])
async def cleanup_catalogs(self, session):
"""Clean up deprecated catalogs and fix catalog field name"""
all_catalogs = await TorrentStreams.distinct("catalog")
print(f"Found {len(all_catalogs)} catalogs in torrent streams")
deprecated_catalogs = set(all_catalogs) - SUPPORTED_CATALOGS
torrent_collection = TorrentStreams.get_motor_collection()
metadata_collection = MediaFusionMetaData.get_motor_collection()
print(f"Found {len(deprecated_catalogs)} deprecated catalogs. Cleaning up...")
# Step 1: Remove deprecated catalogs from metadata
await metadata_collection.update_many(
{"catalogs": {"$in": list(deprecated_catalogs)}},
{"$pull": {"catalogs": {"$in": list(deprecated_catalogs)}}},
)
# Step 2: Remove deprecated catalogs from torrent streams
await torrent_collection.update_many(
{"catalog": {"$in": list(deprecated_catalogs)}},
{"$pull": {"catalog": {"$in": list(deprecated_catalogs)}}},
)
print("Cleanup completed successfully")
class Backward:
pass