from sync.sync_statistics import SyncStatistics
from sync.sync_task import SyncTask
from sync.pull import Pull
from sync.push import Push
from sync.synchronize import Synchronize

from datetime import datetime
from plex import Plex
from plex_activity import Activity
import gc
import threading
import traceback
import time
import uuid

L, LF = localization('sync.manager')
log = Logger('sync.manager')

HANDLERS = [Pull, Push, Synchronize]

# Maps interval option labels to their minute values (argh..)
INTERVAL_MAP = {
    'Disabled':   None,
    '15 Minutes': 15,
    '30 Minutes': 30,
    'Hour':       60,
    '3 Hours':    180,
    '6 Hours':    360,
    '12 Hours':   720,
    'Day':        1440,
    'Week':       10080,
from core.helpers import timestamp, pad_title, plural, get_filter, normalize
from core.localization import localization
from core.logger import Logger
from sync.sync_manager import SyncManager
from plugin.core.constants import PLUGIN_PREFIX

from ago import human
from datetime import datetime
from plex import Plex

L, LF = localization('interface.sync_menu')

log = Logger('interface.sync_menu')


# NOTE: pad_title(...) is used as a "hack" to force the UI to use 'media-details-list'

@route(PLUGIN_PREFIX + '/sync')
def SyncMenu(refresh=None):
    oc = ObjectContainer(title2=L('sync_menu:title'), no_history=True, no_cache=True)
    all_keys = []

    create_active_item(oc)

    oc.add(DirectoryObject(
        key=Callback(Synchronize),
        title=pad_title('Synchronize'),
        summary=get_task_status('synchronize'),
        thumb=R("icon-sync.png")
    ))
Example #3
0
from core.localization import localization
from core.logger import Logger

from plugin.core.constants import PLUGIN_PREFIX
from plugin.core.filters import Filters
from plugin.core.helpers.variable import normalize
from plugin.managers.account import AccountManager
from plugin.models import Account, SyncResult
from plugin.sync import SyncData, SyncMode
from plugin.sync.main import Sync, QueueError

from ago import human
from datetime import datetime
from plex import Plex

L, LF = localization('interface.m_sync')

log = Logger('interface.m_sync')


# NOTE: pad_title(...) is used to force the UI to use 'media-details-list'

@route(PLUGIN_PREFIX + '/sync/accounts')
def AccountsMenu(refresh=None):
    oc = ObjectContainer(
        title2=L('accounts:title'),
        no_cache=True
    )

    # Active sync status
    Active.create(