def __init__(self): MetaGen.__init__(self) self.path = None self.container = None self.duration = None self.start = None self.bitrate = None self.size = None # Streams self._items = list() self._ignore = ["path"] self._rich_meta_deep = True self._mapper = settings.MEDIA_RM_MAP self._ident = settings.IDENTIFY_COMMAND if self._ident == None: com = command("which " + settings.IDENTIFY_PROGRAM)[0] if com != "": settings.IDENTIFY_COMMAND = com + settings.IDENTIFY_PARAM self._ident = settings.IDENTIFY_COMMAND version = com + " -version" v = command(version)[0].split("\n") ffv = "".join((l for l in v if l.startswith("FFmpeg"))) _log.debug("Good, ffmpeg version '%s' found in path '%s', settings.IDENTIFY_COMMAND set. Please note that identified media parameters output differs between ffmpeg versions, original version used was 'SVN-r25529'", ffv, com) else: _log.error("Unable to find suitable program '%s' for identification in system path. Either install program as specified in settings.IDENTIFY_PROGRAM or specify settings.IDENTIFY_COMMAND directly.", settings.IDENTIFY_PROGRAM)
# For VoD items get size, fails for live if f != None: try: media.size = f.info().getfirstmatchingheader('Content-Length')[0].split(":")[1].strip() f.close() except Exception, e: f.close() else: _log.error("Path specified '%s' is neither a file or reference that could be handled. Quit.", path) return None else: media.size = str(os.path.getsize(path)) media.path = path if media._ident != None: # ffmpeg fails, look for std error ident = command(media._ident + media.path)[1].split("\n") inp = "".join(l for l in ident if l.find("Input") != -1) dur = "".join(l for l in ident if l.find("Duration") != -1) stream = "\n".join(l for l in ident if l.find("Stream") != -1) # ffmpeg always fails, see if an error has occured error = "".join(l for l in ident if l.find("error occurred") != -1 or l.find("Input/output error") != -1) if error != "": _log.error("Getting media metadata has failed with an ffmpeg error: %s", error) return None if inp.find(",") != -1: media.container = inp.split(",")[1].strip() else: _log.warn("Getting media metadata has failed with since bad Input line was provided: '%s'", inp) return None if dur.find(",") != -1: ds = dur.split(",")