public:
static JsFunctions* instance();
+ JsFunctions(const QString &url, QObject *parent = 0);
+ QScriptValue evaluate(const QString &js);
+ QString string(const QString &js);
+ QStringList stringArray(const QString &js);
+
+ // Specialized functions
+ // TODO move to subclass
QString decryptSignature(const QString &s);
+ QString decryptAgeSignature(const QString &s);
+ QString videoIdRE();
+ QString videoTokenRE();
+ QString videoInfoFmtMapRE();
+ QString webPageFmtMapRE();
+ QString ageGateRE();
+ QString jsPlayerRE();
+ QString signatureFunctionNameRE();
+ QStringList apiKeys();
+
+signals:
+ void ready();
private slots:
- void gotJs(QByteArray bytes);
+ void gotJs(const QByteArray &bytes);
void errorJs(QNetworkReply *reply);
private:
- JsFunctions(QObject *parent = 0);
- static const QLatin1String &jsFilename();
- static const QString &jsPath();
+ QString jsFilename();
+ QString jsPath();
void loadJs();
void parseJs(const QString &js);
- QString evaluateFunction(const QString &function);
+ QString url;
QScriptEngine *engine;
};