Skip to main content

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_PASSWORD or
  • TWINE_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

rhylthyme_importers-0.1.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

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

rhylthyme_importers-0.1.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for rhylthyme_importers-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cdf55fbe8b1bcb787221024571d4c90325d8224a64eb8e17d55b3e08269ce840
MD5 98c21663b8ec2c8fcabab5ab3f763f14
BLAKE2b-256 524bdf3cbd74c52cc2ffe2bb7cb1ee8cf4eb9c991f0b0da3b65caf54bb0abdae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rhylthyme_importers-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 458410988be80f1b9ee9ed1c6ab7c5f784fffdbd9626e88333cc0738c4f45ef2
MD5 1ed02998c12ffbd2a4d70497f1c7effb
BLAKE2b-256 40e1e00c78b043b44afa26e57b4264b609e838cb945724cfb626a55f4cb63ee0

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