28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
from regluit.core import librarything, bookloader
|
|
import itertools
|
|
import django
|
|
|
|
def ry_lt_books():
|
|
"""return parsing of rdhyee's LibraryThing collection"""
|
|
lt = librarything.LibraryThing('rdhyee')
|
|
books = lt.parse_user_catalog(view_style=5)
|
|
return books
|
|
|
|
def editions_for_lt(books):
|
|
"""return the Editions that correspond to the list of LibraryThing books"""
|
|
editions = [bookloader.add_by_isbn(b["isbn"]) for b in books]
|
|
return editions
|
|
|
|
def ry_lt_not_loaded():
|
|
"""Calculate which of the books on rdhyee's librarything list don't yield Editions"""
|
|
books = list(ry_lt_books())
|
|
editions = editions_for_lt(books)
|
|
not_loaded_books = [b for (b, ed) in itertools.izip(books, editions) if ed is None]
|
|
return not_loaded_books
|
|
|
|
def ry_wish_list_equal_loadable_lt_books():
|
|
"""returnwhether the set of works in the user's wishlist is the same as the works in a user's loadable editions from LT"""
|
|
editions = editions_for_lt(ry_lt_books())
|
|
# assume only one user -- and that we have run a LT book loading process for that user
|
|
ry = django.contrib.auth.models.User.objects.all()[0]
|
|
return set([ed.work for ed in filter(None, editions)]) == set(ry.wishlist.works.all()) |