void KryptoniteJobCoverDiscogs::parseListHtml( const QByteArray &data ) { emit message( tr( "Parsing discogs search reply" ), data ); QRegExp imgRe( ".*<img[^>]*class=[^>]*search_result_image[^>]*src=\"([^\"]*)\".*" ); QRegExp linkRe( ".*<a[^>]*class=[^>]*search_result_title[^>]*href=\"([^\"]*)\".*" ); QString s( QString::fromUtf8(data.constData()) ); QStringList l( s.split("\n", QString::SkipEmptyParts) ); QUrl imgUrl; QUrl linkUrl; foreach( s, l ) { if( s.contains( imgRe ) ) { imgUrl.setUrl( QString(s).replace( imgRe, "\\1" ) ); } if( s.contains( linkRe ) ) { linkUrl.setUrl( QString(s).replace( linkRe, "http://www.discogs.com\\1" ) ); } if( !imgUrl.isEmpty() && !linkUrl.isEmpty() ) { emit requestDownload( this, SIGNAL(imageFound(QByteArray,QVariant)), imgUrl, QVariant( linkUrl ) ); imgUrl.clear(); linkUrl.clear(); } } }
void KryptoniteJobCoverDiscogs::requestList( const QString &query ) { emit message( tr( "Searching discogs.com" ) ); QUrl url( "http://www.discogs.com/search" ); url.addQueryItem( "q", query ); url.addQueryItem( "type", "all" ); emit requestDownload( this, SLOT(parseListHtml(QByteArray)), url ); }
void KryptoniteJobCoverDiscogs::parseImagesHtml( const QByteArray &data, const QVariant &payload ) { emit message( tr( "Parsing discogs.com images page" ), data ); // <div class="image"><a href="/viewimages?release=753791"><img src="http://s.pixogs.com/image/R-150-753791-1155372972.jpeg" alt="Revolverheld - Revolverheld" /> QRegExp imgRe1( ".*<img[^>]*class=\"shadow image_frame\"[^>]*src=\"([^\"]*)\".*" ); QRegExp imgRe2( ".*<div class=\"image\">.*<img[^>]*src=\"([^\"]*)\".*" ); QString s( QString::fromUtf8(data.constData()) ); QStringList l( s.split("\n", QString::SkipEmptyParts) ); foreach( s, l ) { if( s.contains( imgRe1 ) ) { QUrl imgUrl( QString(s).replace( imgRe1, "\\1" ) ); emit requestDownload( this, SIGNAL(imageDownloaded(QByteArray,QVariant)), imgUrl, payload ); return; } else if( s.contains( imgRe2 ) ) { QUrl imgUrl( QString(s).replace( imgRe2, "\\1" ) ); emit requestDownload( this, SIGNAL(imageDownloaded(QByteArray,QVariant)), imgUrl, payload ); return; } } }
void KryptoniteJobCoverDiscogs::parseItemHtml( const QByteArray &data, const QVariant &payload ) { emit message( tr( "Parsing discogs.com item page" ), data ); //QRegExp imgRe( ".*<a href=\"([^\"]*)\">more images</a>.*" ); QRegExp imgRe( ".*<a href=\"(/viewimages?[^\"]*)\">.*" ); QString s( QString::fromUtf8(data.constData()) ); QStringList l( s.split("\n", QString::SkipEmptyParts) ); foreach( s, l ) { if( s.contains( imgRe ) ) { QUrl imgUrl( QString(s).replace( imgRe, "http://www.discogs.com\\1" ) ); emit requestDownload( this, SLOT(parseImagesHtml(QByteArray,QVariant)), imgUrl, payload ); return; } } }
void BrowserDialog::unsupportedContent(QNetworkReply *reply) { try { QWebPage *page = qobject_cast<QWebPage*>(sender()); if (page == nullptr) { qCritical("sender not a page"); return; } BrowserView *view = qobject_cast<BrowserView*>(page->view()); if (view == nullptr) { qCritical("no view?"); return; } emit requestDownload(view->url(), reply); } catch (const std::exception &e) { if (isVisible()) { MessageDialog::showMessage(tr("failed to start download"), this); } qCritical("exception downloading unsupported content: %s", e.what()); } }
void KryptoniteJobCoverDiscogs::requestImage( const QUrl &url, const QVariant &payload ) { emit requestDownload( this, SLOT(parseItemHtml(QByteArray,QVariant)), url, payload ); }
void OSD::dragEnterEvent(QDragEnterEvent *e) { emit requestDownload( e->mimeData()->text() ); }