diff --git a/src/utils/externalSubtitles/febbox.ts b/src/utils/externalSubtitles/febbox.ts index 5b674382..8af96fb9 100644 --- a/src/utils/externalSubtitles/febbox.ts +++ b/src/utils/externalSubtitles/febbox.ts @@ -1,104 +1,8 @@ /* eslint-disable no-console */ +import { labelToLanguageCode } from "@p-stream/providers"; + import { CaptionListItem } from "@/stores/player/slices/source"; -// Helper function to convert language names to language codes -function labelToLanguageCode(languageName: string): string { - const languageMap: Record = { - English: "en", - Spanish: "es", - French: "fr", - German: "de", - Italian: "it", - Portuguese: "pt", - Russian: "ru", - Japanese: "ja", - Korean: "ko", - Chinese: "zh", - Arabic: "ar", - Hindi: "hi", - Turkish: "tr", - Dutch: "nl", - Polish: "pl", - Swedish: "sv", - Norwegian: "no", - Danish: "da", - Finnish: "fi", - Greek: "el", - Hebrew: "he", - Thai: "th", - Vietnamese: "vi", - Indonesian: "id", - Malay: "ms", - Filipino: "tl", - Ukrainian: "uk", - Romanian: "ro", - Czech: "cs", - Hungarian: "hu", - Bulgarian: "bg", - Croatian: "hr", - Serbian: "sr", - Slovak: "sk", - Slovenian: "sl", - Estonian: "et", - Latvian: "lv", - Lithuanian: "lt", - Icelandic: "is", - Maltese: "mt", - Georgian: "ka", - Armenian: "hy", - Azerbaijani: "az", - Kazakh: "kk", - Kyrgyz: "ky", - Uzbek: "uz", - Tajik: "tg", - Turkmen: "tk", - Mongolian: "mn", - Persian: "fa", - Urdu: "ur", - Bengali: "bn", - Tamil: "ta", - Telugu: "te", - Marathi: "mr", - Gujarati: "gu", - Kannada: "kn", - Malayalam: "ml", - Punjabi: "pa", - Sinhala: "si", - Nepali: "ne", - Burmese: "my", - Khmer: "km", - Lao: "lo", - Tibetan: "bo", - Uyghur: "ug", - Kurdish: "ku", - Pashto: "ps", - Dari: "prs", - Sindhi: "sd", - Kashmiri: "ks", - Dogri: "doi", - Konkani: "kok", - Manipuri: "mni", - Bodo: "brx", - Sanskrit: "sa", - Santhali: "sat", - Maithili: "mai", - Bhojpuri: "bho", - Awadhi: "awa", - Chhattisgarhi: "hne", - Magahi: "mag", - Rajasthani: "raj", - Malvi: "mup", - Bundeli: "bns", - Bagheli: "bfy", - Pahari: "phr", - Kumaoni: "kfy", - Garhwali: "gbm", - Kangri: "xnr", - }; - - return languageMap[languageName] || languageName.toLowerCase(); -} - export async function scrapeFebboxCaptions( imdbId: string, season?: number, @@ -145,7 +49,7 @@ export async function scrapeFebboxCaptions( }; if (subtitle.subtitle_link) { - const language = labelToLanguageCode(languageName); + const language = labelToLanguageCode(languageName) || ""; const fileExtension = subtitle.subtitle_link .split(".") .pop() diff --git a/src/utils/externalSubtitles/opensubtitles.ts b/src/utils/externalSubtitles/opensubtitles.ts index c918af5e..da40c8fa 100644 --- a/src/utils/externalSubtitles/opensubtitles.ts +++ b/src/utils/externalSubtitles/opensubtitles.ts @@ -1,104 +1,8 @@ /* eslint-disable no-console */ +import { labelToLanguageCode } from "@p-stream/providers"; + import { CaptionListItem } from "@/stores/player/slices/source"; -// Helper function to convert language names to language codes -function labelToLanguageCode(languageName: string): string { - const languageMap: Record = { - English: "en", - Spanish: "es", - French: "fr", - German: "de", - Italian: "it", - Portuguese: "pt", - Russian: "ru", - Japanese: "ja", - Korean: "ko", - Chinese: "zh", - Arabic: "ar", - Hindi: "hi", - Turkish: "tr", - Dutch: "nl", - Polish: "pl", - Swedish: "sv", - Norwegian: "no", - Danish: "da", - Finnish: "fi", - Greek: "el", - Hebrew: "he", - Thai: "th", - Vietnamese: "vi", - Indonesian: "id", - Malay: "ms", - Filipino: "tl", - Ukrainian: "uk", - Romanian: "ro", - Czech: "cs", - Hungarian: "hu", - Bulgarian: "bg", - Croatian: "hr", - Serbian: "sr", - Slovak: "sk", - Slovenian: "sl", - Estonian: "et", - Latvian: "lv", - Lithuanian: "lt", - Icelandic: "is", - Maltese: "mt", - Georgian: "ka", - Armenian: "hy", - Azerbaijani: "az", - Kazakh: "kk", - Kyrgyz: "ky", - Uzbek: "uz", - Tajik: "tg", - Turkmen: "tk", - Mongolian: "mn", - Persian: "fa", - Urdu: "ur", - Bengali: "bn", - Tamil: "ta", - Telugu: "te", - Marathi: "mr", - Gujarati: "gu", - Kannada: "kn", - Malayalam: "ml", - Punjabi: "pa", - Sinhala: "si", - Nepali: "ne", - Burmese: "my", - Khmer: "km", - Lao: "lo", - Tibetan: "bo", - Uyghur: "ug", - Kurdish: "ku", - Pashto: "ps", - Dari: "prs", - Sindhi: "sd", - Kashmiri: "ks", - Dogri: "doi", - Konkani: "kok", - Manipuri: "mni", - Bodo: "brx", - Sanskrit: "sa", - Santhali: "sat", - Maithili: "mai", - Bhojpuri: "bho", - Awadhi: "awa", - Chhattisgarhi: "hne", - Magahi: "mag", - Rajasthani: "raj", - Malvi: "mup", - Bundeli: "bns", - Bagheli: "bfy", - Pahari: "phr", - Kumaoni: "kfy", - Garhwali: "gbm", - Kangri: "xnr", - }; - - return languageMap[languageName] || languageName.toLowerCase(); -} - export async function scrapeOpenSubtitlesCaptions( imdbId: string, season?: number, @@ -127,7 +31,7 @@ export async function scrapeOpenSubtitlesCaptions( "download/", "download/subencoding-utf8/", ); - const language = labelToLanguageCode(caption.LanguageName); + const language = labelToLanguageCode(caption.LanguageName) || ""; if (!downloadUrl || !language) continue; diff --git a/src/utils/externalSubtitles/vdrk.ts b/src/utils/externalSubtitles/vdrk.ts index 24363226..e35f0817 100644 --- a/src/utils/externalSubtitles/vdrk.ts +++ b/src/utils/externalSubtitles/vdrk.ts @@ -1,104 +1,8 @@ /* eslint-disable no-console */ +import { labelToLanguageCode } from "@p-stream/providers"; + import { CaptionListItem } from "@/stores/player/slices/source"; -// Helper function to convert language names to language codes -function labelToLanguageCode(languageName: string): string { - const languageMap: Record = { - English: "en", - Spanish: "es", - French: "fr", - German: "de", - Italian: "it", - Portuguese: "pt", - Russian: "ru", - Japanese: "ja", - Korean: "ko", - Chinese: "zh", - Arabic: "ar", - Hindi: "hi", - Turkish: "tr", - Dutch: "nl", - Polish: "pl", - Swedish: "sv", - Norwegian: "no", - Danish: "da", - Finnish: "fi", - Greek: "el", - Hebrew: "he", - Thai: "th", - Vietnamese: "vi", - Indonesian: "id", - Malay: "ms", - Filipino: "tl", - Ukrainian: "uk", - Romanian: "ro", - Czech: "cs", - Hungarian: "hu", - Bulgarian: "bg", - Croatian: "hr", - Serbian: "sr", - Slovak: "sk", - Slovenian: "sl", - Estonian: "et", - Latvian: "lv", - Lithuanian: "lt", - Icelandic: "is", - Maltese: "mt", - Georgian: "ka", - Armenian: "hy", - Azerbaijani: "az", - Kazakh: "kk", - Kyrgyz: "ky", - Uzbek: "uz", - Tajik: "tg", - Turkmen: "tk", - Mongolian: "mn", - Persian: "fa", - Urdu: "ur", - Bengali: "bn", - Tamil: "ta", - Telugu: "te", - Marathi: "mr", - Gujarati: "gu", - Kannada: "kn", - Malayalam: "ml", - Punjabi: "pa", - Sinhala: "si", - Nepali: "ne", - Burmese: "my", - Khmer: "km", - Lao: "lo", - Tibetan: "bo", - Uyghur: "ug", - Kurdish: "ku", - Pashto: "ps", - Dari: "prs", - Sindhi: "sd", - Kashmiri: "ks", - Dogri: "doi", - Konkani: "kok", - Manipuri: "mni", - Bodo: "brx", - Sanskrit: "sa", - Santhali: "sat", - Maithili: "mai", - Bhojpuri: "bho", - Awadhi: "awa", - Chhattisgarhi: "hne", - Magahi: "mag", - Rajasthani: "raj", - Malvi: "mup", - Bundeli: "bns", - Bagheli: "bfy", - Pahari: "phr", - Kumaoni: "kfy", - Garhwali: "gbm", - Kangri: "xnr", - }; - - return languageMap[languageName] || languageName.toLowerCase(); -} - export async function scrapeVdrkCaptions( tmdbId: string | number, season?: number, @@ -144,7 +48,7 @@ export async function scrapeVdrkCaptions( .replace(/\s*Hi\d*$/, "") .replace(/\s*Hi$/, "") .replace(/\d+$/, ""); - const language = labelToLanguageCode(languageName); + const language = labelToLanguageCode(languageName) || ""; if (!language) continue; diff --git a/src/utils/externalSubtitles/wyzie.ts b/src/utils/externalSubtitles/wyzie.ts index e0f2b349..e2743a6d 100644 --- a/src/utils/externalSubtitles/wyzie.ts +++ b/src/utils/externalSubtitles/wyzie.ts @@ -31,7 +31,7 @@ export async function scrapeWyzieCaptions( const wyzieCaptions: CaptionListItem[] = wyzieSubtitles.map((subtitle) => ({ id: subtitle.id, - language: subtitle.language, + language: subtitle.language || "unknown", url: subtitle.url, type: subtitle.format === "srt" || subtitle.format === "vtt"