]> git.sur5r.net Git - minitube/blob - src/ytvideo.h
Upload 3.9.3-2 to unstable
[minitube] / src / ytvideo.h
1 #ifndef YTVIDEO_H
2 #define YTVIDEO_H
3
4 #include <QtCore>
5
6 class VideoDefinition;
7
8 class YTVideo : public QObject {
9     Q_OBJECT
10
11 public:
12     YTVideo(const QString &videoId, QObject *parent);
13     void loadStreamUrl();
14     int getDefinitionCode() const { return definitionCode; }
15
16 signals:
17     void gotStreamUrl(const QString &videoUrl, const QString &audioUrl);
18     void errorStreamUrl(const QString &message);
19
20 private slots:
21     void gotVideoInfo(const QByteArray &bytes);
22     void emitError(const QString &message);
23     void scrapeWebPage(const QByteArray &bytes);
24     void parseJsPlayer(const QByteArray &bytes);
25
26 private:
27     void getVideoInfo();
28     void parseFmtUrlMap(const QString &fmtUrlMap);
29     void loadWebPage();
30     void loadEmbedPage();
31     void captureFunction(const QString &name, const QString &js);
32     void captureObject(const QString &name, const QString &js);
33     QString decryptSignature(const QString &s);
34     void saveDefinitionForUrl(const QString &url, const VideoDefinition &definition);
35
36     QString videoId;
37     QUrl m_streamUrl;
38     int definitionCode;
39     bool loadingStreamUrl;
40     int elIndex;
41     bool ageGate;
42     QString videoToken;
43     QString fmtUrlMap;
44     QString sigFuncName;
45     QHash<QString, QString> sigFunctions;
46     QHash<QString, QString> sigObjects;
47     QString dashManifestUrl;
48     QString jsPlayer;
49     QMap<int, QString> urlMap;
50     bool webPageLoaded = false;
51 };
52
53 #endif // YTVIDEO_H