Python library for parsing GDZ.ru (async and sync)
Project description
gdz API
Table of Contents
An asynchronous Python library for accessing GDZ (Готовые домашние задания) resources.
Installation
Stable version
pip install gdzapi --upgrade
Usage
Synchronous Usage
Here's a basic example of how to use the synchronous GDZ class:
# First type of usage
from gdzapi import GDZ
gdz = GDZ()
for subject in gdz.subjects:
if subject.name == "Биология":
book = gdz.get_books(subject)[0]
print(f"Book: {book.name}")
pages = gdz.get_pages(book.url)
print(f"Number of pages: {len(pages)}")
if pages:
solutions = gdz.get_gdz(pages[0].url)
image_url = solutions[0].image_src
print(image_url)
#--------------------------------------------------------------
# Second type of usage
from gdzapi import GDZ
gdz = GDZ()
subjects = gdz.subjects
for subject in subjects:
if subject.name == "Биология":
book = subject.books[0]
print(f"Book: {book.name}")
page = book.pages[0]
if page:
solutions = page.solutions
image_url = solutions[0].image_src
print(image_url)
Asynchronous Usage
Here's how to use the asynchronous AsyncGDZ class:
# First type of usage
import asyncio
from gdzapi import AsyncGDZ
async def main():
async with AsyncGDZ() as gdz:
subjects = await gdz.subjects
for subject in subjects:
if subject.name == "Биология":
books = await gdz.get_books(subject)
if books:
book = books[0]
print(f"Book: {book.name}")
pages = await gdz.get_pages(book.url)
print(f"Number of pages: {len(pages)}")
if pages:
solutions = await gdz.get_gdz(pages[0].url)
print(solutions[0].image_src)
if __name__ == "__main__":
asyncio.run(main())
#--------------------------------------------------------------
# Second type of usage
import asyncio
from gdzapi import AsyncGDZ
async def main():
async with AsyncGDZ() as gdz:
subjects = await gdz.subjects
for subject in subjects:
if subject.name == "Биология":
books = await subject.books
if books:
book = books[0]
print(f"Book: {book.name}")
pages = await book.pages
if pages:
solutions = await pages[0].solutions
print(solutions[0].image_src)
if __name__ == "__main__":
asyncio.run(main())
Euroki example
from gdzapi import Euroki
e = Euroki()
books = e.search_books("Биология 10 класс")
for book in books:
if "Каменский" in book.authors:
downloadable_images = []
for i in book.pages:
for j in i.solutions:
downloadable_images.append(j.image_src)
print(downloadable_images)
MegaResheba example
from gdzapi import MegaResheba
m = MegaResheba()
for s in m.subjects:
if s.name == "История":
try:
print(s.books[0].pages[0].solutions[0].image_src)
except:
# This is means that there are no solutions
print("No solutions")
API Reference
GDZ/Euroki/MegaResheba Class
classes: List of available classes
subjects: List of available subjects
get_books(subject: Subject) -> List[Book]: Get books for a subject
get_pages(url: str) -> List[Page]: Get pages for a given URL
get_gdz(url: str) -> List[Solution]: Get solutions for a given URL
search_books(query: str) -> List[Book]: Search books for a given query
AsyncGDZ Class
classes: Asynchronous property returning list of available classes
subjects: Asynchronous property returning list of available subjects
get_books(subject: Subject) -> List[Book]: Asynchronous method to get books for a subject
get_pages(url: str) -> List[Page]: Asynchronous method to get pages for a given URL
get_gdz(url: str) -> List[Solution]: Asynchronous method to get solutions for a given URL
search_books(query: str) -> List[Book]: Asynchronous method to search books for a given query
License
gdzAPI is distributed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.