Global_DatabaseUpdate Quick Fix

At the request of some, I have modified the Global_DatabaseUpdate file to import the previous database's daily_schedule.  

NOTE: If you end up experiencing issues with your shows playing, this may be because your new database does not have the resources to play the listed shows.  May be time to run -g at that point.
This commit is contained in:
mutto233
2018-07-04 23:14:23 -04:00
committed by GitHub
parent 0d643b3fb9
commit 0a48511325

View File

@@ -1,107 +1,118 @@
# -*- coding: utf-8 -*-
"""
Created on Thu Jun 28 17:33:59 2018
@author: Matt
"""
import sqlite3
import os
from shutil import copy2
from pseudo_config import plexLibraries as global_commercials
channel_dir_increment_symbol = "_"
# Step ONE: Global database update
print("+++++ Doing global update from PLEX")
os.system('sudo python PseudoChannel.py -u')
base_dirA = os.path.dirname(os.path.abspath(__file__))
locations = "pseudo-channel"+channel_dir_increment_symbol
channel_dirs = [ item for item in os.listdir('.') if os.path.isdir(os.path.join('.', item)) ]
channel_dirs = list(filter(lambda x: x.startswith(locations),channel_dirs))
for channel_dir in channel_dirs:
# Step TWO: Go to each folder, export the following information
# - Show title, lastEpisodeTitle
# - Movie title, lastPlayedDate
os.chdir(channel_dir)
channel_dirA = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(channel_dirA, "pseudo-channel.db")
print("+++++ Importing from " + db_path)
try:
conn = sqlite3.connect(db_path)
table = conn.cursor()
lastEpisode_export = table.execute('SELECT lastEpisodeTitle,title FROM shows').fetchall()
lastEpisode_export = list(lastEpisode_export)
lastMovie_export = table.execute('SELECT lastPlayedDate,title FROM movies').fetchall()
lastMovie_export = list(lastMovie_export)
conn.commit()
conn.close()
except:
print("+++++ Database experiencing errors or hasn't been formed yet; creating fresh one")
lastEpisode_export = []
lastMovie_export = []
# Step THREE: Delete the previous database, replace with the recently created global one
print("+++++ Copying global update to " + db_path)
copy2('../pseudo-channel.db','.')
# Step FOUR: Import the previous information we exported previously
print("+++++ Exporting to " + db_path)
conn = sqlite3.connect(db_path)
table = conn.cursor()
for i in range(0,len(lastEpisode_export)):
sql = "UPDATE shows SET lastEpisodeTitle=? WHERE title=?"
table.execute(sql,lastEpisode_export[i])
for i in range(0,len(lastMovie_export)):
sql = "UPDATE movies SET lastPlayedDate=? WHERE title=?"
table.execute(sql,lastMovie_export[i])
# Step FIVE: Remove any media not in the directories set of commerical archives
print("+++++ Trimming database at " + db_path)
os.system('sudo python report_MediaFolders.py')
local_commercials = open('Commercial_Libraries.txt').read().splitlines()
local_movies = open('Movie_Libraries.txt').read().splitlines()
local_tvs = open('TV_Libraries.txt').read().splitlines()
commercial_removal = [x for x in global_commercials["Commercials"] if x not in local_commercials]
movie_removal = [x for x in global_commercials["Movies"] if x not in local_movies]
tv_removal = [x for x in global_commercials["TV Shows"] if x not in local_tvs]
# print(db_path)
# print(local_commercials)
# print(global_commercials["Commercials"])
# print(commercial_removal)
for commercial in commercial_removal:
sql = "DELETE FROM commercials WHERE customSectionName=?"
table.execute(sql,(commercial,))
for movie in movie_removal:
sql = "DELETE FROM movies WHERE customSectionName=?"
table.execute(sql,(movie,))
for tv in tv_removal:
sql = "DELETE FROM shows WHERE customSectionName=?"
table.execute(sql,(tv,))
sql = "DELETE FROM episodes WHERE customSectionName=?"
table.execute(sql,(tv,))
conn.commit()
conn.close()
os.chdir('..')
print("+++++ " + db_path + " complete! Going to next file")
print("+++++ Global update COMPLETE")
# -*- coding: utf-8 -*-
"""
Created on Thu Jun 28 17:33:59 2018
@author: Matt
"""
import sqlite3
import os
from shutil import copy2
from pseudo_config import plexLibraries as global_commercials
channel_dir_increment_symbol = "_"
# Step ONE: Global database update
print("+++++ Doing global update from PLEX")
os.system('sudo python PseudoChannel.py -u')
base_dirA = os.path.dirname(os.path.abspath(__file__))
locations = "pseudo-channel"+channel_dir_increment_symbol
channel_dirs = [ item for item in os.listdir('.') if os.path.isdir(os.path.join('.', item)) ]
channel_dirs = list(filter(lambda x: x.startswith(locations),channel_dirs))
for channel_dir in channel_dirs:
# Step TWO: Go to each folder, export the following information
# - Show title, lastEpisodeTitle
# - Movie title, lastPlayedDate
# - Daily schedule currently being executed
os.chdir(channel_dir)
channel_dirA = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(channel_dirA, "pseudo-channel.db")
print("+++++ Importing from " + db_path)
try:
conn = sqlite3.connect(db_path)
table = conn.cursor()
lastEpisode_export = table.execute('SELECT lastEpisodeTitle,title FROM shows').fetchall()
lastEpisode_export = list(lastEpisode_export)
lastMovie_export = table.execute('SELECT lastPlayedDate,title FROM movies').fetchall()
lastMovie_export = list(lastMovie_export)
daily_schedule = table.execute('SELECT * FROM daily_schedule').fetchall()
conn.commit()
conn.close()
except:
print("+++++ Database experiencing errors or hasn't been formed yet; creating fresh one")
lastEpisode_export = []
lastMovie_export = []
# Step THREE: Delete the previous database, replace with the recently created global one
print("+++++ Copying global update to " + db_path)
copy2('../pseudo-channel.db','.')
# Step FOUR: Import the previous information we exported previously
print("+++++ Exporting to " + db_path)
conn = sqlite3.connect(db_path)
table = conn.cursor()
for i in range(0,len(lastEpisode_export)):
sql = "UPDATE shows SET lastEpisodeTitle=? WHERE title=?"
table.execute(sql,lastEpisode_export[i])
for i in range(0,len(lastMovie_export)):
sql = "UPDATE movies SET lastPlayedDate=? WHERE title=?"
table.execute(sql,lastMovie_export[i])
for i in range(0,len(daily_schedule)):
sql = "INSERT INTO daily_schedule(id,unix,mediaID,title,episodeNumber,seasonNumber,showTitle,duration,startTime,endTime,dayOfWeek,sectionType,plexMediaID,customSectionName) \
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
table.execute(sql,daily_schedule[i])
# Step FIVE: Remove any media not in the directories set of commerical archives
print("+++++ Trimming database at " + db_path)
os.system('sudo python report_MediaFolders.py')
local_commercials = open('Commercial_Libraries.txt').read().splitlines()
local_movies = open('Movie_Libraries.txt').read().splitlines()
local_tvs = open('TV_Libraries.txt').read().splitlines()
commercial_removal = [x for x in global_commercials["Commercials"] if x not in local_commercials]
movie_removal = [x for x in global_commercials["Movies"] if x not in local_movies]
tv_removal = [x for x in global_commercials["TV Shows"] if x not in local_tvs]
# print(db_path)
# print(local_commercials)
# print(global_commercials["Commercials"])
# print(commercial_removal)
for commercial in commercial_removal:
sql = "DELETE FROM commercials WHERE customSectionName=?"
table.execute(sql,(commercial,))
for movie in movie_removal:
sql = "DELETE FROM movies WHERE customSectionName=?"
table.execute(sql,(movie,))
for tv in tv_removal:
sql = "DELETE FROM shows WHERE customSectionName=?"
table.execute(sql,(tv,))
sql = "DELETE FROM episodes WHERE customSectionName=?"
table.execute(sql,(tv,))
conn.commit()
conn.close()
os.chdir('..')
print("+++++ " + db_path + " complete! Going to next file")
print("+++++ Global update COMPLETE")