def get_episode_thumb_path(ep_obj): """ Returns the path where the episode thumbnail should be stored. Defaults to the same path as the episode file but with a .tbn extension. ep_obj: a TVEpisode instance for which to create the thumbnail """ if os.path.isfile(ep_obj.location): tbn_filename = replace_extension(ep_obj.location, 'tbn') else: return None return tbn_filename
def get_episode_thumb_path(ep_obj): """ Returns a full show dir/metadata/episode.jpg path for MediaBrowser episode thumbs. ep_obj: a TVEpisode object to get the path from """ if os.path.isfile(ep_obj.location): tbn_file_name = replace_extension(os.path.basename(ep_obj.location), 'jpg') metadata_dir_name = os.path.join(os.path.dirname(ep_obj.location), 'metadata') tbn_file_path = os.path.join(metadata_dir_name, tbn_file_name) else: return None return tbn_file_path
def get_episode_file_path(self, ep_obj): """ Returns a full show dir/metadata/episode.xml path for MediaBrowser episode metadata files ep_obj: a TVEpisode object to get the path for """ if os.path.isfile(ep_obj.location): xml_file_name = replace_extension(os.path.basename(ep_obj.location), self._ep_nfo_extension) metadata_dir_name = os.path.join(os.path.dirname(ep_obj.location), 'metadata') xml_file_path = os.path.join(metadata_dir_name, xml_file_name) else: sickrage.app.log.debug("Episode location doesn't exist: " + str(ep_obj.location)) return '' return xml_file_path
def get_episode_thumb_path(ep_obj): return replace_extension(ep_obj.location, 'jpg')
def get_episode_file_path(self, ep_obj): return replace_extension(ep_obj.location, self._ep_nfo_extension)
def load_from_nfo(self, location): if not os.path.isdir(self.show.location): sickrage.app.log.info( "{}: The show dir is missing, not bothering to try loading the episode NFO".format( self.show.indexer_id)) return False sickrage.app.log.debug( "{}: Loading episode details from the NFO file associated with {}".format(self.show.indexer_id, location)) if os.path.isfile(location): self.location = location if self.status == UNKNOWN: if is_media_file(self.location): sickrage.app.log.debug("7 Status changes from " + str(self.status) + " to " + str( Quality.status_from_name(self.location, anime=self.show.is_anime))) self.status = Quality.status_from_name(self.location, anime=self.show.is_anime) nfoFile = replace_extension(self.location, "nfo") sickrage.app.log.debug(str(self.show.indexer_id) + ": Using NFO name " + nfoFile) self.hasnfo = False if os.path.isfile(nfoFile): try: showXML = ElementTree(file=nfoFile) except (SyntaxError, ValueError) as e: sickrage.app.log.warning("Error loading the NFO, backing up the NFO and skipping for now: {}".format(e)) try: os.rename(nfoFile, nfoFile + ".old") except Exception as e: sickrage.app.log.warning("Failed to rename your episode's NFO file - you need to delete it or fix it: {}".format(e)) raise NoNFOException("Error in NFO format") for epDetails in showXML.iter('episodedetails'): if (epDetails.findtext('season') is None or int(epDetails.findtext('season')) != self.season) or (epDetails.findtext( 'episode') is None or int(epDetails.findtext('episode')) != self.episode): sickrage.app.log.debug("%s: NFO has an <episodedetails> block for a different episode - wanted S%02dE%02d but got " "S%02dE%02d" % (self.show.indexer_id, self.season or 0, self.episode or 0, int(epDetails.findtext('season')) or 0, int(epDetails.findtext('episode')) or 0)) continue if epDetails.findtext('title') is None or epDetails.findtext('aired') is None: raise NoNFOException("Error in NFO format (missing episode title or airdate)") self.name = epDetails.findtext('title') self.episode = try_int(epDetails.findtext('episode')) self.season = try_int(epDetails.findtext('season')) from sickrage.core.scene_numbering import get_scene_absolute_numbering, get_scene_numbering self.scene_absolute_number = get_scene_absolute_numbering( self.show.indexer_id, self.show.indexer, self.absolute_number, session=object_session(self) ) self.scene_season, self.scene_episode = get_scene_numbering( self.show.indexer_id, self.show.indexer, self.season, self.episode, session=object_session(self) ) self.description = epDetails.findtext('plot') or self.description self.airdate = datetime.date.min if epDetails.findtext('aired'): rawAirdate = [int(x) for x in epDetails.findtext('aired').split("-")] self.airdate = datetime.date(rawAirdate[0], rawAirdate[1], rawAirdate[2]) self.hasnfo = True self.hastbn = False if os.path.isfile(replace_extension(nfoFile, "tbn")): self.hastbn = True object_session(self).safe_commit() return self.hasnfo