opml feeds to sync with miniflux

This commit is contained in:
Peter Molnar 2018-11-16 22:40:19 +00:00
parent 5ab297d6fa
commit ae55585f4a
2 changed files with 48 additions and 0 deletions

View file

@ -5,11 +5,14 @@ import re
import logging
import shutil
import subprocess
import json
import lxml.etree as etree
from slugify import slugify
import requests
from requests.auth import HTTPBasicAuth
import arrow
import settings
import keys
from pprint import pprint
TMPFEXT = '.xyz'
@ -41,6 +44,50 @@ class cached_property(object):
class Follows(object):
def __init__(self):
self.feeds = {}
self.auth = HTTPBasicAuth(
keys.miniflux.get('username'),
keys.miniflux.get('token')
)
@cached_property
def active_subscriptions(self):
feeds = []
params = {
'jsonrpc': '2.0',
'method': 'getFeeds',
'id': keys.miniflux.get('id')
}
r = requests.post(
keys.miniflux.get('url'),
data=json.dumps(params),
auth=self.auth,
)
for feed in r.json().get('result', []):
try:
feeds.append(feed['feed_url'])
except Exception as e:
logging.error('problem with feed entry: %s', feed)
return feeds
def syncminiflux(self):
for silo, feeds in self.feeds.items():
for f in feeds:
feed = f.get('xmlUrl')
if feed not in self.active_subscriptions:
params = {
'jsonrpc': '2.0',
'method': 'createFeed',
'id': keys.miniflux.get('id'),
'params': {
'url': feed,
'group_name': silo
}
}
r = requests.post(
keys.miniflux.get('url'),
data=json.dumps(params),
auth=self.auth,
)
def append(self, silo, feeds):
self.feeds.update({silo: feeds})

1
run.py
View file

@ -21,4 +21,5 @@ for silo in silos:
silo.run()
opml.append(silo.silo, silo.feeds)
opml.syncminiflux()
opml.export()