class DMC_NewestEpisodes(DMC_Library):
    def __init__(self, session):
        global Manager
        if Manager is None:
            from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Manager import Manager

        self.manager = Manager("NewestEpisodes")
        DMC_Library.__init__(self, session, "tv shows - newest")

    ###
    # Return Value is expected to be:
    # (libraryArray, onEnterPrimaryKeys, onLeavePrimaryKeys, onLeaveSelectEntry
    def loadLibrary(self, primaryKeyValuePair, seenPng=None, unseenPng=None):
        printl("->", self)
        global Manager
        global utf8ToLatin
        if utf8ToLatin is None:
            from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Utf8 import utf8ToLatin

        start_time = time.time()
        userId = config.plugins.pvmc.seenuserid.value

        # Diplay all TVShows
        if primaryKeyValuePair is None:
            parsedLibrary = []

        today = date.today()
        tmpGenres = []
        shows = {}
        daysBack = config.plugins.pvmc.plugins.latestepisodes.daysback.value
        #episodes = self.manager.get.All(Manager.TVSHOWSEPISODES)
        episodes = self.manager.getAllEpisodes()

        for episode in episodes:
            try:
                fileCreationValidTime = False
                epDate = date(episode.Year, episode.Month, episode.Day)
                if self.checkFileCreationDate:
                    try:
                        creation = episode.FileCreation
                        cDate = date.fromtimestamp(creation)
                        if (today - cDate).days < daysBack:
                            fileCreationValidTime = True
                    except Exception, ex:
                        printl("Exception(" + str(type(ex)) + "): " + str(ex),
                               self, "W")
                        creation = 0

                if (today - epDate).days < daysBack or fileCreationValidTime:
                    if not shows.has_key(episode.ParentId):
                        tvshow = self.manager.getMedia(episode.ParentId)
                        shows[episode.ParentId] = tvshow
                        genres = utf8ToLatin(tvshow.Genres).split("|")
                        for genre in genres:
                            if genre not in tmpGenres:
                                tmpGenres.append(genre)
                    else:
                        tvshow = shows[episode.ParentId]

                    d = {}

                    d["ArtBackdropId"] = utf8ToLatin(tvshow.TheTvDbId)
                    d["ArtPosterId"] = d["ArtBackdropId"]

                    d["Id"] = episode.Id
                    d["ImdbId"] = utf8ToLatin(tvshow.ImdbId)
                    d["TheTvDbId"] = utf8ToLatin(episode.TheTvDbId)
                    d["Tag"] = utf8ToLatin(tvshow.Tag)
                    d["Title"] = " %s %dx%02d: %s" % (
                        utf8ToLatin(tvshow.Title),
                        episode.Season,
                        episode.Episode,
                        utf8ToLatin(episode.Title),
                    )

                    d["ScreenTitle"] = d["Title"]
                    d["ScreenTitle"] = utf8ToLatin(d["ScreenTitle"])

                    d["Year"] = episode.Year
                    d["Month"] = episode.Month
                    d["Day"] = episode.Day
                    d["Date"] = episode.getDate()
                    d["Creation"] = episode.FileCreation

                    d["Path"] = utf8ToLatin(episode.Path + "/" +
                                            episode.Filename + "." +
                                            episode.Extension)
                    d["Season"] = episode.Season
                    d["Episode"] = episode.Episode
                    d["Plot"] = utf8ToLatin(episode.Plot)
                    d["Runtime"] = episode.Runtime
                    d["Popularity"] = episode.Popularity
                    d["Genres"] = utf8ToLatin(episode.Genres).split("|")
                    d["Resolution"] = utf8ToLatin(episode.Resolution)
                    d["Sound"] = utf8ToLatin(episode.Sound)

                    if self.manager.isMediaSeen(d["Id"], userId):
                        image = seenPng
                        d["Seen"] = "Seen"
                    else:
                        image = unseenPng
                        d["Seen"] = "Unseen"

                    d["ViewMode"] = "play"

                    parsedLibrary.append(
                        (d["Title"], d,
                         episode.Season * 1000 + episode.Episode, "50", image))
            except Exception, ex:
                printl("Exception while loading library: " + str(ex), self,
                       "E")
                printl("\tEntry: " + str(episode), self, "E")
class DMC_NewestEpisodes(DMC_Library):

	def __init__(self, session):
		global Manager
		if Manager is None:
			from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Manager import Manager
		
		self.manager = Manager("NewestEpisodes")
		DMC_Library.__init__(self, session, "tv shows - newest")

	###
	# Return Value is expected to be:
	# (libraryArray, onEnterPrimaryKeys, onLeavePrimaryKeys, onLeaveSelectEntry
	def loadLibrary(self, primaryKeyValuePair, seenPng=None, unseenPng=None):
		printl("->", self)
		global Manager
		global utf8ToLatin
		if utf8ToLatin is None:
			from Plugins.Extensions.ProjectValerie.DMC_Plugins.DMC_SyncExtras.Utf8 import utf8ToLatin
		
		start_time = time.time()
		userId = config.plugins.pvmc.seenuserid.value
		
		# Diplay all TVShows
		if primaryKeyValuePair is None:
			parsedLibrary = []
		
		today = date.today()
		tmpGenres = []
		shows = {}
		daysBack = config.plugins.pvmc.plugins.latestepisodes.daysback.value
		#episodes = self.manager.get.All(Manager.TVSHOWSEPISODES)
		episodes = self.manager.getAllEpisodes()

		for episode in episodes:
			try:
				fileCreationValidTime = False
				epDate = date(episode.Year, episode.Month, episode.Day)
				if self.checkFileCreationDate:
					try:
						creation = episode.FileCreation
						cDate = date.fromtimestamp(creation)
						if (today-cDate).days < daysBack:
							fileCreationValidTime = True
					except Exception, ex:
						printl("Exception(" + str(type(ex)) + "): " + str(ex), self, "W")
						creation = 0
				
				if (today-epDate).days < daysBack or fileCreationValidTime:
					if not shows.has_key(episode.ParentId):
						tvshow = self.manager.getMedia(episode.ParentId)
						shows[episode.ParentId]= tvshow
						genres  = utf8ToLatin(tvshow.Genres).split("|")
						for genre in genres:
							if genre not in tmpGenres:
								tmpGenres.append(genre)
					else:
						tvshow = shows[episode.ParentId]
					
					d = {}
					
					d["ArtBackdropId"] = utf8ToLatin(tvshow.TheTvDbId)
					d["ArtPosterId"] = d["ArtBackdropId"]
					
					d["Id"]        = episode.Id
					d["ImdbId"]    = utf8ToLatin(tvshow.ImdbId)
					d["TheTvDbId"] = utf8ToLatin(episode.TheTvDbId)
					d["Tag"]       = utf8ToLatin(tvshow.Tag)
					d["Title"]     = " %s %dx%02d: %s" % (utf8ToLatin(tvshow.Title),episode.Season, episode.Episode, utf8ToLatin(episode.Title), )
					
					d["ScreenTitle"] = d["Title"]
					d["ScreenTitle"] = utf8ToLatin(d["ScreenTitle"])
					
					d["Year"]     = episode.Year
					d["Month"]    = episode.Month
					d["Day"]      = episode.Day
					d["Date"]     = episode.getDate()
					d["Creation"] = episode.FileCreation
					
					d["Path"]       = utf8ToLatin(episode.Path + "/" + episode.Filename + "." + episode.Extension)
					d["Season"]     = episode.Season
					d["Episode"]    = episode.Episode
					d["Plot"]       = utf8ToLatin(episode.Plot)
					d["Runtime"]    = episode.Runtime
					d["Popularity"] = episode.Popularity
					d["Genres"]     = utf8ToLatin(episode.Genres).split("|")
					d["Resolution"] = utf8ToLatin(episode.Resolution)
					d["Sound"]      = utf8ToLatin(episode.Sound)
					
					if self.manager.isMediaSeen(d["Id"], userId):
						image = seenPng
						d["Seen"] = "Seen"
					else:
						image = unseenPng
						d["Seen"] = "Unseen"
					
					d["ViewMode"] = "play"
					
					parsedLibrary.append((d["Title"], d, episode.Season * 1000 + episode.Episode, "50", image))
			except Exception, ex:
				printl("Exception while loading library: " + str(ex), self, "E")
				printl("\tEntry: " + str(episode), self, "E")