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
📋 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 returnmin_budget(float, optional): Minimum budget filtermax_budget(float, optional): Maximum budget filterexclude_volunteer(bool, optional): Exclude volunteer jobstags(List[str], optional): Filter by tagsstatus(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 asget_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 fetchingfiltering.py- Advanced filtering examplesmonitoring.py- Job monitoring botdiscord_bot.py- Discord integration example
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
👤 Author
Sycatle
- GitHub: @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
- CreatorsArea.fr
- Documentation (Coming soon)
- PyPI Package (Coming soon)
- Issue Tracker
💬 Support
Made with ❤️ for the French gaming community
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26527026de8d4b16c6aedbc61a22b7ad1f5b54bc4746aa4a2e0db07b9f2d515b
|
|
| MD5 |
93f5b54e765cef5da08771eb77d9a418
|
|
| BLAKE2b-256 |
9737bbcd3eb84ddd03ae2f9948d3da5590eac4d3748b85aa96e15780c3df6b11
|
File details
Details for the file creatorsarea_py-0.1.0-py3-none-any.whl.
File metadata
- Download URL: creatorsarea_py-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a43d36e67973e3cd1fa65b42af11c567e2ae169a01ee2831ddad46eef74b6923
|
|
| MD5 |
12c496268d5177e207552f0259f67c3c
|
|
| BLAKE2b-256 |
ceeccc44e546cb0d404c9549102180339655c578175c721148dbab433991c721
|