X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fvideo.h;h=f94186e5c3f09684f2af9160211d00c5e0fa8dcf;hb=be5ee6ccd9b29c9d5ca59e4a3d4adf53bac6bc8d;hp=3a85233bb82ad5bb111094d8846afd89dbfbcbf9;hpb=4250cf62c1410d5c4e16720128264aeb59c8dc17;p=minitube diff --git a/src/video.h b/src/video.h index 3a85233..f94186e 100644 --- a/src/video.h +++ b/src/video.h @@ -21,123 +21,115 @@ $END_LICENSE */ #ifndef VIDEO_H #define VIDEO_H +#include #include -#if QT_VERSION >= 0x050000 -#include -#endif -#include -class Video : public QObject { +class YTVideo; +class YTJSVideo; +class Video : public QObject { Q_OBJECT public: Video(); - Video* clone(); + ~Video(); + Video *clone(); - enum License { - LicenseYouTube = 1, - LicenseCC - }; + enum License { LicenseYouTube = 1, LicenseCC }; + Q_ENUM(License) - const QString & title() const { return m_title; } - void setTitle( QString title ) { m_title = title; } + const QString &getTitle() const { return title; } + void setTitle(const QString &value) { title = value; } - const QString & description() const { return m_description; } - void setDescription( QString description ) { m_description = description; } + const QString &getDescription() const { return description; } + void setDescription(const QString &value) { description = value; } - const QString & author() const { return m_author; } - void setAuthor( QString author ) { m_author = author; } + const QString &getChannelTitle() const { return channelTitle; } + void setChannelTitle(const QString &value) { channelTitle = value; } - const QString & userId() const { return m_userId; } - void setUserId( QString userId ) { m_userId = userId; } + const QString &getChannelId() const { return channelId; } + void setChannelId(const QString &value) { channelId = value; } - const QUrl & webpage() const { return m_webpage; } - void setWebpage(QUrl webpage); + const QString &getWebpage(); + void setWebpage(const QString &value); void loadThumbnail(); - const QPixmap & thumbnail() const { return m_thumbnail; } + const QPixmap &getThumbnail() const { return thumbnail; } - const QString & thumbnailUrl() { return m_thumbnailUrl; } - void setThumbnailUrl(QString url) { m_thumbnailUrl = url; } + const QString &getThumbnailUrl() const { return thumbnailUrl; } + void setThumbnailUrl(const QString &value) { thumbnailUrl = value; } - void loadMediumThumbnail(); - const QString & mediumThumbnailUrl() { return m_mediumThumbnailUrl; } - void setMediumThumbnailUrl(QString url) { m_mediumThumbnailUrl = url; } + const QString &getMediumThumbnailUrl() const { return mediumThumbnailUrl; } + void setMediumThumbnailUrl(const QString &value) { mediumThumbnailUrl = value; } - int duration() const { return m_duration; } - void setDuration( int duration ) { m_duration = duration; } - QString formattedDuration() const; + const QString &getLargeThumbnailUrl() const { return largeThumbnailUrl; } + void setLargeThumbnailUrl(const QString &value) { largeThumbnailUrl = value; } - int viewCount() const { return m_viewCount; } - void setViewCount( int viewCount ) { m_viewCount = viewCount; } + int getDuration() const { return duration; } + void setDuration(int value); + const QString &getFormattedDuration() const { return formattedDuration; } - const QDateTime & published() const { return m_published; } - void setPublished( QDateTime published ) { m_published = published; } + int getViewCount() const { return viewCount; } + void setViewCount(int value); + const QString &getFormattedViewCount() const { return formattedViewCount; } + + const QDateTime &getPublished() const { return published; } + void setPublished(const QDateTime &value); + const QString &getFormattedPublished() const { return formattedPublished; } int getDefinitionCode() const { return definitionCode; } void loadStreamUrl(); - const QUrl & getStreamUrl() { return m_streamUrl; } + const QString &getStreamUrl() { return streamUrl; } + bool isLoadingStreamUrl() const { return ytVideo != nullptr; } + void abortLoadStreamUrl(); - void setId(QString id) { videoId = id; } - const QString & id() const { return videoId; } + const QString &getId() const { return id; } + void setId(const QString &value) { id = value; } - void setLicense(License license) { m_license = license; } - License license() const { return m_license; } + License getLicense() const { return license; } + void setLicense(License value) { license = value; } signals: void gotThumbnail(); - void gotMediumThumbnail(QByteArray bytes); - void gotStreamUrl(QUrl streamUrl); - void errorStreamUrl(QString message); + void gotMediumThumbnail(const QByteArray &bytes); + void gotLargeThumbnail(const QByteArray &bytes); + void gotStreamUrl(const QString &videoUrl, const QString &audioUrl); + void errorStreamUrl(const QString &message); private slots: - void setThumbnail(QByteArray bytes); - void gotVideoInfo(QByteArray); - void errorVideoInfo(QNetworkReply*); - void scrapeWebPage(QByteArray); - void parseJsPlayer(QByteArray bytes); - void parseDashManifest(QByteArray bytes); + void setThumbnail(const QByteArray &bytes); + void streamUrlLoaded(const QString &streamUrl, const QString &audioUrl); private: - void getVideoInfo(); - void parseFmtUrlMap(const QString &fmtUrlMap, bool fromWebPage = false); - void captureFunction(const QString &name, const QString &js); - void captureObject(const QString &name, const QString &js); - QString decryptSignature(const QString &s); - - QString m_title; - QString m_description; - QString m_author; - QString m_userId; - QUrl m_webpage; - QUrl m_streamUrl; - QPixmap m_thumbnail; - QString m_thumbnailUrl; - QString m_mediumThumbnailUrl; - int m_duration; - QDateTime m_published; - int m_viewCount; - License m_license; - QString videoId; - QString videoToken; + void loadStreamUrlJS(); + void loadStreamUrlYT(); + + QString title; + QString description; + QString channelTitle; + QString channelId; + QString webpage; + QString streamUrl; + QPixmap thumbnail; + QString thumbnailUrl; + QString mediumThumbnailUrl; + QString largeThumbnailUrl; + int duration; + QString formattedDuration; + + QDateTime published; + QString formattedPublished; + int viewCount; + QString formattedViewCount; + License license; + QString id; int definitionCode; - // current index for the elTypes list - // needed to iterate on elTypes - int elIndex; - bool ageGate; - - bool loadingStreamUrl; bool loadingThumbnail; - QString fmtUrlMap; - QString sigFuncName; - QHash sigFunctions; - QHash sigObjects; - - QString dashManifestUrl; + YTVideo *ytVideo; + YTJSVideo *ytjsVideo; }; // This is required in order to use QPointer