diff --git a/votify/spotify_api.py b/votify/spotify_api.py index 265eddd..bc229bf 100644 --- a/votify/spotify_api.py +++ b/votify/spotify_api.py @@ -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",