Projects/worblehat-old
Projects
/
worblehat-old
Archived
12
0
Fork 0
This repository has been archived on 2024-07-04. You can view files and clone it, but cannot push or open issues or pull requests.
worblehat-old/python/google_interface.py

66 lines
1.6 KiB
Python
Raw Normal View History

2010-09-23 19:04:28 +02:00
#!/usr/bin/python
2010-09-23 15:57:37 +02:00
from web.library.models import *
from gdata.books.service import BookService
2010-09-24 17:28:09 +02:00
import re
2010-09-23 15:57:37 +02:00
exit_commands = ['exit', 'abort', 'quit', 'bye', 'eat flaming death', 'q']
def get_book_loop():
service = BookService(source='Programvareverkstedet - Worblehat - 0.1a ')
while True:
input = raw_input('Enter ISBN number> ')
if input in exit_commands:
break
feed = service.search_by_keyword('isbn='+input)
if len(feed.entry) == 0:
print "No items found"
elif len(feed.entry) == 1:
2010-09-23 19:04:28 +02:00
print "Found one item: "+feed.entry[0].dc_title[0].text
b = build_book(feed.entry[0], input)
2010-09-23 15:57:37 +02:00
else:
print "Found several items, OWNOES!"
2010-09-23 19:04:28 +02:00
def build_book(entry, input=False):
dic = entry.to_dict()
2010-09-24 17:28:09 +02:00
print dic
# print entry
2010-09-23 19:04:28 +02:00
b = Book(title=entry.dc_title[0].text)
if len(entry.dc_title) > 0:
b.subtitle = ''.join(map(lambda x: x.text, entry.dc_title[1:]))
isbn = find_isbn(dic['identifiers'])
if isbn:
b.isbn = isbn
elif input:
if len(input) == 13:
b.isbn = input
else:
print "No ISBN found"
return False
if 'description' in dic:
b.description = dic['description']
if 'date' in dic:
b.published_year = int(dic['date'][:4])
if 'publishers' in dic:
b.publisher = ','.join(dic['publishers'])
2010-09-24 17:28:09 +02:00
b.num_pages = find_page_number(dic)
2010-09-23 19:04:28 +02:00
b.full_print()
2010-09-24 17:28:09 +02:00
def find_page_number(dic):
if 'format' in dic:
for item in dic['format']:
if 'pages' in item:
return int(re.findall(r'[0-9]+',item)[0])
return None
else:
return None
2010-09-23 19:04:28 +02:00
def find_isbn(identifiers):
for pair in identifiers:
if pair[0] =='ISBN' and len(pair[1])==13:
return pair[1]
return False
get_book_loop()