Import plugins for converting external data sources to Rhylthyme programs
Project description
Rhylthyme Importers
Import plugins for converting external data sources into Rhylthyme programs.
Installation
pip install -e ./rhylthyme-importers
Available Importers
TheMealDB Importer
Import recipes from TheMealDB free recipe API.
# Search for recipes
rhylthyme-import search "chicken curry" -i themealdb
# Import by URL or meal ID
rhylthyme-import import "https://www.themealdb.com/meal/52772" -o curry.json --pretty
# Import a random meal
rhylthyme-import mealdb random -o random_meal.json --pretty
# List available categories
rhylthyme-import mealdb categories
Protocols.io Importer
Import laboratory protocols from protocols.io.
Requires API token: Set the PROTOCOLS_IO_TOKEN environment variable with your
protocols.io API token (get one from https://www.protocols.io/developers).
export PROTOCOLS_IO_TOKEN="your_token_here"
# Search for protocols
rhylthyme-import search "western blot" -i protocolsio
# Import a protocol
rhylthyme-import import "https://www.protocols.io/view/western-blot-..." -o protocol.json --pretty
CLI Commands
# List all available importers
rhylthyme-import list
# Import from any supported URL (auto-detects importer)
rhylthyme-import import <url> [-o output.json] [--pretty]
# Search using a specific importer
rhylthyme-import search <query> -i <importer>
Python API
from rhylthyme_importers import TheMealDBImporter, ProtocolsIOImporter, ImporterRegistry
# TheMealDB
mealdb = TheMealDBImporter()
results = mealdb.search("pasta")
result = mealdb.import_from_url("52771")
if result.success:
program = result.program
print(f"Imported: {program['name']}")
# Protocols.io
protocolsio = ProtocolsIOImporter(access_token="your_token")
result = protocolsio.import_from_url("https://www.protocols.io/view/...")
# Auto-detect importer from URL
importer = ImporterRegistry.find_for_url("https://www.themealdb.com/meal/52771")
if importer:
result = importer.import_from_url("https://www.themealdb.com/meal/52771")
Creating Custom Importers
Extend the BaseImporter class to create new importers:
from rhylthyme_importers import BaseImporter, ImportResult, ImporterRegistry
class MyCustomImporter(BaseImporter):
name = "myimporter"
description = "Import from my custom source"
supported_domains = ["example.com"]
def can_import(self, url_or_query: str) -> bool:
return "example.com" in url_or_query
def search(self, query: str) -> list:
# Return list of {name, url, description}
return []
def import_from_url(self, url: str) -> ImportResult:
# Fetch data and convert to Rhylthyme program
program = self.create_base_program(
name="My Program",
description="Description",
environment_type="kitchen",
source_url=url,
source_type="myimporter"
)
# Add tracks, steps, etc.
return ImportResult(success=True, program=program)
# Register the importer
ImporterRegistry.register(MyCustomImporter())
Publishing to PyPI
To publish this package to PyPI:
# Install build tools
pip install build twine
# Build the package
cd rhylthyme-importers
python -m build
# Upload to TestPyPI first (optional)
python -m twine upload --repository testpypi dist/*
# Upload to PyPI
python -m twine upload dist/*
You'll need PyPI credentials configured in ~/.pypirc or use environment variables:
TWINE_USERNAME/TWINE_PASSWORDorTWINE_API_TOKEN(recommended)
License
Apache License 2.0
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
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 rhylthyme_importers-0.2.0.tar.gz.
File metadata
- Download URL: rhylthyme_importers-0.2.0.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5335601f955ae4377d650d0bcb5ea11b4ff5ee373dbf0ae31b72439efb6d5845
|
|
| MD5 |
a7a1cd87412ab324fa0fc2b94f3da1e3
|
|
| BLAKE2b-256 |
05ceb5171e04d2b31e88ea9ac282593cb7f25547ffd3f0ac61beb6d12a3bb928
|
File details
Details for the file rhylthyme_importers-0.2.0-py3-none-any.whl.
File metadata
- Download URL: rhylthyme_importers-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ffc958408b35c24703339d9abb1675d2e823bb54562297bb3a60fafcd0208e1
|
|
| MD5 |
2a5bc1e38dc947a48b492a4b0453d954
|
|
| BLAKE2b-256 |
ea5b45980848c106ec365673fa57725b839b8df8d5f9bed819e7a649f621d56b
|