Given the current climate re. online learning, we wanted to develop a solution which links students to learning resources. Using the proposed solution, a student can scan a book using their webcam or mobile phone camera; they will subsequently be presented with relevant information about that book, sourced from Google Books API. This includes information such as the title, author, book description, rating, and an option to preview the text in an e-book format. If the text is available for purchase via Google Books, the student will be presented with an option to purchase the digital text when in preview mode. Additionally, the student is presented with a link to purchase the text directly from Amazon. In the future, we intend to expand this functionality by including a direct link to Audible/other digital and audio book services, such that students can also access the book in audio format. Also, book reviews sourced via the Amazon SearchItems product advertising API could be displayed.

The solution also shows the student availability of the particular book in nearby libraries. In the current implementation, we restrict the search to libraries of Durham university; this content extraction is performed in Python using the bs-4 (BeautifulSoup) library to extract and parse HTML page content. This content is then displayed in the client-facing React app once an ISBN number has been successfully scanned. A more robust implementation would make use of the WorldCat Search API, which stores up to date information about book availability in public libraries across the world. However, as access to the API is restricted (requiring payment and pre-approval), it was not used in the Hackathon implementation.

Additionally, functionally could be added to connect with APIs provided by online learning platforms (e.g. Coursera, Khan Academy) to present courses and learning tutorials relevant to the scanned book's content. The topicality of the book can be assessed using the 'category' feature provided by the Google Books API, as well as by analyzing the content of the book description. Additionally, other books by the same author could be displayed.

Challenges I ran into

Linking Flask app with React app. Initially intended to complete this step within one framework; however, web scraping task for library availability content was not suitable for React. Hence, an additional back-end deployment in Python (Flask) was used.

Built With

Share this project: