def add(self, url: QUrl, position: int = -1) -> bool: if not url.isValid(): return False media_info = MediaInfo.parse(url.toLocalFile()) track = media_info.tracks[0] if track.title is None: title = url.fileName() else: title = track.title if track.duration is None: duration_str = '--:--' else: duration = int(float(track.duration) / 1000) totalTime = QTime((duration / 3600) % 60, (duration / 60) % 60, (duration % 60), (duration * 1000) % 1000) format = 'hh:mm:ss' if duration > 3600 else 'mm:ss' duration_str = totalTime.toString(format) if position >= self.rowCount() or position < 0: position = self.rowCount() self.beginInsertRows(QModelIndex(), position, position + 1) media_info = {'url': url, 'title': title, 'duration': duration_str} self.item_list.insert(position, media_info) self.endInsertRows() self.rowCount_changed.emit(self.rowCount()) return True
def load(self, file_url: QUrl): if file_url is None: return None if file_url.isValid(): c = QMediaContent(file_url) self.player.setMedia(c) self.media_loaded.emit(self.playlist.current_title()) self.enableInterface()
def set_url(self, url: QUrl): if not url.isValid(): return if mediainfo is None: return media_info = MediaInfo.parse(url.toLocalFile()) for track in media_info.tracks: if track.track_type == 'Audio' or track.track_type == 'Video': duration = track.duration / 1000 print(duration) print('{0} | {1:.0f}:{2:.0f}'.format(track.Title, duration / 60, duration % 60))
def update_content(self, item): if not item.data: self.clear() return html = u"" for k in sorted(item.data): v = item.data[k] if v is not None: html += "<strong>%s</strong>: " % k if isinstance(v, str): url = QUrl(v) if url.isValid() and url.scheme(): v = '<a href="%s">%s</a>' % (v, v) html += "{}<br>".format(v) self.setHtml(html)
def validate_url(self, web_contents: str) -> None: """ Check if is a url or HTML Check if url is valid :param self: QWebEnginePage :param web_contents: url or HTML :return: """ if "!doctype html" in web_contents.lower(): self.setHtml(web_contents) print("Loading local HTML") else: url = QUrl(web_contents) if url.isValid(): self.setUrl(web_contents) print(f"Loading URL:{url.toString()}")