def retimestamp_and_index_file(inpath, outpath=None, retimestamp=None): # no retimestamping needed if retimestamp is None: return index_file(inpath, outpath) # retimestamp the input in place and index elif retimestamp == 'inplace': from flvlib.scripts.retimestamp_flv import retimestamp_file_inplace log.debug("Retimestamping file `%s' in place", inpath) # retimestamp the file inplace if not retimestamp_file_inplace(inpath): log.error("Failed to retimestamp `%s' in place", inpath) return False return index_file(inpath, outpath) # retimestamp the input into a temporary file elif retimestamp == 'atomic': from flvlib.scripts.retimestamp_flv import retimestamp_file_atomically log.debug("Retimestamping file `%s' atomically", inpath) try: fd, temppath = tempfile.mkstemp() os.close(fd) # preserve the permission bits shutil.copymode(inpath, temppath) except EnvironmentError, (errno, strerror): log.error("Failed to create temporary file: %s", strerror) return False if not retimestamp_file_atomically(inpath, temppath): log.error("Failed to retimestamp `%s' atomically", inpath) # remove the temporary files force_remove(temppath) return False # index the temporary file if not index_file(temppath, outpath): force_remove(temppath) return False if not outpath: # If we were not writing directly to the output file # we need to overwrite the original try: shutil.move(temppath, inpath) except EnvironmentError, (errno, strerror): log.error( "Failed to overwrite the original file with the " "retimestamped and indexed version: %s", strerror) return False
def retimestamp_and_index_file(inpath, outpath=None, retimestamp=None): # no retimestamping needed if retimestamp is None: return index_file(inpath, outpath) # retimestamp the input in place and index elif retimestamp == 'inplace': from flvlib.scripts.retimestamp_flv import retimestamp_file_inplace log.debug("Retimestamping file `%s' in place", inpath) # retimestamp the file inplace if not retimestamp_file_inplace(inpath): log.error("Failed to retimestamp `%s' in place", inpath) return False return index_file(inpath, outpath) # retimestamp the input into a temporary file elif retimestamp == 'atomic': from flvlib.scripts.retimestamp_flv import retimestamp_file_atomically log.debug("Retimestamping file `%s' atomically", inpath) try: fd, temppath = tempfile.mkstemp() os.close(fd) # preserve the permission bits shutil.copymode(inpath, temppath) except EnvironmentError, (errno, strerror): log.error("Failed to create temporary file: %s", strerror) return False if not retimestamp_file_atomically(inpath, temppath): log.error("Failed to retimestamp `%s' atomically", inpath) # remove the temporary files force_remove(temppath) return False # index the temporary file if not index_file(temppath, outpath): force_remove(temppath) return False if not outpath: # If we were not writing directly to the output file # we need to overwrite the original try: shutil.move(temppath, inpath) except EnvironmentError, (errno, strerror): log.error("Failed to overwrite the original file with the " "retimestamped and indexed version: %s", strerror) return False
flv.append(start_time - flv[1]) verifiedlist.append(flv) return verifiedlist def copybrowserflvs(flvlist, course_id): dest_path = config['browser_path'] + '/'+ str(course_id) + '/flv' try: makedirs(dest_path) except Exception, e: logger.error("mkdir for browserflvs error! course_id is %s , code is %s", course_id, e) for flv in flvlist: src = config['flvpath'] + '/' + str(flv[0]) dest = dest_path + '/' + str(flv[0]) copy(src, dest) retimestamp_flv.retimestamp_file_inplace(dest) index_flv.index_file(dest) def cutflvs(preflylist, course_id, start_time, end_time): try: dest_path = config['dest_path'] + '/'+ str(course_id) + '/flv' makedirs(dest_path) except Exception, e: logger.error("mkdir error! course_id is %s , code is %s", course_id, e) cuted_flvs = [] if len(preflylist) > 0: for flv in preflylist: new_flv = [] src = config['flvpath'] + '/' + str(flv[0])