-void Video::gotVideoInfo(QByteArray data) {
- QString videoInfo = QString::fromUtf8(data);
-
- // qDebug() << "videoInfo" << videoInfo;
-
- // get video token
- QRegExp re = QRegExp("^.*&token=([^&]+).*$");
- bool match = re.exactMatch(videoInfo);
- // handle regexp failure
- if (!match || re.numCaptures() < 1) {
- // Don't panic! We're gonna try another magic "el" param
- elIndex++;
- getVideoInfo();
- return;
- }
- QString videoToken = re.cap(1);
- while (videoToken.contains('%'))
- videoToken = QByteArray::fromPercentEncoding(videoToken.toAscii());
- // qDebug() << "videoToken" << videoToken;
- this->videoToken = videoToken;
-
- // get fmt_url_map
- re = QRegExp("^.*&url_encoded_fmt_stream_map=([^&]+).*$");
- match = re.exactMatch(videoInfo);
- // handle regexp failure
- if (!match || re.numCaptures() < 1) {
- // Don't panic! We're gonna try another magic "el" param
- elIndex++;
- getVideoInfo();
- return;
- }
-
- QString fmtUrlMap = re.cap(1);
- fmtUrlMap = QByteArray::fromPercentEncoding(fmtUrlMap.toUtf8());
-
- QSettings settings;
- QString definitionName = settings.value("definition").toString();
- int definitionCode = VideoDefinition::getDefinitionCode(definitionName);
-
- // qDebug() << "fmtUrlMap" << fmtUrlMap;
- QStringList formatUrls = fmtUrlMap.split(",", QString::SkipEmptyParts);
- QHash<int, QString> urlMap;
- foreach(QString formatUrl, formatUrls) {
- // qDebug() << "formatUrl" << formatUrl;
- QStringList urlParams = formatUrl.split("&", QString::SkipEmptyParts);
- // qDebug() << "urlParams" << urlParams;
-
- int format = -1;
- QString url;
- QString sig;
- foreach(QString urlParam, urlParams) {
- if (urlParam.startsWith("itag=")) {
- int separator = urlParam.indexOf("=");
- format = urlParam.mid(separator + 1).toInt();
- } else if (urlParam.startsWith("url=")) {
- int separator = urlParam.indexOf("=");
- url = urlParam.mid(separator + 1);
- url = QByteArray::fromPercentEncoding(url.toUtf8());
- } else if (urlParam.startsWith("sig=")) {
- int separator = urlParam.indexOf("=");
- sig = urlParam.mid(separator + 1);
- sig = QByteArray::fromPercentEncoding(sig.toUtf8());
- }
- }
- if (format == -1 || url.isNull()) continue;
-
- url += "&signature=" + sig;