Skip to main content

python-fragment

GitHub license PyPi package version Supported python versions

An unofficial Python library for interacting with Fragment (Python 3.9+). The library scrapes Fragment's HTML pages and exposes a clean, fully typed interface.

Features

  • Both synchronous and asynchronous clients
  • Fast HTML parsing powered by selectolax
  • Fully typed - all returned data is described with TypedDict schemas
  • Automatic retries on network failures with exponential back-off

Installation

pip install python-fragment

Quick Start

Async client

import asyncio
import fragment

async def main():
  async with fragment.AsyncClient() as client:
    # Search usernames currently on auction
    usernames = await client.search_usernames(
      query="crypto",
      filter="auction",
      sort="price_desc"
    )
    for u in usernames[:3]:
      print(u)
      # {
      #   'username': 'crypto',
      #   'status': 'auction',
      #   'value': 15000.0,
      #   'datetime': '2024-08-01T12:00:00+00:00',
      #   'is_resale': False
      # }

asyncio.run(main())

Sync client

import fragment

with fragment.Client() as client:
  # Detailed info for a specific username
  info = client.username_info("durov")
  print(info["status"])
  print(info["bid_history"])
  print(info["ownership_history"])

Proxy Usage

A proxy can be set for the entire client session or overridden per individual request. The interface is identical for both AsyncClient and Client.

Client-level proxy

import fragment

PROXY = "http://{user}:{password}@{host}:{port}"

# Async
async with fragment.AsyncClient(proxy=PROXY) as client:
  print(await client.username_info("crypto"))

# Sync
with fragment.Client(proxy=PROXY) as client:
  print(client.username_info("crypto"))

Per-request proxy

import fragment

PROXY = "http://{user}:{password}@{host}:{port}"

# Async
async with fragment.AsyncClient() as client:
  print(await client.username_info("crypto", proxy=PROXY))

# Sync
with fragment.Client() as client:
  print(client.username_info("crypto", proxy=PROXY))

Error Handling

import fragment
from fragment.errors import FragmentHTTPError, ParserError


async with fragment.AsyncClient() as client:
  try:
    info = await client.username_info("someusername")
  except FragmentHTTPError as e:
    print(f"HTTP error: {e}")
  except ParserError as e:
    print(f"Failed to parse Fragment HTML: {e}")

FragmentHTTPError - raised when the server returns a non-OK response.

ParserError - raised when the Fragment page structure has changed and data cannot be extracted.

Metadata

Release files for python-fragment 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-fragment 0.4.2
File Size Uploaded
python_fragment-0.4.2.tar.gz 8.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-fragment 0.4.2
File Interpreter ABI Platform
python_fragment-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 19.4 kB

Release files / python_fragment-0.4.2.tar.gz

Download URL python_fragment-0.4.2.tar.gz
Size 8.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a9c515e495a963a6f689103fb692619166371212f5e0240a436abbf3ff288d5a
BLAKE2b-256 checksum
How to use checksums
4331447b4683bae179c0c92a5279a982b7a39da6d1ed3ab142124b00b2f71f66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.5 cpython/3.12.3 HTTPX/0.28.1

Release files / python_fragment-0.4.2-py3-none-any.whl

Download URL python_fragment-0.4.2-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8c27993aa738bac1731d3eb528f221bcdab327c705b86cfc1427944ea614f36
BLAKE2b-256 checksum
How to use checksums
8653636d1d2ba9d9ddb95174cfa273ab69b43be870f43487d41b2eb431fc3754
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.5 cpython/3.12.3 HTTPX/0.28.1

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page