Exemple #1
0
#!/usr/bin/python
import datetime

import libs.queries as queries
import libs.mappings as mappings
import libs.stalker_video as stalker_video

from libs.logger import logger
logger = logger.getChild('ifc_media')


class IfcMedia():   
 
    def __init__(self, dbisnt):
        self.db = dbisnt



    def SyncToPlex(self):
        "syncronise the interface ifc_media table with latest data from Plex"
    
        plexMedia = self.db.queryPlex(queries.Plex.getMediaData)
        ifcPlexMedia = self.db.queryIfcDB(queries.Ifc.allPlexMediaData)
        #media_id = [0]
        #metadata_id = [1]
        #media_last_update = [2]
        #metadata_last_update = [3]
        logger.info("write new plex records")
        nRecords = 0
        for p in plexMedia:
            if not any(im[1] == p[1] for im in ifcPlexMedia): 
Exemple #2
0
from flask import Blueprint, render_template, request, Response
from pygtail import Pygtail
import os, sys, time, errno
from zipfile import ZipFile
from io import BytesIO

from libs.logger import logger, LOG_FILE
logger = logger.getChild('webapp')

from libs.nrgreader import Reader

main = Blueprint('main', __name__)

@main.route('/')
def index():
    #togeher with read_from_end parameter for Pygtail, below ensures Pygtail does not load logfile history when loading web console
    remove_pygtail_offset() 
    #time.sleep(0.5)
    logger.info("Application console open")
    return render_template('index.html')


@main.route('/log')
def progress_log():
    def generate():
        for line in Pygtail(LOG_FILE, every_n=1, read_from_end=True):
            yield "data:" + str(line) + "\n\n"
            time.sleep(0.2)
    return Response(generate(), mimetype= 'text/event-stream')

#!/usr/bin/python

from libs.db import DB
from libs.stalker_video import StalkerVideo
from libs.ifc_seasons import IfcSeasons
from libs.ifc_media import IfcMedia
from libs.stalker_seasons import StalkerSeasons
from libs.ifc_episodes import IfcEpisodes
import libs.mappings as mappings

from libs.logger import logger
logger = logger.getChild('interface')

class Interface:

    def __init__(self, app_dir, plex_dir, stalker_db_host,stalker_db_user, stalker_db_pass):        
        dbinst = DB(app_dir,  plex_dir, stalker_db_host, stalker_db_user, stalker_db_pass)
        self.db = dbinst
        self.ifcm = IfcMedia(dbinst)
        self.stvd = StalkerVideo(dbinst)
        self.ifcs = IfcSeasons(dbinst)
        self.stsn = StalkerSeasons(dbinst)
        self.ifep = IfcEpisodes(dbinst)


    def Execute(self):
        logger.info("syncronising Plex genres to Stalker")
        movies = self.stvd.SyncVideoGenres()
        logger.info("updating ifc_media table with Plex data")
        md = self.ifcm.SyncToPlex()
        logger.info("updating stalker video table")
Exemple #4
0
#!/usr/bin/python
import datetime

import libs.queries as queries
import libs.mappings as mappings
import libs.interface as ifc

from libs.logger import logger
logger = logger.getChild('stalker_video')

class StalkerVideo():
    "Opreations related to update and sync of the video table in Stalker database"

    def __init__(self, dbisnt):
        self.db = dbisnt


    def SyncVideoGenres(self):
        "add any new media genres from Plex to Stalker"

        genres = self.db.queryPlex(queries.Plex.getCategories)
        genresList = []
        for g in genres:
            categoryAlias = mappings.Common.getStalkerCategoryAlias(g[1])
            if len(g[0]) == 0:
                continue
            if '|' in g[0]:
                genresList.append((categoryAlias, g[0].split('|')[0]))
                genresList.append((categoryAlias, g[0].split('|')[1]))
            else:
                genresList.append((categoryAlias, g[0].split('|')[0]))
Exemple #5
0
# Generic imports
import json  # used when storing nrg readings into local json
from datetime import datetime  # used to capture time when meter readings are stored
import os  # used for file operations

# Establish logging
from libs.logger import logger, LOG_FILE
logger = logger.getChild('nrgreader')

# Pymodbus object
from pymodbus.client.sync import ModbusTcpClient
from pymodbus.payload import BinaryPayloadDecoder
from pymodbus.constants import Endian

# Client to work with influx database
from influxdb import InfluxDBClient

# IP and port of the Modbus TCP gateway
MODBUS_GW = dict(host='192.168.2.222', port=502)

# Energy meters
METERS = [
    dict(meter_id=10, influx_measure_base_name='line0'),
    dict(meter_id=11, influx_measure_base_name='line1'),
    dict(meter_id=2, influx_measure_base_name='line2'),
    dict(meter_id=3, influx_measure_base_name='line3'),
    dict(meter_id=4, influx_measure_base_name='line4'),
    dict(meter_id=5, influx_measure_base_name='line5')
]

# filename of the json where the readings from previous run are stored
Exemple #6
0
from waitress import serve

from libs.logger import logger, LOG_FILE
logger = logger.getChild('run')

import webapp

if __name__ == '__main__':
    try:
        app = webapp.create_app()
        logger.info("Starting web conosole at 0.0.0.0:5000")
        serve(app, host="0.0.0.0", port=5000)
    except (KeyboardInterrupt, SystemExit):
        exit
    pass