Skip to content

Models

Response models are pydantic v2 classes. The API is camelCase; fields are snake_case (aliased automatically).

Torrents

pygazelle.models.torrents.Torrent

Bases: GazelleModel

id instance-attribute

id: int

info_hash class-attribute instance-attribute

info_hash: str | None = None

media instance-attribute

media: str

format instance-attribute

format: str

encoding instance-attribute

encoding: str

remastered class-attribute instance-attribute

remastered: bool | None = None

scene instance-attribute

scene: bool

has_log instance-attribute

has_log: bool

has_cue instance-attribute

has_cue: bool

log_score instance-attribute

log_score: int

file_count instance-attribute

file_count: int

size instance-attribute

size: int

seeders instance-attribute

seeders: int

leechers instance-attribute

leechers: int

snatched instance-attribute

snatched: int

free_torrent class-attribute instance-attribute

free_torrent: bool | str | None = None

time instance-attribute

time: str

file_path instance-attribute

file_path: str

user_id instance-attribute

user_id: int

username instance-attribute

username: str

group class-attribute instance-attribute

group: TorrentGroup | None = None

file_list class-attribute instance-attribute

file_list: str | None = None

trumpable class-attribute instance-attribute

trumpable: bool | None = None

trumpable_reasons class-attribute instance-attribute

trumpable_reasons: list[str] = []

remaster_year class-attribute instance-attribute

remaster_year: int | None = None

remaster_title class-attribute instance-attribute

remaster_title: str | None = None

remaster_record_label class-attribute instance-attribute

remaster_record_label: str | None = None

remaster_catalogue_number class-attribute instance-attribute

remaster_catalogue_number: str | None = None

description class-attribute instance-attribute

description: str | None = None

log_checksum class-attribute instance-attribute

log_checksum: bool | None = None

log_count class-attribute instance-attribute

log_count: int | None = None

rip_log_ids class-attribute instance-attribute

rip_log_ids: list[int] = []

free_reason class-attribute instance-attribute

free_reason: str | None = None

reported class-attribute instance-attribute

reported: bool | None = None

files property

files: list[TorrentFile]

pygazelle.models.torrents.TorrentGroup

Bases: GazelleModel

id instance-attribute

id: int

name instance-attribute

name: str

year instance-attribute

year: int

tags class-attribute instance-attribute

tags: list[str] = []

artists class-attribute instance-attribute

artists: list[TorrentArtist] = []

category_id class-attribute instance-attribute

category_id: int | None = None

category_name class-attribute instance-attribute

category_name: str | None = None

release_type class-attribute instance-attribute

release_type: int | None = None

release_type_name class-attribute instance-attribute

release_type_name: str | None = None

record_label class-attribute instance-attribute

record_label: str | None = None

catalogue_number class-attribute instance-attribute

catalogue_number: str | None = None

vanity_house class-attribute instance-attribute

vanity_house: bool | None = None

wiki_image class-attribute instance-attribute

wiki_image: str | None = None

wiki_body class-attribute instance-attribute

wiki_body: str | None = None

wiki_bbcode class-attribute instance-attribute

wiki_bbcode: str | None = Field(
    default=None,
    validation_alias=AliasChoices("wikiBBcode", "bbBody"),
)

proxy_image class-attribute instance-attribute

proxy_image: str | None = None

is_bookmarked class-attribute instance-attribute

is_bookmarked: bool | None = None

time class-attribute instance-attribute

time: str | None = None

collages class-attribute instance-attribute

collages: list[CollageRef] = []

personal_collages class-attribute instance-attribute

personal_collages: list[CollageRef] = []

music_info class-attribute instance-attribute

music_info: MusicInfo | None = None

torrents class-attribute instance-attribute

torrents: list[Torrent] = []

pygazelle.models.torrents.TorrentResult

Bases: GazelleModel

group_id instance-attribute

group_id: int

group_name instance-attribute

group_name: str

artist instance-attribute

artist: str

tags class-attribute instance-attribute

tags: list[str] = []

group_year instance-attribute

group_year: int

max_size instance-attribute

max_size: int

total_seeders instance-attribute

total_seeders: int

total_leechers instance-attribute

total_leechers: int

total_snatched instance-attribute

total_snatched: int

torrents class-attribute instance-attribute

torrents: list[BrowseTorrent] = []

cover class-attribute instance-attribute

cover: str | None = None

bookmarked class-attribute instance-attribute

bookmarked: bool | None = None

vanity_house class-attribute instance-attribute

vanity_house: bool | None = None

release_type class-attribute instance-attribute

release_type: str | None = None

group_time class-attribute instance-attribute

group_time: str | None = None

pygazelle.models.torrents.BrowseTorrent

Bases: GazelleModel

torrent_id instance-attribute

torrent_id: int

size instance-attribute

size: int

file_count instance-attribute

file_count: int

format instance-attribute

format: str

encoding instance-attribute

encoding: str

media instance-attribute

media: str

edition_id class-attribute instance-attribute

edition_id: int | None = None

artists class-attribute instance-attribute

artists: list[TorrentArtist] = []

remaster_year class-attribute instance-attribute

remaster_year: int | None = None

remaster_title class-attribute instance-attribute

remaster_title: str | None = None

remaster_record_label class-attribute instance-attribute

remaster_record_label: str | None = None

remaster_catalogue_number class-attribute instance-attribute

remaster_catalogue_number: str | None = None

has_log class-attribute instance-attribute

has_log: bool | None = None

log_score class-attribute instance-attribute

log_score: int | None = None

has_cue class-attribute instance-attribute

has_cue: bool | None = None

scene class-attribute instance-attribute

scene: bool | None = None

vanity_house class-attribute instance-attribute

vanity_house: bool | None = None

time class-attribute instance-attribute

time: str | None = None

seeders class-attribute instance-attribute

seeders: int | None = None

leechers class-attribute instance-attribute

leechers: int | None = None

snatches class-attribute instance-attribute

snatches: int | None = None

is_freeleech class-attribute instance-attribute

is_freeleech: bool | None = None

is_neutral_leech class-attribute instance-attribute

is_neutral_leech: bool | None = None

is_personal_freeleech class-attribute instance-attribute

is_personal_freeleech: bool | None = None

can_use_token class-attribute instance-attribute

can_use_token: bool | None = None

has_snatched class-attribute instance-attribute

has_snatched: bool | None = None

pygazelle.models.torrents.TorrentFile

Bases: GazelleModel

path instance-attribute

path: str

size instance-attribute

size: int

pygazelle.models.torrents.CollageRef

Bases: GazelleModel

A collage a torrent group belongs to (id/name/count only).

Lighter than :class:~.collages.Collage (no contents); defined here rather than reusing Collage to avoid a circular import (collages imports :class:TorrentGroup).

id instance-attribute

id: int

name class-attribute instance-attribute

name: str | None = None

num_torrents class-attribute instance-attribute

num_torrents: int | None = None

pygazelle.models.torrents.MusicInfo

Bases: GazelleModel

The group's musicInfo credit block (action=torrent/torrentgroup).

Each role is a list of artist credits. artists is also surfaced at the top level of :class:TorrentGroup (artists); the other roles are only available here. Roles a tracker omits default to [] (RED omits arranger).

artists class-attribute instance-attribute

artists: list[TorrentArtist] = []

with_ class-attribute instance-attribute

with_: list[TorrentArtist] = Field(
    default_factory=list, alias="with"
)

remixed_by class-attribute instance-attribute

remixed_by: list[TorrentArtist] = []

composers class-attribute instance-attribute

composers: list[TorrentArtist] = []

conductor class-attribute instance-attribute

conductor: list[TorrentArtist] = []

dj class-attribute instance-attribute

dj: list[TorrentArtist] = []

producer class-attribute instance-attribute

producer: list[TorrentArtist] = []

arranger class-attribute instance-attribute

arranger: list[TorrentArtist] = []

Artists

pygazelle.models.artists.Artist

Bases: GazelleModel

id instance-attribute

id: int

name instance-attribute

name: str

body class-attribute instance-attribute

body: str = ''

image class-attribute instance-attribute

image: str = ''

tags class-attribute instance-attribute

tags: list[ArtistTag] | list[str] = []

vanity_house class-attribute instance-attribute

vanity_house: bool | None = None

body_bbcode class-attribute instance-attribute

body_bbcode: str | None = None

statistics class-attribute instance-attribute

statistics: ArtistStatistics | None = None

similar_artists class-attribute instance-attribute

similar_artists: list[ArtistSimilar] = []

discography class-attribute instance-attribute

discography: list[ArtistTorrentGroup] = Field(
    default_factory=list, alias="torrentgroup"
)

pygazelle.models.artists.ArtistResult

Bases: GazelleModel

id instance-attribute

id: int

name instance-attribute

name: str

pygazelle.models.artists.ArtistTag

Bases: GazelleModel

name instance-attribute

name: str

count instance-attribute

count: int

pygazelle.models.artists.ArtistStatistics

Bases: GazelleModel

The statistics block of an action=artist response.

num_groups class-attribute instance-attribute

num_groups: int | None = None

num_torrents class-attribute instance-attribute

num_torrents: int | None = None

num_seeders class-attribute instance-attribute

num_seeders: int | None = None

num_leechers class-attribute instance-attribute

num_leechers: int | None = None

num_snatches class-attribute instance-attribute

num_snatches: int | None = None

num_requests class-attribute instance-attribute

num_requests: int | None = None

pygazelle.models.artists.ArtistSimilar

Bases: GazelleModel

An entry of the action=artist similarArtists block.

Distinct from :class:SimilarArtist (action=similar_artists): the profile block keys the artist as artistId and adds a similarId edge id.

artist_id class-attribute instance-attribute

artist_id: int | None = None

name class-attribute instance-attribute

name: str | None = None

score class-attribute instance-attribute

score: int | None = None

similar_id class-attribute instance-attribute

similar_id: int | None = None

pygazelle.models.artists.ArtistTorrentGroup

Bases: GazelleModel

A discography group from action=artist's torrentgroup list.

Note the shape differs from action=torrentgroup (groupId/groupName, tags as a {tagId: name} map, a singular torrent key), so this is a dedicated model rather than a reuse of :class:~.torrents.TorrentGroup.

group_id class-attribute instance-attribute

group_id: int | None = None

group_name class-attribute instance-attribute

group_name: str | None = None

group_year class-attribute instance-attribute

group_year: int | None = None

group_category_id class-attribute instance-attribute

group_category_id: int | None = Field(
    default=None, alias="groupCategoryID"
)

tags class-attribute instance-attribute

tags: dict[str, str] | list[str] = Field(
    default_factory=dict
)

release_type class-attribute instance-attribute

release_type: int | None = None

wiki_image class-attribute instance-attribute

wiki_image: str | None = None

group_vanity_house class-attribute instance-attribute

group_vanity_house: bool | None = None

has_bookmarked class-attribute instance-attribute

has_bookmarked: bool | None = None

artists class-attribute instance-attribute

artists: list[DiscographyArtist] = []

extended_artists class-attribute instance-attribute

extended_artists: dict[str, Any] | None = None

torrents class-attribute instance-attribute

torrents: list[DiscographyTorrent] = Field(
    default_factory=list, alias="torrent"
)

pygazelle.models.artists.DiscographyTorrent

Bases: GazelleModel

A torrent inside a discography group (the singular torrent entries).

id class-attribute instance-attribute

id: int | None = None

group_id class-attribute instance-attribute

group_id: int | None = None

media class-attribute instance-attribute

media: str | None = None

format class-attribute instance-attribute

format: str | None = None

encoding class-attribute instance-attribute

encoding: str | None = None

remaster_year class-attribute instance-attribute

remaster_year: int | None = None

remaster_title class-attribute instance-attribute

remaster_title: str | None = None

remaster_record_label class-attribute instance-attribute

remaster_record_label: str | None = None

remaster_catalogue_number class-attribute instance-attribute

remaster_catalogue_number: str | None = None

scene class-attribute instance-attribute

scene: bool | None = None

has_log class-attribute instance-attribute

has_log: bool | None = None

has_cue class-attribute instance-attribute

has_cue: bool | None = None

log_score class-attribute instance-attribute

log_score: int | None = None

file_count class-attribute instance-attribute

file_count: int | None = None

free_torrent class-attribute instance-attribute

free_torrent: bool | str | None = None

size class-attribute instance-attribute

size: int | None = None

leechers class-attribute instance-attribute

leechers: int | None = None

seeders class-attribute instance-attribute

seeders: int | None = None

snatched class-attribute instance-attribute

snatched: int | None = None

time class-attribute instance-attribute

time: str | None = None

has_file class-attribute instance-attribute

has_file: bool | None = None

pygazelle.models.artists.DiscographyArtist

Bases: GazelleModel

An artist credit inside a discography group (action=artist).

id class-attribute instance-attribute

id: int | None = None

name class-attribute instance-attribute

name: str | None = None

aliasid class-attribute instance-attribute

aliasid: int | None = None

User

pygazelle.models.user.User

Bases: GazelleModel

id instance-attribute

id: int

username instance-attribute

username: str

passkey class-attribute instance-attribute

passkey: str | None = None

userstats class-attribute instance-attribute

userstats: UserStats | None = None

pygazelle.models.user.UserStats

Bases: GazelleModel

uploaded instance-attribute

uploaded: int

downloaded instance-attribute

downloaded: int

ratio instance-attribute

ratio: float

required_ratio class-attribute instance-attribute

required_ratio: float | None = None

tokens class-attribute instance-attribute

tokens: int | None = None

bonus_points class-attribute instance-attribute

bonus_points: int | None = None

bonus_points_per_hour class-attribute instance-attribute

bonus_points_per_hour: float | None = None

user_class class-attribute instance-attribute

user_class: str | None = Field(default=None, alias='class')

Other

pygazelle.models.notifications.Notification

Bases: GazelleModel

torrent_id instance-attribute

torrent_id: int

torrent_group_id instance-attribute

torrent_group_id: int

group_name instance-attribute

group_name: str

format class-attribute instance-attribute

format: str = ''

notification_type class-attribute instance-attribute

notification_type: str = ''

pygazelle.models.requests.Request

Bases: GazelleModel

id instance-attribute

id: int

title instance-attribute

title: str

year instance-attribute

year: int

artists class-attribute instance-attribute

artists: list[str] = []

tags class-attribute instance-attribute

tags: list[str] = []

description class-attribute instance-attribute

description: str = ''

pygazelle.models.requests.RequestResult

Bases: GazelleModel

request_id instance-attribute

request_id: int

title instance-attribute

title: str

year instance-attribute

year: int

artists class-attribute instance-attribute

artists: list[str] = []

pygazelle.models.collages.Collage

Bases: GazelleModel

id instance-attribute

id: int

name instance-attribute

name: str

description class-attribute instance-attribute

description: str = ''

tags class-attribute instance-attribute

tags: list[str] = []

num_torrents class-attribute instance-attribute

num_torrents: int = 0

torrent_groups class-attribute instance-attribute

torrent_groups: list[TorrentGroup] = Field(
    default_factory=list, alias="torrentgroups"
)

pygazelle.models.inbox.Message

Bases: GazelleModel

conversation_id instance-attribute

conversation_id: int

subject instance-attribute

subject: str

sender_id instance-attribute

sender_id: int

sender_name instance-attribute

sender_name: str

sent_date instance-attribute

sent_date: str

sticky class-attribute instance-attribute

sticky: bool = False

unread class-attribute instance-attribute

unread: bool = False

Bookmarks

pygazelle.models.bookmarks.BookmarkedTorrentGroup

Bases: GazelleModel

A bookmarked release group (action=bookmarks&type=torrents).

id instance-attribute

id: int

name instance-attribute

name: str

year class-attribute instance-attribute

year: int | None = None

record_label class-attribute instance-attribute

record_label: str | None = None

catalogue_number class-attribute instance-attribute

catalogue_number: str | None = None

tag_list class-attribute instance-attribute

tag_list: str | None = None

release_type class-attribute instance-attribute

release_type: int | None = None

vanity_house class-attribute instance-attribute

vanity_house: bool | None = None

image class-attribute instance-attribute

image: str | None = None

torrents class-attribute instance-attribute

torrents: list[BookmarkedTorrent] = []

pygazelle.models.bookmarks.BookmarkedTorrent

Bases: GazelleModel

A torrent edition within a bookmarked group (action=bookmarks&type=torrents).

id instance-attribute

id: int

group_id instance-attribute

group_id: int

media class-attribute instance-attribute

media: str | None = None

format class-attribute instance-attribute

format: str | None = None

encoding class-attribute instance-attribute

encoding: str | None = None

size class-attribute instance-attribute

size: int | None = None

seeders class-attribute instance-attribute

seeders: int | None = None

leechers class-attribute instance-attribute

leechers: int | None = None

snatched class-attribute instance-attribute

snatched: int | None = None

file_count class-attribute instance-attribute

file_count: int | None = None

has_file class-attribute instance-attribute

has_file: int | None = None

has_log class-attribute instance-attribute

has_log: bool | None = None

has_cue class-attribute instance-attribute

has_cue: bool | None = None

log_score class-attribute instance-attribute

log_score: int | None = None

scene class-attribute instance-attribute

scene: bool | None = None

remastered class-attribute instance-attribute

remastered: bool | None = None

remaster_year class-attribute instance-attribute

remaster_year: int | None = None

free_torrent class-attribute instance-attribute

free_torrent: bool | str | None = None

time class-attribute instance-attribute

time: str | None = None

pygazelle.models.bookmarks.BookmarkedArtist

Bases: GazelleModel

A bookmarked artist (action=bookmarks&type=artists).

artist_id instance-attribute

artist_id: int

artist_name instance-attribute

artist_name: str

Subscriptions

pygazelle.models.subscriptions.ForumSubscription

Bases: GazelleModel

A subscribed forum thread (action=subscriptions).

forum_id instance-attribute

forum_id: int

forum_name class-attribute instance-attribute

forum_name: str | None = None

thread_id instance-attribute

thread_id: int

thread_title class-attribute instance-attribute

thread_title: str | None = None

post_id class-attribute instance-attribute

post_id: int | None = None

last_post_id class-attribute instance-attribute

last_post_id: int | None = None

locked class-attribute instance-attribute

locked: bool | None = None

new class-attribute instance-attribute

new: bool | None = None

Site

pygazelle.models.site.Top10Category

Bases: GazelleModel

One ranked list from action=top10 (e.g. "Most Active Torrents...").

The results items differ by request type (torrents/tags/users), so they are kept as raw dicts rather than a single typed model.

caption class-attribute instance-attribute

caption: str | None = None

tag class-attribute instance-attribute

tag: str | None = None

limit class-attribute instance-attribute

limit: int | None = None

results class-attribute instance-attribute

results: list[dict[str, Any]] = []

pygazelle.models.site.Announcements

Bases: GazelleModel

The action=announcements response: site news plus blog posts.

announcements class-attribute instance-attribute

announcements: list[Announcement] = []

blog_posts class-attribute instance-attribute

blog_posts: list[BlogPost] = []

pygazelle.models.site.Announcement

Bases: GazelleModel

news_id class-attribute instance-attribute

news_id: int | None = None

title class-attribute instance-attribute

title: str | None = None

body class-attribute instance-attribute

body: str | None = None

news_time class-attribute instance-attribute

news_time: str | None = None

pygazelle.models.site.BlogPost

Bases: GazelleModel

blog_id class-attribute instance-attribute

blog_id: int | None = None

title class-attribute instance-attribute

title: str | None = None

body class-attribute instance-attribute

body: str | None = None

blog_time class-attribute instance-attribute

blog_time: str | None = None

thread_id class-attribute instance-attribute

thread_id: int | None = None

Writes

pygazelle.models.writes.TagAddition

Bases: GazelleModel

Result of action=add_tag.

added class-attribute instance-attribute

added: list[str] = []

rejected class-attribute instance-attribute

rejected: list[str] = []

pygazelle.models.writes.LogAddition

Bases: GazelleModel

Result of action=add_log.

torrent_id class-attribute instance-attribute

torrent_id: int | None = None

score class-attribute instance-attribute

score: int | None = None

checksum class-attribute instance-attribute

checksum: bool | str | None = None

logchecker_version class-attribute instance-attribute

logchecker_version: str | None = None

log_summaries class-attribute instance-attribute

log_summaries: list[LogSummary] = []

pygazelle.models.writes.LogSummary

Bases: GazelleModel

One log's checker summary inside an action=add_log response.

score class-attribute instance-attribute

score: int | None = None

checksum class-attribute instance-attribute

checksum: bool | str | None = None

ripper class-attribute instance-attribute

ripper: str | None = None

ripper_version class-attribute instance-attribute

ripper_version: str | None = None

language class-attribute instance-attribute

language: str | None = None

details class-attribute instance-attribute

details: list[str] = []

pygazelle.models.writes.RequestFill

Bases: GazelleModel

Result of action=request_fill.

request_id class-attribute instance-attribute

request_id: int | None = None

torrent_id class-attribute instance-attribute

torrent_id: int | None = None

filler_id class-attribute instance-attribute

filler_id: int | None = None

filler_name class-attribute instance-attribute

filler_name: str | None = None

bounty class-attribute instance-attribute

bounty: int | None = None