create constructors from_file and from_browser

This commit is contained in:
Rafael Moraes
2024-10-20 19:12:11 -03:00
parent de72f46912
commit b2d40b5b7a
+17 -7
View File
@@ -5,11 +5,12 @@ import json
import re
import time
import typing
from http.cookiejar import MozillaCookieJar
from http.cookiejar import CookieJar, MozillaCookieJar
from pathlib import Path
import base62
import requests
import rookiepy
from .utils import check_response
@@ -38,17 +39,26 @@ class SpotifyApi:
def __init__(
self,
cookies_path: Path | None = Path("./cookies.txt"),
cookies: CookieJar = None,
):
self.cookies_path = cookies_path
self.cookies = cookies
self._set_session()
@classmethod
def from_file(cls, cookies_path: Path):
cookies = MozillaCookieJar(cookies_path)
cookies.load(ignore_discard=True, ignore_expires=True)
return cls(cookies)
@classmethod
def from_browser(cls, browser: str):
cookies: rookiepy.CookieList = getattr(rookiepy, browser)(["spotify.com"])
return cls(rookiepy.to_cookiejar(cookies))
def _set_session(self):
self.session = requests.Session()
if self.cookies_path:
cookies = MozillaCookieJar(self.cookies_path)
cookies.load(ignore_discard=True, ignore_expires=True)
self.session.cookies.update(cookies)
if self.cookies is not None:
self.session.cookies.update(self.cookies)
self.session.headers.update(
{
"accept": "application/json",