CATALOG_DATA = { "american_football": "American Football", "arabic_movies": "Arabic Movies", "arabic_series": "Arabic Series", "baseball": "Baseball", "basketball": "Basketball", "bangla_movies": "Bangla Movies", "bangla_series": "Bangla Series", "english_hdrip": "English HD Movies", "english_series": "English Series", "english_tcrip": "English TCRip Movies", "football": "Football", "formula_racing": "Formula Racing", "hindi_dubbed": "Hindi Dubbed Movies", "hindi_hdrip": "Hindi HD Movies", "hindi_old": "Hindi Old Movies", "hindi_series": "Hindi Series", "hindi_tcrip": "Hindi TCRip Movies", "hockey": "Hockey", "kannada_dubbed": "Kannada Dubbed Movies", "kannada_hdrip": "Kannada HD Movies", "kannada_old": "Kannada Old Movies", "kannada_series": "Kannada Series", "kannada_tcrip": "Kannada TCRip Movies", "live_sport_events": "Live Sport Events", "live_tv": "Live TV", "malayalam_dubbed": "Malayalam Dubbed Movies", "malayalam_hdrip": "Malayalam HD Movies", "malayalam_old": "Malayalam Old Movies", "malayalam_series": "Malayalam Series", "malayalam_tcrip": "Malayalam TCRip Movies", "mediafusion_search_movies": "MediaFusion Search Movies", "mediafusion_search_series": "MediaFusion Search Series", "mediafusion_search_tv": "MediaFusion Search TV", "motogp_racing": "MotoGP Racing", "other_sports": "Other Sports", "prowlarr_movies": "Prowlarr Scraped Movies", "prowlarr_series": "Prowlarr Scraped Series", "punjabi_movies": "Punjabi Movies", "punjabi_series": "Punjabi Series", "rugby": "Rugby/AFL", "tamil_dubbed": "Tamil Dubbed Movies", "tamil_hdrip": "Tamil HD Movies", "tamil_old": "Tamil Old Movies", "tamil_series": "Tamil Series", "tamil_tcrip": "Tamil TCRip Movies", "telugu_dubbed": "Telugu Dubbed Movies", "telugu_hdrip": "Telugu HD Movies", "telugu_old": "Telugu Old Movies", "telugu_series": "Telugu Series", "telugu_tcrip": "Telugu TCRip Movies", "fighting": "Fighting (WWE, UFC)", "tgx_movie": "TGx Movies", "tgx_series": "TGx Series", "contribution_movies": "Contribution Streams Movies", "contribution_series": "Contribution Streams Series", } USER_UPLOAD_SUPPORTED_MOVIE_CATALOG_IDS = [ "arabic_movies", "bangla_movies", "english_hdrip", "english_tcrip", "fighting", "hindi_dubbed", "hindi_hdrip", "hindi_old", "hindi_tcrip", "kannada_dubbed", "kannada_hdrip", "kannada_old", "kannada_tcrip", "malayalam_dubbed", "malayalam_hdrip", "malayalam_old", "malayalam_tcrip", "other_sports", "punjabi_movies", "tamil_dubbed", "tamil_hdrip", "tamil_old", "tamil_tcrip", "telugu_dubbed", "telugu_hdrip", "telugu_old", "telugu_tcrip", ] USER_UPLOAD_SUPPORTED_SERIES_CATALOG_IDS = [ "arabic_series", "bangla_series", "english_series", "hindi_series", "kannada_series", "malayalam_series", "punjabi_series", "tamil_series", "telugu_series", ] USER_UPLOAD_SUPPORTED_SPORTS_CATALOG_IDS = [ "american_football", "baseball", "basketball", "football", "formula_racing", "hockey", "motogp_racing", "rugby", "other_sports", "fighting", ] RESOLUTIONS = [ "4k", "2160p", "1440p", "1080p", "720p", "576p", "480p", "360p", "240p", None, ] RESOLUTION_RANKING = {res: rank for rank, res in enumerate(reversed(RESOLUTIONS))} SUPPORTED_RESOLUTIONS = set(RESOLUTIONS) DEBRID_SERVER_TIMEOUT = 15 CORS_HEADERS = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "*", "Access-Control-Allow-Methods": "*", } CACHE_HEADERS = { "Cache-Control": "max-age=3600, stale-while-revalidate=3600, stale-if-error=3600, public", } NO_CACHE_HEADERS = { "Cache-Control": "no-store, no-cache, must-revalidate, max-age=0", "Pragma": "no-cache", "Expires": "0", } TORRENT_SORTING_PRIORITY = [ "language", "cached", "resolution", "quality", "size", "seeders", "created_at", ] TORRENT_SORTING_PRIORITY_OPTIONS = TORRENT_SORTING_PRIORITY STREAMING_SERVICE_REQUIREMENTS = { "pikpak": ["email", "password"], "qbittorrent": ["qbittorrent_config"], "stremthru": ["url", "token"], "default": ["token"], } DELETE_ALL_WATCHLIST_META = { "_id": "dl{}", "title": "๐Ÿ—‘๏ธ๐Ÿ’ฉ Delete all files", "type": "movie", "description": "๐Ÿšจ๐Ÿ’€โš  Delete all files in streaming provider", } UA_HEADER = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" } IPTV_VALID_CONTENT_TYPES = [ "application/vnd.apple.mpegurl", "application/x-mpegurl", "video/mp2t", "application/octet-stream", "application/dash+xml", ] SCRAPY_SPIDERS = { "formula_tgx": "Formula TGX", "nowmetv": "NowMeTV", "nowsports": "NowSports", "tamilultra": "Tamil Ultra", "sport_video": "Sport Video", "tamil_blasters": "TamilBlasters", "tamilmv": "TamilMV", "dlhd": "DaddyLiveHD", "motogp_tgx": "MotoGP TGX", "arab_torrents": "Arab Torrents", "wwe_tgx": "WWE TGX", "ufc_tgx": "UFC TGX", "movies_tv_tgx": "Movies TV TGX", } STREAMING_PROVIDERS_SHORT_NAMES = { "alldebrid": "AD", "debridlink": "DL", "offcloud": "OC", "pikpak": "PKP", "premiumize": "PM", "qbittorrent": "QB-WD", "realdebrid": "RD", "seedr": "SDR", "torbox": "TRB", "stremthru": "ST", "easydebrid": "ED", } CERTIFICATION_MAPPING = { "All Ages": [ "A.G.", "A/fig", "A/i", "A/i/fig", "AA", "Ai", "AL", "AL/Tous", "ALL", "Alla", "ATP", "Approved", "Btl", "E", "FAM", "G", "General", "Genel ฤฐzleyici", "Genel ฤฐzleyici Kitlesi", "KT", "L", "Libre", "Livre", "Pรบblicos", "Semua", "SU", "T", "TE", "Tous", "Tous Publics", "TP", "U", "UR", "ZA", "0", "0+", "3", "4+", "5" ], "Children": [ "6", "6+", "6A", "7", "7+", "7-9 PG", "7i", "8", "8+", "9", "9+", "AP", "Children", "DA", "I", "K", "KN", "LH", "M/4", "M/6", "PG", "PG8", "TV-G", "TV-Y", "TV-Y7", "TV-Y7-FV", "P" ], "Parental Guidance": [ "10", "10+", "10-12 PG", "10A", "11", "12", "12+", "12A", "12PG", "12i", "B", "BA", "GY", "M/12", "N-7", "P13", "PG-12", "PG12", "Public Averti", "TV-PG", "VM12" ], "Teens": [ "13", "13+", "14", "14+", "14A", "15", "15+", "15A", "15PG", "16", "16+", "B15", "C", "GA", "I.C.-14", "IIA", "IIB", "M", "M/16", "MA", "MA 15+", "N-13", "N-16", "NC16", "PG-13", "PG-15", "R", "R-12", "R-13", "R-15+", "R-16", "RP13", "RP16", "SAM 13", "SAM 16", "TV-14", "VM14", "VM16", "Y" ], "Adults": [ "18", "18+", "18A", "18PA", "18PL", "18SG", "18SX", "18TC", "A", "Caution", "D", "I.M.-18", "III", "M/18", "M18", "N-18", "NC-17", "R(A)", "R-18", "R18", "RP18", "SAM 18", "TV-MA", "VM18", "Z", "Unrated" ], "Adults+": [ "20", "20+", "21", "21+", "Banned", "KK", "R21", "R21+", "R-21", "R-21+", "R-21A", "RC", "X", "X18", "X 18+", "XX", "XXX" ], } LANGUAGES_FILTERS = [ "English", "Tamil", "Hindi", "Malayalam", "Kannada", "Telugu", "Chinese", "Russian", "Arabic", "Japanese", "Korean", "Taiwanese", "Latino", "French", "Spanish", "Portuguese", "Italian", "German", "Ukrainian", "Polish", "Czech", "Thai", "Indonesian", "Vietnamese", "Dutch", "Bengali", "Turkish", "Greek", "Swedish", "Romanian", "Hungarian", "Finnish", "Norwegian", "Danish", "Hebrew", "Lithuanian", "Punjabi", "Marathi", "Gujarati", "Bhojpuri", "Nepali", "Urdu", "Tagalog", "Filipino", "Malay", "Mongolian", "Armenian", "Georgian", None, ] SUPPORTED_LANGUAGES = set(LANGUAGES_FILTERS) QUALITY_GROUPS = { "BluRay/UHD": ["BluRay", "BluRay REMUX", "BRRip", "BDRip", "UHDRip"], "WEB/HD": ["WEB-DL", "WEB-DLRip", "WEBRip", "HDRip"], "DVD/TV/SAT": ["DVD", "DVDRip", "HDTV", "SATRip", "TVRip", "PPVRip"], "CAM/Screener": ["CAM", "TeleSync", "TeleCine", "SCR"], "Unknown": [None], } SUPPORTED_QUALITIES = { quality for qualities in QUALITY_GROUPS.values() for quality in qualities } QUALITY_RANKING = { quality: rank for rank, qualities in enumerate(reversed(QUALITY_GROUPS.values())) for quality in qualities } SUPPORTED_PRIVATE_TRACKER_STREAMING_PROVIDERS = { "debridlink", "qbittorrent", "torbox", } LANGUAGE_COUNTRY_FLAGS = { "English": "๐Ÿ‡ฌ๐Ÿ‡ง", "Tamil": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Hindi": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Malayalam": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Kannada": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Telugu": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Chinese": "๐Ÿ‡จ๐Ÿ‡ณ", "Russian": "๐Ÿ‡ท๐Ÿ‡บ", "Arabic": "๐Ÿ‡ธ๐Ÿ‡ฆ", "Japanese": "๐Ÿ‡ฏ๐Ÿ‡ต", "Korean": "๐Ÿ‡ฐ๐Ÿ‡ท", "Taiwanese": "๐Ÿ‡น๐Ÿ‡ผ", "Latino": "๐Ÿ‡ฒ๐Ÿ‡ฝ", "French": "๐Ÿ‡ซ๐Ÿ‡ท", "Spanish": "๐Ÿ‡ช๐Ÿ‡ธ", "Portuguese": "๐Ÿ‡ต๐Ÿ‡น", "Italian": "๐Ÿ‡ฎ๐Ÿ‡น", "German": "๐Ÿ‡ฉ๐Ÿ‡ช", "Ukrainian": "๐Ÿ‡บ๐Ÿ‡ฆ", "Polish": "๐Ÿ‡ต๐Ÿ‡ฑ", "Czech": "๐Ÿ‡จ๐Ÿ‡ฟ", "Thai": "๐Ÿ‡น๐Ÿ‡ญ", "Indonesian": "๐Ÿ‡ฎ๐Ÿ‡ฉ", "Vietnamese": "๐Ÿ‡ป๐Ÿ‡ณ", "Dutch": "๐Ÿ‡ณ๐Ÿ‡ฑ", "Bengali": "๐Ÿ‡ง๐Ÿ‡ฉ", "Turkish": "๐Ÿ‡น๐Ÿ‡ท", "Greek": "๐Ÿ‡ฌ๐Ÿ‡ท", "Swedish": "๐Ÿ‡ธ๐Ÿ‡ช", "Romanian": "๐Ÿ‡ท๐Ÿ‡ด", "Hungarian": "๐Ÿ‡ญ๐Ÿ‡บ", "Finnish": "๐Ÿ‡ซ๐Ÿ‡ฎ", "Norwegian": "๐Ÿ‡ณ๐Ÿ‡ด", "Danish": "๐Ÿ‡ฉ๐Ÿ‡ฐ", "Hebrew": "๐Ÿ‡ฎ๐Ÿ‡ฑ", "Lithuanian": "๐Ÿ‡ฑ๐Ÿ‡น", "Punjabi": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Marathi": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Gujarati": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Bhojpuri": "๐Ÿ‡ฎ๐Ÿ‡ณ", "Nepali": "๐Ÿ‡ณ๐Ÿ‡ต", "Urdu": "๐Ÿ‡ต๐Ÿ‡ฐ", "Tagalog": "๐Ÿ‡ต๐Ÿ‡ญ", "Filipino": "๐Ÿ‡ต๐Ÿ‡ญ", "Malay": "๐Ÿ‡ฒ๐Ÿ‡พ", "Mongolian": "๐Ÿ‡ฒ๐Ÿ‡ณ", "Armenian": "๐Ÿ‡ฆ๐Ÿ‡ฒ", "Georgian": "๐Ÿ‡ฌ๐Ÿ‡ช", } CONTENT_TYPE_HEADERS_MAPPING = { ".mp4": "video/mp4", ".mkv": "video/x-matroska", ".avi": "video/x-msvideo", ".webm": "video/webm", ".mov": "video/quicktime", ".wmv": "video/x-ms-wmv", ".flv": "video/x-flv", ".m4v": "video/x-m4v", ".3gp": "video/3gpp", ".3g2": "video/3gpp2", ".mpg": "video/mpeg", ".mpeg": "video/mpeg", ".ts": "video/mp2t", ".m2ts": "video/mp2t", ".mts": "video/mp2t", ".vob": "video/x-ms-vob", ".ogv": "video/ogg", ".divx": "video/divx", ".m3u8": "application/x-mpegURL", ".mpd": "application/dash+xml", ".f4v": "video/x-f4v", ".rmvb": "application/vnd.rn-realmedia-vbr", ".asf": "video/x-ms-asf", }