def run(self): if self.amActive: return self.amActive = True print "beginning to add to queue" query = "SELECT EpisodeId FROM tivo_episode WHERE Status = ?" myDB = db.DBConnection() results = myDB.select(query, [episodeStatus.getStatusCode("Wanted")]) episodesToAdd = [x["EpisodeId"] for x in results] eps = ["?" for k in episodesToAdd] episodesToAdd.insert(0, episodeStatus.getStatusCode("Queued")) myDB.action("UPDATE tivo_episode set Status = ? where EpisodeId IN (" + (",").join(eps) + ")", episodesToAdd) for x in results: print "adding " + str(x["EpisodeId"]) + " to the queue" tivopuller.QUEUE.addToQueue(x["EpisodeId"]) self.amActive = False print "add to queue complete"
def markDeletedEpisodes(self, episodes, dba): episodeIds = [x.episodeId for x in episodes] parms = ['?' for x in episodeIds] query = "UPDATE tivo_episode SET Status = ? WHERE Status <> ? AND episodeId NOT IN (" + ",".join(parms) + ")" removed = episodeStatus.getStatusCode("Removed from Tivo") downloaded = episodeStatus.getStatusCode("Downloaded") statuses = [removed, downloaded] statuses.extend(episodeIds) dba.action(query, statuses)
def addEpisodeToDb(self, episode, dba): epi = dba.select("SELECT * FROM tivo_episode where EpisodeId = ?", [str(episode.episodeId)]) if (len(epi) == 0): ser = dba.select("SELECT * FROM tivo_series WHERE SeriesId = ?", [episode.seriesId]) if (len(ser) == 0): dba.action("INSERT INTO tivo_series(SeriesId, SeriesName) VALUES(?, ?)", [episode.seriesId, episode.title]) status = episodeStatus.getStatusCode("Ignored") if (tivopuller.AUTO_DOWNLOAD_NEW == True): status = episodeStatus.getStatusCode("Wanted") dba.action("INSERT INTO tivo_episode(EpisodeId, SeriesId, EpisodeName, CaptureDate, Downloaded, DownloadDate, Status) VALUES(?, ?, ?, ?, ?, ?, ?)", [episode.episodeId, episode.seriesId, episode.episode, episode.date, False, None, status])
def test_addToQueue(self): tivopuller.initialize() myDB = db.DBConnection() myDB.action("Update tivo_episode set Status = ? WHERE EpisodeId = '1'", [episodeStatus.getStatusCode('Wanted')]) adder = tivoQueueAdder.TivoQueueAdder() adder.run() self.assertEqual(1, len(tivopuller.QUEUE))
def run(self): if (self.amActive or tivopuller.IP is None or tivopuller.IP == ""): return print "beginning to download" self.amActive = True element = tivopuller.QUEUE.getNextFromQueue() while (element is not None): entries = self.fetcher.FetchPlayList() episode = find(lambda x: x.episodeId == element, entries) if (episode is not None): conn = db.DBConnection() self.isDownloading = True conn.action("UPDATE tivo_episode SET Status = ? WHERE EpisodeId = ?", [episodeStatus.getStatusCode('Downloading'), element]) f = self.downloadEpisode(episode) self.isDownloading = False conn.action("UPDATE tivo_episode SET Status = ?, downloadLoc = ? WHERE EpisodeId = ?", [episodeStatus.getStatusCode('Downloaded'), f, element]) element = tivopuller.QUEUE.getNextFromQueue() self.amActive = False print "download complete"