From ecf782af649d6798a9d9afc4818b3adc7b78de85 Mon Sep 17 00:00:00 2001 From: j Date: Sat, 17 May 2014 11:19:32 +0200 Subject: [PATCH] ddg --- oml/meta/__init__.py | 4 +++- oml/meta/duckduckgo.py | 39 +++++++++++++++++++++++++++++++++++++++ oml/meta/google.py | 4 +++- 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 oml/meta/duckduckgo.py diff --git a/oml/meta/__init__.py b/oml/meta/__init__.py index 2d4191d..9499ad6 100644 --- a/oml/meta/__init__.py +++ b/oml/meta/__init__.py @@ -8,6 +8,7 @@ import lookupbyisbn import openlibrary import worldcat import google +import duckduckgo providers = [ ('openlibrary', 'olid'), @@ -18,7 +19,8 @@ providers = [ ] def find(title, author=None, publisher=None, date=None): - results = google.find(title=title, author=author, publisher=publisher, date=date) + #results = google.find(title=title, author=author, publisher=publisher, date=date) + results = duckduckgo.find(title=title, author=author, publisher=publisher, date=date) ''' results = openlibrary.find(title=title, author=author, publisher=publisher, date=date) for r in results: diff --git a/oml/meta/duckduckgo.py b/oml/meta/duckduckgo.py new file mode 100644 index 0000000..34db04b --- /dev/null +++ b/oml/meta/duckduckgo.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# vi:si:et:sw=4:sts=4:ts=4 +from __future__ import division + +import ox.web.duckduckgo +import stdnum.isbn + +from .utils import find_isbns + + +def find(title, author=None, publisher=None, date=None): + print 'duckduckgo.find', title, author, publisher, date + query = title + if author: + if isinstance(author, list): + author = ' '.join(author) + query += ' ' + author + query += ' isbn' + isbns = [] + for r in ox.web.duckduckgo.find(query): + isbns += find_isbns(' '.join(r)) + results = [] + done = set() + for isbn in isbns: + if isbn not in done: + key = 'isbn%d'%len(isbn) + #r = lookup(key, isbn) + #r['mainid'] = key + r = { + key: isbn, + 'mainid': key + } + results.append(r) + done.add(isbn) + if len(isbn) == 10: + done.add(stdnum.isbn.to_isbn13(isbn)) + if len(isbn) == 13: + done.add(stdnum.isbn.to_isbn10(isbn)) + return results diff --git a/oml/meta/google.py b/oml/meta/google.py index 8e66766..6ff6967 100644 --- a/oml/meta/google.py +++ b/oml/meta/google.py @@ -19,7 +19,7 @@ def find(title, author=None, publisher=None, date=None): isbns = [] for r in ox.web.google.find(query): isbns += find_isbns(' '.join(r)) - + print isbns, 'google' results = [] done = set() for isbn in isbns: @@ -35,4 +35,6 @@ def find(title, author=None, publisher=None, date=None): done.add(isbn) if len(isbn) == 10: done.add(stdnum.isbn.to_isbn13(isbn)) + if len(isbn) == 13: + done.add(stdnum.isbn.to_isbn10(isbn)) return results