youtube2freshrss/freshrss.py

83 lines
2.4 KiB
Python

"""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