diff --git a/CR/config.yaml b/CR/config.yaml index ee5018b..1ad7644 100644 --- a/CR/config.yaml +++ b/CR/config.yaml @@ -1,7 +1,7 @@ # Crunchyroll API Configuration client: - id: "o7uowy7q4lgltbavyhjq" - secret: "lqrjETNx6W7uRnpcDm8wRVj8BChjC1er" + id: "y2arvjb0h0rgvtizlovy" + secret: "JVLvwdIpXvxU-qIBvT1M8oQTr1qlQJX2" # API Endpoints endpoints: @@ -28,7 +28,7 @@ endpoints: # Headers for Android TV client headers: - user-agent: "Crunchyroll/ANDROIDTV/3.58.0_22336 (Android 11; en-US; SHIELD Android TV)" + user-agent: "Crunchyroll/ANDROIDTV/3.59.0_22338 (Android 12; en-US; SM-G9980)" accept: "application/json" accept-charset: "UTF-8" accept-encoding: "gzip" @@ -43,5 +43,5 @@ params: # Device parameters for authentication device: type: "ANDROIDTV" - name: "SHIELD Android TV" + name: "p3q" model: "SHIELD Android TV" diff --git a/FLX/__init__.py b/FLX/__init__.py index 946538b..431ea54 100644 --- a/FLX/__init__.py +++ b/FLX/__init__.py @@ -23,10 +23,12 @@ class FLX(Service): \b Original-Author: [SeFree] - Version: 1.1.0 - Authorization: Credentials + Cookies + Version: 1.0.0 + Authorization: Cookies (No login require) + Credential (No need but can be provide) Security: FHD@L3 \b + Notes: + - Dont care about account or vip. can bypass all content """ TITLE_RE = r"^(?:https?://(?:www\.)?flixerapp\.com/video/)?(?P\d+)" @@ -49,9 +51,6 @@ class FLX(Service): help="BiliBili not provide Season in info, so specify it manually.") @click.option("-m", "--movie", is_flag=True, default=False, help="Download series as movie if listed as a series.)") - @click.option("-d", "--device_type", default='android', required=False, type=str, - help="Device type to use for API requests. Default is 'android'.") - @click.option("-c", "--cdn", default=None, required=False, type=str, help="Overwrite CDN settings. Default is 'vps1'.") @click.pass_context @@ -66,7 +65,7 @@ class FLX(Service): series_id = match.group("id") return series_id - def __init__(self, ctx, title, original_lang, season,movie,device_type,cdn): + def __init__(self, ctx, title, original_lang, season,movie,cdn): super().__init__(ctx) self.title=self.parse_series_id(title) @@ -74,7 +73,6 @@ class FLX(Service): self.season = season self.is_movie=movie - self.device_type = device_type self.cdn=cdn # def get_session(self): @@ -85,32 +83,19 @@ class FLX(Service): def authenticate(self, cookies=None, credential=None) -> None: """Authenticate using username and password credentials, with refresh token support.""" super().authenticate(cookies, credential) - - if self.device_type == "android": - + if credential: data = f'screen-density=xhdpi&password={credential.password}&email={credential.username}' # self.session.headers.update(self.config['headers']) response = self.session.post(self.config['endpoints']['login'], headers=self.config['headers_android'], data=data) - - elif self.device_type == "web": - - - files = { - 'email': (None, credential.username), - 'password': (None, credential.password), - 'devicie_id': (None, 'web'), - 'screen_density': (None, 'xxhdpi'), - 'mac_address': (None, ''), - } - - response=self.session.post(self.config['endpoints']['login'], files=files) - - if response.status_code == 200 and response.json()['error_code'] == 110: - self.log.info("Login successful") + + if response.status_code == 200 and response.json()['error_code'] == 110: + self.log.info("Login successful") + else: + self.log.error("Login failed. Please check credential") + exit(1) else: - self.log.error("Login failed. Please check credential") - exit(1) + self.log.warning("Credential not found") def get_titles(self) -> Titles_T: response=self.session.get(self.config['endpoints']['info'].format(id=self.title)).json()