def UpdateVideoItem(self, item): """ Accepts an item. It returns an updated item. Usually retrieves the MediaURL and the Thumb! It should return a completed item. """ Logger.Debug('Starting UpdateVideoItem for %s (%s)', item.name, self.channelName) data = UriHandler.Open(item.url, proxy=self.proxy).decode('unicode_escape') streams = Regexer.DoRegex("file:\W+'([^']+)'", data) part = item.CreateNewEmptyMediaPart() for s in streams: if "anifest" in s: continue s = JsonHelper.ConvertSpecialChars(s) if s.startswith("rtmp"): s = self.GetVerifiableVideoUrl(s) part.AppendMediaStream(s, 1001) part.AppendMediaStream(s.replace("_medium.mp4", "_low.mp4"), 301) else: part.AppendMediaStream(s, 1002) part.AppendMediaStream(s.replace("_medium.mp4", "_low.mp4"), 302) item.complete = True return item
def __ConvertJsonSubtitleToSrt(jsonSubtitle): """Converts Json Subtitle format into SRT format: Arguments: jsonSubtitle : string - Json Subtitle subtitle format Returns: SRT formatted subtitle: Example: {"startMillis":80,"endMillis":4170,"text":"Ett Kanal 5:\nAlla gonblick i \"100 jdare!!!\"?","posX":0.5,"posY":0.9,"colorR":220,"colorG":220,"colorB":220} Returns 1 00:00:20,000 --> 00:00:24,400 text The format of the timecode is Hours:Minutes:Seconds:Ticks where a "Tick" is a value of between 0 and 249 and lasts 4 milliseconds. """ regex = '"startMillis":(\d+),"endMillis":(\d+),"text":"(.+?)(?=["] *,)' subs = Regexer.DoRegex(regex, jsonSubtitle) # Init some stuff srt = "" i = 1 for sub in subs: try: # print sub start = SubtitleHelper.__ConvertToTime(sub[0]) end = SubtitleHelper.__ConvertToTime(sub[1]) text = sub[2].replace('\"', '"') text = JsonHelper.ConvertSpecialChars(text) text = HtmlEntityHelper.ConvertHTMLEntities(text) srt = "%s\n%s\n%s --> %s\n%s\n" % (srt, i, start, end, text.strip()) i += 1 except: Logger.Error("Error parsing subtitle: %s", sub, exc_info=True) return srt