52 lines
1.5 KiB
Python
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()
|