mirror of
https://github.com/FakeTV/pseudo-channel.git
synced 2025-12-30 15:03:13 +00:00
Updating project to oop.
This commit is contained in:
144
old/pseudo_channel.py
Normal file
144
old/pseudo_channel.py
Normal file
@@ -0,0 +1,144 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
from plexapi.server import PlexServer
|
||||
import sqlite3
|
||||
import time
|
||||
import os, sys
|
||||
import string
|
||||
import argparse
|
||||
import datetime
|
||||
|
||||
from pseudo_config import *
|
||||
|
||||
plex = PlexServer(baseurl, token)
|
||||
|
||||
conn = sqlite3.connect('pseudo-tv.db', timeout=10)
|
||||
c = conn.cursor()
|
||||
|
||||
def create_table():
|
||||
|
||||
c.execute('DROP TABLE IF EXISTS schedule')
|
||||
|
||||
c.execute('CREATE TABLE IF NOT EXISTS schedule(id INTEGER PRIMARY KEY AUTOINCREMENT, unix INTEGER, mediaID INTEGER, title TEXT, duration INTEGER, startTime INTEGER, endTime INTEGER, dayOfWeek TEXT, startTimeUnix INTEGER)')
|
||||
|
||||
def add_schedule_to_db(mediaID, title, duration, startTime, endTime, dayOfWeek):
|
||||
unix = int(time.time())
|
||||
startTimeUnix = str(datetime.datetime.strptime(startTime, '%I:%M %p'))
|
||||
try:
|
||||
|
||||
c.execute("INSERT OR REPLACE INTO schedule (unix, mediaID, title, duration, startTime, endTime, dayOfWeek, startTimeUnix) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (unix, mediaID, title, duration, startTime, endTime, dayOfWeek, startTimeUnix))
|
||||
conn.commit()
|
||||
c.close()
|
||||
conn.close()
|
||||
# Catch the exception
|
||||
except Exception as e:
|
||||
# Roll back any change if something goes wrong
|
||||
conn.rollback()
|
||||
c.close()
|
||||
conn.close()
|
||||
raise e
|
||||
|
||||
def get_end_time_from_duration(startTime, duration):
|
||||
time = datetime.datetime.strptime(startTime, '%I:%M %p')
|
||||
show_time_plus_duration = time + datetime.timedelta(milliseconds=duration)
|
||||
#print(show_time_plus_duration.minute)
|
||||
return show_time_plus_duration
|
||||
|
||||
#sql1 = "SELECT * FROM "+media+" WHERE (episodeNumber = 10 AND showTitle LIKE ?) COLLATE NOCASE"
|
||||
|
||||
def add_schedule(media, name, time, day):
|
||||
print("Adding the following schedule: -Type: "+media+" -Name: "+name+" -Time: "+time+" -Day: "+day)
|
||||
|
||||
sql1 = "SELECT * FROM "+media+" WHERE (title LIKE ?) COLLATE NOCASE"
|
||||
c.execute(sql1, (name, ))
|
||||
datalist = list(c.fetchone())
|
||||
if datalist > 0:
|
||||
print(datalist)
|
||||
add_schedule_to_db(0, datalist[3], 0, time, 0, day)
|
||||
#get_end_time_from_duration(time, datalist[3])
|
||||
else:
|
||||
print("No entry found in DB to add to schedule.")
|
||||
|
||||
def remove_all_scheduled_items():
|
||||
|
||||
sql = "DELETE FROM schedule WHERE id > -1"
|
||||
|
||||
c.execute(sql1)
|
||||
|
||||
conn.commit()
|
||||
|
||||
c.close()
|
||||
|
||||
conn.close()
|
||||
|
||||
|
||||
def show_connected_clients():
|
||||
|
||||
for client in plex.clients():
|
||||
|
||||
print(client.title)
|
||||
|
||||
def play_show(mediaType, mediaParentTitle, mediaTitle):
|
||||
|
||||
mediaItems = plex.library.section(mediaType).get(mediaParentTitle).episodes()
|
||||
|
||||
for item in mediaItems:
|
||||
|
||||
# print(part.title)
|
||||
|
||||
if item.title == mediaTitle:
|
||||
|
||||
for client in plexClients:
|
||||
|
||||
clientItem = plex.client(client)
|
||||
|
||||
clientItem.playMedia(item)
|
||||
|
||||
break
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
parser.add_argument('-a', '--add', dest='add_variable')
|
||||
parser.add_argument('-n', '--name', dest='name_variable')
|
||||
parser.add_argument('-t', '--time', dest='time_variable')
|
||||
parser.add_argument('-d', '--day', dest='day_variable')
|
||||
|
||||
'''
|
||||
*
|
||||
* Play specific show: "python pseudo_channel.py -ps 'Garage Sale' -st 'The Office (US)' "
|
||||
|
||||
* This is useful for debugging. Set your Plex clients in the config and try the above command to see if it works.
|
||||
*
|
||||
'''
|
||||
parser.add_argument('-ps', dest='play_show_variable')
|
||||
parser.add_argument('-st', dest='play_show_series_title_variable')
|
||||
|
||||
'''
|
||||
*
|
||||
* Show connected clients: "python pseudo_channel.py -sc"
|
||||
*
|
||||
'''
|
||||
parser.add_argument('-sc', action='store_true')
|
||||
|
||||
globals().update(vars(parser.parse_args()))
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if add_variable:
|
||||
|
||||
add_schedule(add_variable, name_variable, time_variable, day_variable)
|
||||
|
||||
if args.sc == True:
|
||||
|
||||
show_connected_clients()
|
||||
|
||||
if play_show_variable:
|
||||
|
||||
play_show("TV Shows", play_show_series_title_variable, play_show_variable)
|
||||
|
||||
# python pseudo-channel.py -a "shows" -n "curb your enthusiasm" -t "7:30 PM" -d "weekdays"
|
||||
|
||||
|
||||
# create_tables()
|
||||
# update_db_with_media()
|
||||
Reference in New Issue
Block a user