youtube2freshrss/youtube2freshrss.py

52 lines
1.5 KiB
Python

"""Transfer YouTube subscriptions to FreshRSS."""
from youtube import YouTube
from freshrss import FreshRss
from helpers import read_config_file, determine_additions, determine_deletions
def main():
"""Entry point."""
config = read_config_file()
youtube = YouTube(
config['youtube_api_key'],
config['youtube_channel_id'],
config['rss_bridge_url']
)
subscriptions = youtube.get_subscriptions()
sub_urls, parsed_subs = youtube.parse_subscriptions(subscriptions)
print(f"Found {len(subscriptions)} subscriptions on YouTube.")
freshrss = FreshRss(
config['freshrss_url'],
config['freshrss_username'],
config['freshrss_api_password'],
)
freshrss.get_auth_token()
feeds = freshrss.get_feeds()
active_feeds = freshrss.parse_feeds_urls(feeds)
print(f"Found {len(active_feeds)} YouTube feeds on FreshRSS.")
additions = determine_additions(parsed_subs, active_feeds)
print(f"{len(additions)} feeds will be added to FreshRSS.")
deletions = determine_deletions(active_feeds, sub_urls)
print(f"{len(deletions)} feeds will be deleted from FreshRSS.")
for addition in additions:
freshrss.add_feed(addition['title'], addition['url'])
if len(additions) > 0:
print("Added missing feeds to FreshRSS.")
for deletion in deletions:
freshrss.remove_feed(deletion)
if len(deletions) > 0:
print("Removed missing YouTube subscriptions from FreshRSS.")
if __name__ == "__main__":
main()