[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/office/tellico
From: Robby Stephenson <robby () periapsis ! org>
Date: 2010-11-24 5:58:19
Message-ID: 20101124055819.04A31AC8A3 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1200168 by rstephenson:
tweak a few tests, and fix google scholar bibtex cookie setting
M +4 -0 ChangeLog
M +31 -3 src/fetch/googlescholarfetcher.cpp
M +1 -0 src/fetch/googlescholarfetcher.h
M +12 -3 src/tests/discogsfetchertest.cpp
M +1 -1 src/tests/freebasefetchertest.cpp
M +2 -2 src/tests/themoviedbfetchertest.cpp
--- trunk/extragear/office/tellico/ChangeLog #1200167:1200168
@@ -1,3 +1,7 @@
+2010-11-23 Robby Stephenson <robby@periapsis.org>
+
+ * Fixed Google Scholar fetcher to properly set bibtex cookie.
+
2010-11-21 Robby Stephenson <robby@periapsis.org>
* Added cover art to MusicBrainz fetcher.
--- trunk/extragear/office/tellico/src/fetch/googlescholarfetcher.cpp \
#1200167:1200168 @@ -74,9 +74,7 @@
void GoogleScholarFetcher::search() {
if(!m_cookieIsSet) {
- // have to set preferences to have bibtex output
- FileHandler::readTextFile(KUrl(SCHOLAR_SET_BIBTEX_URL), true);
- m_cookieIsSet = true;
+ setBibtexCookie();
}
m_started = true;
m_start = 0;
@@ -233,6 +231,36 @@
return favIcon("http://scholar.google.com");
}
+void GoogleScholarFetcher::setBibtexCookie() {
+ // have to set preferences to have bibtex output
+ const QString text = FileHandler::readTextFile(KUrl(SCHOLAR_SET_BIBTEX_URL), \
true); + // find hidden input variables
+ QRegExp inputRx(QLatin1String("<input\\s+.*\\s+type\\s*=\\s*hidden\\s+.*>"));
+ inputRx.setMinimal(true);
+ QRegExp pairRx(QLatin1String("([^=\\s<]+)\\s*=\\s*\"?([^=\\s\">]+)\"?"));
+ QHash<QString, QString> nameValues;
+ for(int pos = inputRx.indexIn(text); pos > -1; pos = inputRx.indexIn(text, \
pos+inputRx.matchedLength())) { + const QString input = inputRx.cap(0);
+ QString name, value;
+ for(int pos2 = pairRx.indexIn(input); pos2 > -1; pos2 = pairRx.indexIn(input, \
pos2+pairRx.matchedLength())) { + if(pairRx.cap(1).toLower() == \
QLatin1String("name")) { + name = pairRx.cap(2);
+ } else if(pairRx.cap(1).toLower() == QLatin1String("value")) {
+ value = pairRx.cap(2);
+ }
+ }
+ if(!name.isEmpty() && !value.isEmpty()) {
+ nameValues.insert(name, value);
+ }
+ }
+ QString newUrl = QLatin1String(SCHOLAR_SET_BIBTEX_URL);
+ for(QHash<QString, QString>::const_iterator i = nameValues.constBegin(); i != \
nameValues.constEnd(); ++i) { + newUrl += QLatin1Char('&') + i.key() + \
QLatin1Char('=') + i.value(); + }
+ FileHandler::readTextFile(KUrl(newUrl), true);
+ m_cookieIsSet = true;
+}
+
GoogleScholarFetcher::ConfigWidget::ConfigWidget(QWidget* parent_, const \
GoogleScholarFetcher* /*=0*/) : Fetch::ConfigWidget(parent_) {
QVBoxLayout* l = new QVBoxLayout(optionsWidget());
--- trunk/extragear/office/tellico/src/fetch/googlescholarfetcher.h #1200167:1200168
@@ -92,6 +92,7 @@
virtual void search();
virtual FetchRequest updateRequest(Data::EntryPtr entry);
void doSearch();
+ void setBibtexCookie();
int m_limit;
int m_start;
--- trunk/extragear/office/tellico/src/tests/discogsfetchertest.cpp #1200167:1200168
@@ -57,14 +57,23 @@
// don't use 'this' as job parent, it crashes
Tellico::Fetch::FetcherJob* job = new Tellico::Fetch::FetcherJob(0, fetcher, \
request); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*)));
- job->setMaximumResults(1);
job->start();
m_loop.exec();
- QCOMPARE(m_results.size(), 1);
+ QVERIFY(m_results.size() > 0);
+ Tellico::Data::EntryPtr entry; // results can be randomly ordered, loop until \
wee find the one we want + for(int i = 0; i < m_results.size(); ++i) {
+ Tellico::Data::EntryPtr test = m_results.at(i);
+ if(test->field(QLatin1String("artist")).toLower() == \
QLatin1String("evanescence")) { + entry = test;
+ break;
+ } else {
+ qDebug() << "skipping" << test->title();
+ }
+ }
+ QVERIFY(entry);
- Tellico::Data::EntryPtr entry = m_results.at(0);
QCOMPARE(entry->field(QLatin1String("title")), QLatin1String("Fallen"));
QVERIFY(!entry->field(QLatin1String("artist")).isEmpty());
QVERIFY(!entry->field(QLatin1String("label")).isEmpty());
--- trunk/extragear/office/tellico/src/tests/freebasefetchertest.cpp #1200167:1200168
@@ -242,7 +242,7 @@
QCOMPARE(entry->field(QLatin1String("title")).toLower(), QLatin1String("the man \
from snowy river")); QCOMPARE(entry->field(QLatin1String("director")), \
QLatin1String("George T. Miller")); \
QCOMPARE(entry->field(QLatin1String("producer")), \
QLatin1String("Simon Wincer"));
- QCOMPARE(entry->field(QLatin1String("writer")), QLatin1String("Banjo Paterson"));
+ QCOMPARE(entry->field(QLatin1String("writer")), QLatin1String("Cul Cullen; John \
Dixon")); QCOMPARE(entry->field(QLatin1String("composer")), QLatin1String("Bruce \
Rowland")); QCOMPARE(entry->field(QLatin1String("studio")), QLatin1String("20th \
Century Fox")); QCOMPARE(entry->field(QLatin1String("certification")), \
QLatin1String("PG (USA)"));
--- trunk/extragear/office/tellico/src/tests/themoviedbfetchertest.cpp \
#1200167:1200168 @@ -49,7 +49,7 @@
Tellico::ImageFactory::init();
m_fieldValues.insert(QLatin1String("title"), QLatin1String("Superman Returns"));
- m_fieldValues.insert(QLatin1String("studio"), QLatin1String("Warner Bros. \
Pictures; Dark Castle")); + m_fieldValues.insert(QLatin1String("studio"), \
QLatin1String("Warner Bros. Pictures")); m_fieldValues.insert(QLatin1String("year"), \
QLatin1String("2006")); m_fieldValues.insert(QLatin1String("genre"), \
QLatin1String("action")); m_fieldValues.insert(QLatin1String("director"), \
QLatin1String("Bryan Singer")); @@ -75,7 +75,7 @@
while(i.hasNext()) {
i.next();
QString result = entry->field(i.key()).toLower();
- QCOMPARE(result, i.value().toLower());
+ QVERIFY(result.contains(i.value().toLower()));
}
QVERIFY(!entry->field(QLatin1String("cast")).isEmpty());
QVERIFY(!entry->field(QLatin1String("cover")).isEmpty());
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic