]> git.sur5r.net Git - minitube/blob - src/ytvideo.h
New upstream version 3.1
[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 errorVideoInfo(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, bool fromWebPage = false);
29     void loadWebPage();
30     void captureFunction(const QString &name, const QString &js);
31     void captureObject(const QString &name, const QString &js);
32     QString decryptSignature(const QString &s);
33     void saveDefinitionForUrl(const QString &url, const VideoDefinition &definition);
34
35     QString videoId;
36     QUrl m_streamUrl;
37     int definitionCode;
38     bool loadingStreamUrl;
39     int elIndex;
40     bool ageGate;
41     QString videoToken;
42     QString fmtUrlMap;
43     QString sigFuncName;
44     QHash<QString, QString> sigFunctions;
45     QHash<QString, QString> sigObjects;
46     QString dashManifestUrl;
47     QString jsPlayer;
48     QMap<int, QString> urlMap;
49 };
50
51 #endif // YTVIDEO_H