def __init__(self, filename=os.path.join(configuration.cache_root, 'csvdb', 'jukebox_selection.csv')): videos = csv.reader(open(filename, "rb"), delimiter='|') l = [] columns = [] shortest_duration = None for row in videos: if not columns: columns = row continue d = {} for name, field in zip(columns, row): if name == "name": field = field.decode("utf-8") elif name == "duration": field = float(field) elif name == "location": continue # TODO: There are more formats to "location" in the legacy DB videotable, so this will fail! Investigate. #s = field[36:] #s = s[:s.find('/')] #field = int(s) #name = "media_id" elif name == "id": name = "media_id" field = int(field) d[name] = field if configuration.video_cache_only: if not os.path.exists(lookup.locate_media_by_id(d["media_id"])): continue if d["duration"] < self.minimum_duration: continue if not shortest_duration or d["duration"] < shortest_duration: shortest_duration = d["duration"] l.append(d) self.videos = l self.shortest_duration = shortest_duration if not self.videos: logging.warning("No videos in in jukebox") else: logging.info("Total %i videos in jukebox. Shortest duration is %.1fs" % (len(self.videos), shortest_duration))
def get_filename(self): if self.filename: return self.filename else: return lookup.locate_media_by_id(self.media_id)