76 lines
1.8 KiB
Python
76 lines
1.8 KiB
Python
import settings
|
|
from sync.core import Sync
|
|
from sync.data.fs import FSProvider
|
|
from sync.data.yandexdisk import YDProvider
|
|
|
|
import asyncio
|
|
import logging
|
|
|
|
from sync.models.Page import Page, PageController
|
|
|
|
|
|
def init_logger(name: str, file: str):
|
|
logger = logging.getLogger(name)
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
# create file handler which logs even debug messages
|
|
fh = logging.FileHandler(file)
|
|
fh.setLevel(logging.DEBUG)
|
|
|
|
# create console handler with a higher log level
|
|
ch = logging.StreamHandler()
|
|
# ch.setLevel(logging.ERROR)
|
|
ch.setLevel(logging.DEBUG)
|
|
|
|
# create formatter and add it to the handlers
|
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
fh.setFormatter(formatter)
|
|
ch.setFormatter(formatter)
|
|
|
|
# add the handlers to the logger
|
|
logger.addHandler(fh)
|
|
logger.addHandler(ch)
|
|
|
|
|
|
async def run_sync(sync: Sync, **kwargs):
|
|
await sync.run(**kwargs)
|
|
|
|
|
|
async def run(run_interval=0):
|
|
provider = get_provider(settings.provider_name, settings.provider_root)
|
|
controller = PageController(provider)
|
|
|
|
sync_pages = Sync(
|
|
ctrl=controller,
|
|
name='Page'
|
|
)
|
|
sync_pages.set_options(True, True, True)
|
|
|
|
while True:
|
|
await asyncio.wait([
|
|
run_sync(sync_pages),
|
|
])
|
|
|
|
if run_interval == 0:
|
|
break
|
|
else:
|
|
await asyncio.sleep(run_interval)
|
|
|
|
|
|
def get_provider(provider_type, root):
|
|
if provider_type == 'fs':
|
|
return FSProvider(root)
|
|
elif provider_type == 'yd':
|
|
return YDProvider(root, settings.yandex_disk_access_token)
|
|
return None
|
|
|
|
|
|
if __name__ == '__main__':
|
|
init_logger(settings.name, 'hudozka.log')
|
|
|
|
interval = settings.interval
|
|
|
|
loop = asyncio.get_event_loop()
|
|
loop.run_until_complete(run(interval))
|
|
loop.close()
|