"""Google Reader/FreshRSS API code for Youtube2FreshRSS.""" import requests class FreshRss: """FreshRSS greader API helper class.""" base_path = "/api/greader.php" base_api_path = f"{base_path}/reader/api/0/" def __init__(self, baseurl, username, password): self.base_url = baseurl self.username = username self.password = password self.auth_header = "" def get_auth_token(self): "Retrieve greader auth token" res = requests.post( f"{self.base_url}{self.base_path}/accounts/ClientLogin", params={'Email': self.username, 'Passwd': self.password}, timeout=15 ) auth_token = res.text.split("=")[-1].strip() self.auth_header = f"GoogleLogin auth={auth_token}" def post(self, path, params=None, data=None): "Make a POST request to a greader API." res = requests.post( f"{self.base_url}{self.base_api_path}{path}", data=data, params=params, headers={"Authorization": self.auth_header}, timeout=15 ) return res.text def get(self, path, params=None): """Make a GET request to a greader API.""" res = requests.get( f"{self.base_url}{self.base_api_path}{path}?output=json", params=params, headers={"Authorization": self.auth_header}, timeout=15 ) return res.json() def get_feeds(self): "Retrieve greader subscriptions." return self.get("/subscription/list") def add_feed(self, title, feed_url): """Create greader feed.""" self.post( "/subscription/edit", data={ "ac": "subscribe", "s": "feed/" + feed_url, "t": title, "a": "user/-/label/YouTube" } ) def remove_feed(self, feed_url): """Remove greader feed.""" self.post( "/subscription/edit", data={ "ac": "unsubscribe", "s": "feed/" + feed_url, } ) def parse_feeds_urls(self, feeds): """Parse active feed URLs from feeds list.""" urls = [] for feed in feeds['subscriptions']: if feed['categories'][0]['id'] == "user/-/label/YouTube": urls.append(feed['url']) return urls