mirror of
https://github.com/janLo/wallabag-kindle-consumer
synced 2026-06-19 19:08:00 +00:00
Add config and fix sesson handling.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
class Config:
|
||||
|
||||
def __init__(self, db_uri, refresh_grace=120, consume_interval=30):
|
||||
self.db_uri = db_uri
|
||||
self.refresh_grace = refresh_grace
|
||||
self.consume_interval = consume_interval
|
||||
@@ -4,16 +4,16 @@ import asyncio
|
||||
from logbook import Logger
|
||||
from sqlalchemy.orm import joinedload
|
||||
|
||||
from wallabag_kindle_consumer.models import User, Job
|
||||
from wallabag_kindle_consumer.models import User, Job, session_maker
|
||||
|
||||
logger = Logger(__name__)
|
||||
|
||||
|
||||
class Consumer:
|
||||
def __init__(self, wallabag, session, sender, interval=30):
|
||||
def __init__(self, wallabag, cfg, sender):
|
||||
self.wallabag = wallabag
|
||||
self.session = session
|
||||
self.interval = interval
|
||||
self.session = session_maker(cfg.db_uri)()
|
||||
self.interval = cfg.consume_interval
|
||||
self.sender = sender
|
||||
self.running = True
|
||||
|
||||
|
||||
@@ -33,11 +33,11 @@ class Job(Base):
|
||||
format = Column(Enum('pdf', 'mobi'))
|
||||
|
||||
|
||||
def make_session(uri):
|
||||
def session_maker(uri):
|
||||
Session = sessionmaker(autocommit=False,
|
||||
autoflush=False,
|
||||
bind=create_engine(uri))
|
||||
return scoped_session(Session)
|
||||
return Session
|
||||
|
||||
|
||||
def re_create_db(uri):
|
||||
|
||||
@@ -3,17 +3,16 @@ from datetime import datetime, timedelta
|
||||
|
||||
from logbook import Logger
|
||||
from sqlalchemy import func
|
||||
|
||||
from wallabag_kindle_consumer.models import User
|
||||
from .models import User, session_maker
|
||||
|
||||
logger = Logger(__name__)
|
||||
|
||||
|
||||
class Refresher:
|
||||
def __init__(self, session, wallabag):
|
||||
self.session = session
|
||||
def __init__(self, config, wallabag):
|
||||
self.session = session_maker(config.db_uri)()
|
||||
self.wallabag = wallabag
|
||||
self.grace = 120
|
||||
self.grace = config.refresh_grace
|
||||
|
||||
def _wait_time(self):
|
||||
next = self.session.query(func.min(User.token_valid).label("min")).first()
|
||||
@@ -36,6 +35,7 @@ class Refresher:
|
||||
await asyncio.gather(*refreshes)
|
||||
|
||||
self.session.commit()
|
||||
self.session.remove()
|
||||
|
||||
async def _refresh_user(self, user):
|
||||
logger.info("Refresh token for {}", user.name)
|
||||
|
||||
@@ -53,6 +53,7 @@ class Wallabag:
|
||||
user.auth_token = data["access_token"]
|
||||
user.refresh_token = data["refresh_token"]
|
||||
user.token_valid = datetime.utcnow() + timedelta(seconds=data["expires_in"])
|
||||
logger.info("Got new token for {}", user.name)
|
||||
|
||||
return True
|
||||
|
||||
@@ -86,6 +87,9 @@ class Wallabag:
|
||||
return self.url + url
|
||||
|
||||
async def fetch_entries(self, user):
|
||||
if user.auth_token is None:
|
||||
logger.warn("No auth token for {}".format(user.name))
|
||||
return
|
||||
async with aiohttp.ClientSession() as session:
|
||||
for tag in self.tags:
|
||||
params = self._api_params(user, {"tags": tag.tag})
|
||||
|
||||
Reference in New Issue
Block a user