def test_not_equivalent(self): l = Localization("es_ES") self.assertFalse(l.equivalent(language="eng")) self.assertFalse(l.equivalent(language="en")) self.assertFalse(l.equivalent(language="en", country="US")) self.assertFalse(l.equivalent(language="en", country="United States")) self.assertFalse(l.equivalent(language="en", country="ES")) self.assertFalse(l.equivalent(language="en", country="Spain"))
def localization(self): return Localization(self.get_option("locale"))
def test_get_language(self): self.assertEqual("eng", Localization.get_language("en").alpha3) self.assertEqual("fre", Localization.get_language("fra").bibliographic) self.assertEqual("fra", Localization.get_language("fre").alpha3) self.assertEqual("gre", Localization.get_language("gre").bibliographic)
def test_get_country(self): self.assertEqual("US", Localization.get_country("USA").alpha2) self.assertEqual("GB", Localization.get_country("GB").alpha2) self.assertEqual("United States", Localization.get_country("United States").name)
def test_default(self, getdefaultlocale): getdefaultlocale.return_value = (None, None) l = Localization() self.assertEqual("en_US", l.language_code) self.assertTrue(l.equivalent(language="en", country="US"))
def test_equivalent_remap(self): l = Localization("fr_FR") self.assertTrue(l.equivalent(language="fra")) self.assertTrue(l.equivalent(language="fre"))
def test_equivalent(self): l = Localization("en_US") self.assertTrue(l.equivalent(language="eng")) self.assertTrue(l.equivalent(language="en")) self.assertTrue(l.equivalent(language="en", country="US")) self.assertTrue(l.equivalent(language="en", country="United States"))
def test_language_code(self): l = Localization("en_US") self.assertEqual("en_US", l.language_code)
def _get_streams(self): self.session.http.headers = {"User-Agent": useragents.CHROME} res = self.session.http.get(self.url) # remap en to english, and ja to japanese rlanguage = { "en": "english", "ja": "japanese" }.get( self.get_option("language").lower(), self.get_option("language").lower()) if "_Incapsula_Resource" in res.text: log.error("This page is protected by Incapsula, please see " "https://github.com/streamlink/streamlink/issues/2088" " for a workaround.") return if "Out of Territory" in res.text: log.error( "The content requested is not available in your territory.") return id_m = self.experience_id_re.search(res.text) experience_id = id_m and int(id_m.group(1)) if experience_id: log.debug("Found experience ID: {0}", experience_id) exp = Experience(self.session, experience_id) if self.get_option("email") and self.get_option("password"): if exp.login(self.get_option("email"), self.get_option("password")): log.info("Logged in to Funimation as {0}", self.get_option("email")) else: log.warning("Failed to login") if exp.episode_info: log.debug("Found episode: {0}", exp.episode_info["episodeTitle"]) log.debug(" has languages: {0}", ", ".join(exp.episode_info["languages"].keys())) log.debug(" requested language: {0}", rlanguage) log.debug(" current language: {0}", exp.language) if rlanguage != exp.language: log.debug("switching language to: {0}", rlanguage) exp.set_language(rlanguage) if exp.language != rlanguage: log.warning( "Requested language {0} is not available, continuing with {1}", rlanguage, exp.language) else: log.debug("New experience ID: {0}", exp.experience_id) subtitles = None stream_metadata = {} disposition = {} for subtitle in exp.subtitles(): log.debug("Subtitles: {0}", subtitle["src"]) if subtitle["src"].endswith( ".vtt") or subtitle["src"].endswith(".srt"): sub_lang = Localization.get_language( subtitle["language"]).alpha3 # pick the first suitable subtitle stream subtitles = subtitles or HTTPStream( self.session, subtitle["src"]) stream_metadata["s:s:0"] = [ "language={0}".format(sub_lang) ] stream_metadata["s:a:0"] = [ "language={0}".format(exp.language_code) ] sources = exp.sources() if 'errors' in sources: for error in sources['errors']: log.error("{0} : {1}".format(error['title'], error['detail'])) return for item in sources["items"]: url = item["src"] if ".m3u8" in url: for q, s in HLSStream.parse_variant_playlist( self.session, url).items(): if self.get_option("mux_subtitles") and subtitles: yield q, MuxedStream(self.session, s, subtitles, metadata=stream_metadata, disposition=disposition) else: yield q, s elif ".mp4" in url: # TODO: fix quality s = HTTPStream(self.session, url) if self.get_option("mux_subtitles") and subtitles: yield self.mp4_quality, MuxedStream( self.session, s, subtitles, metadata=stream_metadata, disposition=disposition) else: yield self.mp4_quality, s else: log.error("Could not find experience ID?!")
def test_get_language(self): self.assertEqual("eng", Localization.get_language("en").part2b) self.assertEqual("fre", Localization.get_language("fra").part2b) self.assertEqual("fre", Localization.get_language("fre").part2b) self.assertEqual("gre", Localization.get_language("gre").part2b)