Пример #1
0
 def get_authorization(self):
     code_verifier = secrets.token_urlsafe(100)[:128]
     url = f"{self.urls['oauth_authorize']}?response_type=code&client_id={self.client_id}&code_challenge={code_verifier}"
     logger.info("")
     logger.info(f"Navigate to: {url}")
     logger.info("")
     logger.info("Login and click the Allow option. You will then be redirected to a localhost")
     logger.info("url that most likely won't load, which is fine. Copy the URL and paste it below")
     webbrowser.open(url, new=2)
     try:                                url = util.logger_input("URL").strip()
     except TimeoutExpired:              raise Failed("Input Timeout: URL required.")
     if not url:                         raise Failed("MyAnimeList Error: No input MyAnimeList code required.")
     match = re.search("code=([^&]+)", str(url))
     if not match:
         raise Failed("MyAnimeList Error: Invalid URL")
     code = match.group(1)
     data = {
         "client_id": self.client_id,
         "client_secret": self.client_secret,
         "code": code,
         "code_verifier": code_verifier,
         "grant_type": "authorization_code"
     }
     new_authorization = self.oauth_request(data)
     if "error" in new_authorization:
         raise Failed("MyAnimeList Error: Invalid code")
     if not self.save_authorization(new_authorization):
         raise Failed("MyAnimeList Error: New Authorization Failed")
Пример #2
0
 def _authorization(self):
     url = f"https://trakt.tv/oauth/authorize?response_type=code&client_id={self.client_id}&redirect_uri={redirect_uri_encoded}"
     logger.info(f"Navigate to: {url}")
     logger.info(
         "If you get an OAuth error your client_id or client_secret is invalid"
     )
     webbrowser.open(url, new=2)
     try:
         pin = util.logger_input("Trakt pin (case insensitive)",
                                 timeout=300).strip()
     except TimeoutExpired:
         raise Failed("Input Timeout: Trakt pin required.")
     if not pin: raise Failed("Trakt Error: No input Trakt pin required.")
     json = {
         "code": pin,
         "client_id": self.client_id,
         "client_secret": self.client_secret,
         "redirect_uri": redirect_uri,
         "grant_type": "authorization_code"
     }
     response = self.config.post(
         f"{base_url}/oauth/token",
         json=json,
         headers={"Content-Type": "application/json"})
     if response.status_code != 200:
         raise Failed(
             "Trakt Error: Invalid trakt pin. If you're sure you typed it in correctly your client_id or client_secret may be invalid"
         )
     elif not self._save(response.json()):
         raise Failed("Trakt Error: New Authorization Failed")
Пример #3
0
 def get_authorization(self):
     url = Trakt["oauth"].authorize_url(self.redirect_uri)
     logger.info(f"Navigate to: {url}")
     logger.info("If you get an OAuth error your client_id or client_secret is invalid")
     webbrowser.open(url, new=2)
     try:                                pin = util.logger_input("Trakt pin (case insensitive)", timeout=300).strip()
     except TimeoutExpired:              raise Failed("Input Timeout: Trakt pin required.")
     if not pin:                         raise Failed("Trakt Error: No input Trakt pin required.")
     new_authorization = Trakt["oauth"].token(pin, self.redirect_uri)
     if not new_authorization:
         raise Failed("Trakt Error: Invalid trakt pin. If you're sure you typed it in correctly your client_id or client_secret may be invalid")
     if not self.save_authorization(new_authorization):
         raise Failed("Trakt Error: New Authorization Failed")