Skip to main content

Python client library for the CreatorsArea.fr job marketplace API

Project description

🎨 CreatorsArea.fr Python SDK

Python client library for the CreatorsArea.fr job marketplace API

Python 3.8+ License: MIT

📋 Overview

creatorsarea-py is an unofficial Python SDK for the CreatorsArea.fr job marketplace API. It provides a simple and intuitive interface to fetch and interact with job offers for developers, designers, and teams in the French gaming community.

✨ Features

  • 🔍 Job Search - Fetch jobs by category (Developer, Graphism, Team)
  • 📊 Filtering - Filter by tags, budget, deadline, status
  • 🎯 Job Details - Get complete information about specific jobs
  • 🔄 Pagination - Handle large result sets efficiently
  • 🛡️ Error Handling - Comprehensive exception handling
  • 📝 Type Hints - Full typing support for better IDE integration
  • Async Support - (Coming soon) Async/await support

📦 Installation

pip install creatorsarea-py

Development Installation

git clone https://github.com/Sycatle/creatorsarea-py.git
cd creatorsarea-py
pip install -e .

🚀 Quick Start

from creatorsarea import CreatorsAreaClient

# Initialize the client
client = CreatorsAreaClient()

# Fetch developer jobs
jobs = client.get_jobs(category="DEVELOPER", limit=10)

for job in jobs:
    print(f"{job.title} - {job.budget}")
    print(f"URL: {job.url}")
    print(f"Tags: {', '.join(job.tags)}")
    print("---")

# Get specific job details
job = client.get_job_by_id("675d123...")
if job:
    print(f"Title: {job.title}")
    print(f"Description: {job.description}")
    print(f"Budget: {job.budget}")
    print(f"Deadline: {job.deadline}")

📚 Usage Examples

Fetch Jobs by Category

from creatorsarea import CreatorsAreaClient, Category

client = CreatorsAreaClient()

# Developer jobs
dev_jobs = client.get_jobs(category=Category.DEVELOPER)

# Graphism jobs
design_jobs = client.get_jobs(category=Category.GRAPHISM)

# Team/server jobs
team_jobs = client.get_jobs(category=Category.TEAM)

Filter Jobs

# Filter by minimum budget
high_budget_jobs = client.get_jobs(
    category="DEVELOPER",
    min_budget=100.0
)

# Filter non-volunteer jobs
paid_jobs = client.get_jobs(
    category="DEVELOPER",
    exclude_volunteer=True
)

# Filter by tags
lua_jobs = client.get_jobs(
    category="DEVELOPER",
    tags=["lua", "gmod"]
)

Get Job Details

# By ID
job = client.get_job_by_id("675d123...")

# By slug
job = client.get_job_by_slug("developpeur-lua-gmod")

if job:
    print(f"Applications: {job.applications}")
    print(f"Author: {job.author}")
    print(f"Status: {job.status}")

Pagination

# Get all jobs (automatic pagination)
all_jobs = client.get_all_jobs(category="DEVELOPER")

# Manual pagination
page_1 = client.get_jobs(category="DEVELOPER", page=1, per_page=20)
page_2 = client.get_jobs(category="DEVELOPER", page=2, per_page=20)

🏗️ API Reference

CreatorsAreaClient

Main client class for interacting with the API.

Methods

get_jobs(category, limit=None, **filters) -> List[Job]

Fetch a list of jobs.

Parameters:

  • category (str): Job category ("DEVELOPER", "GRAPHISM", "TEAM")
  • limit (int, optional): Maximum number of jobs to return
  • min_budget (float, optional): Minimum budget filter
  • max_budget (float, optional): Maximum budget filter
  • exclude_volunteer (bool, optional): Exclude volunteer jobs
  • tags (List[str], optional): Filter by tags
  • status (str, optional): Filter by status

Returns: List of Job objects

get_job_by_id(job_id) -> Optional[Job]

Fetch a specific job by its ID.

Parameters:

  • job_id (str): The job ID

Returns: Job object or None

get_job_by_slug(slug) -> Optional[Job]

Fetch a specific job by its slug.

Parameters:

  • slug (str): The job slug (URL-friendly identifier)

Returns: Job object or None

get_all_jobs(category, **filters) -> List[Job]

Fetch all jobs with automatic pagination.

Parameters:

  • category (str): Job category
  • **filters: Same filters as get_jobs()

Returns: List of all Job objects

Job

Job data model.

Attributes

job.id              # str: Unique job ID
job.title           # str: Job title
job.slug            # str: URL slug
job.url             # str: Full URL to job posting
job.description     # str: Job description
job.content         # str: Full content/details
job.category        # str: Job category
job.kind            # str: Raw kind from API
job.status          # str: Job status (ACTIVE, CLOSED, etc.)
job.budget          # str: Formatted budget string
job.budget_value    # float: Numeric budget value
job.is_volunteer    # bool: Is volunteer work
job.budget_negotiable # bool: Is budget negotiable
job.tags            # List[str]: Job tags
job.applications    # str: Application count info
job.deadline        # datetime: Application deadline
job.author          # dict: Author information
job.created_at      # datetime: Creation timestamp
job.updated_at      # datetime: Last update timestamp

Category

Enum for job categories.

Category.DEVELOPER  # Development jobs
Category.GRAPHISM   # Design/graphics jobs
Category.TEAM       # Team/server jobs

Exceptions

from creatorsarea import (
    CreatorsAreaException,    # Base exception
    APIError,                 # API request failed
    NotFoundError,            # Job not found
    ValidationError,          # Invalid parameters
)

🔧 Configuration

Custom User-Agent

client = CreatorsAreaClient(
    user_agent="MyBot/1.0 (contact@example.com)"
)

Request Timeout

client = CreatorsAreaClient(timeout=30)

Base URL Override

# For testing or custom endpoints
client = CreatorsAreaClient(
    base_url="https://api.creatorsarea.fr"
)

🧪 Testing

# Run tests
pytest

# Run with coverage
pytest --cov=creatorsarea

# Run specific test file
pytest tests/test_client.py

📊 Examples

See the examples/ directory for more usage examples:

  • basic_usage.py - Simple job fetching
  • filtering.py - Advanced filtering examples
  • monitoring.py - Job monitoring bot
  • discord_bot.py - Discord integration example

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

👤 Author

Sycatle

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

⚠️ Disclaimer

This is an unofficial SDK and is not affiliated with or endorsed by CreatorsArea.fr. Use at your own risk.

🔗 Links

💬 Support


Made with ❤️ for the French gaming community

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

creatorsarea_py-0.1.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

creatorsarea_py-0.1.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file creatorsarea_py-0.1.0.tar.gz.

File metadata

  • Download URL: creatorsarea_py-0.1.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for creatorsarea_py-0.1.0.tar.gz
Algorithm Hash digest
SHA256 26527026de8d4b16c6aedbc61a22b7ad1f5b54bc4746aa4a2e0db07b9f2d515b
MD5 93f5b54e765cef5da08771eb77d9a418
BLAKE2b-256 9737bbcd3eb84ddd03ae2f9948d3da5590eac4d3748b85aa96e15780c3df6b11

See more details on using hashes here.

File details

Details for the file creatorsarea_py-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for creatorsarea_py-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a43d36e67973e3cd1fa65b42af11c567e2ae169a01ee2831ddad46eef74b6923
MD5 12c496268d5177e207552f0259f67c3c
BLAKE2b-256 ceeccc44e546cb0d404c9549102180339655c578175c721148dbab433991c721

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page