- Added Hex Magnet Link support (new standard, used for example by ThePirateBay)

This commit is contained in:
Christophe Dumez
2009-12-13 09:52:28 +00:00
parent aac0fbcbe4
commit b541c9fa4c
2 changed files with 23 additions and 6 deletions

View File

@@ -5,6 +5,7 @@
- BUGFIX: ~/qBT_dir is created only when it is actually used - BUGFIX: ~/qBT_dir is created only when it is actually used
- BUGFIX: Fix possible missing slot message (toggleSelectedTorrentsSuperSeeding) - BUGFIX: Fix possible missing slot message (toggleSelectedTorrentsSuperSeeding)
- BUGFIX: Fix possible crash in torrent properties (files) - BUGFIX: Fix possible crash in torrent properties (files)
- BUGFIX: Added Hex Magnet Links support (Thanks Haypo)
* Thu Dec 10 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.0 * Thu Dec 10 2009 - Christophe Dumez <chris@qbittorrent.org> - v2.0.0
- FEATURE: Added program option to disable splash screen - FEATURE: Added program option to disable splash screen

View File

@@ -266,14 +266,30 @@ public:
static QString magnetUriToHash(QString magnet_uri) { static QString magnetUriToHash(QString magnet_uri) {
QString hash = ""; QString hash = "";
QRegExp reg("urn:btih:([A-Z2-7=]+)"); QRegExp regHex("urn:btih:([0-9A-Za-z]+)");
int pos = reg.indexIn(magnet_uri); // Hex
int pos = regHex.indexIn(magnet_uri);
if(pos > -1) { if(pos > -1) {
sha1_hash sha1; QString found = regHex.cap(1);
sha1.assign(base32decode(reg.cap(1).toStdString())); if(found.length() == 40) {
hash = misc::toQString(sha1); sha1_hash sha1;
sha1.assign(QString(QByteArray::fromHex(regHex.cap(1).toLocal8Bit())).toStdString());
qDebug("magnetUriToHash (Hex): hash: %s", misc::toString(sha1).c_str());
return misc::toQString(sha1);
}
} }
qDebug("magnetUriToHash: hash: %s", hash.toLocal8Bit().data()); // Base 32
QRegExp regBase32("urn:btih:([A-Za-z2-7=]+)");
pos = regBase32.indexIn(magnet_uri);
if(pos > -1) {
QString found = regBase32.cap(1);
if(found.length() > 20) {
sha1_hash sha1;
sha1.assign(base32decode(regBase32.cap(1).toStdString()));
hash = misc::toQString(sha1);
}
}
qDebug("magnetUriToHash (base32): hash: %s", hash.toLocal8Bit().data());
return hash; return hash;
} }