Skip to content

Repository files navigation

Printables importer for Manyfold

Tests

Import a public Printables model into your self-hosted Manyfold library by pasting its URL into Add content → Import URL.

This unofficial community plugin fetches the model's files and metadata through Printables' GraphQL API, retrieves the description page through your internal FlareSolverr service, and parses it with Nokogiri. No Printables API key is required for the public models tested.

Experimental release. Tested end-to-end with Manyfold 0.150.0 in the LinuxServer Docker image. Other Manyfold versions have not been verified. See validation and limitations.

What gets imported

  • Model title, description text with links, creator, and tags.
  • All model gallery images, the main preview image, and original source link.
  • Files from all four API categories: stls, gcodes, slas, and otherFiles.
  • License wording in the description. The structured Manyfold license field is left unchanged.

The API's stls category can contain other formats, including OpenSCAD source files. File categories are taken from the API, not guessed from the filename. Signed download links are resolved just before each download. File IDs keep duplicate filenames separate.

Private/paid models, entire collections, ratings, and download counts are not supported. SLA and other-file categories have fixture and API enum validation, but no real-download test yet. Downloaded G-code is stored in the library; this plugin does not send it to a printer.

Requirements

  • Manyfold 0.150.0 with a writable default library and running background worker.
  • Persistent plugin storage accessible to both Manyfold's web and worker processes.
  • FlareSolverr reachable from Manyfold as http://flaresolverr:8191/v1 on a shared Docker network. Give the service the network alias flaresolverr if it has another container name.
  • Outbound HTTPS access to Printables and its file/image hosts.

The plugin uses gems already available in the tested Manyfold image. Do not install its development Gemfile into your Manyfold container.

Install on Unraid / LinuxServer

  1. Download manyfold_printables-0.2.0.zip from Releases.

  2. Extract it into a plugins directory inside your Manyfold appdata folder. Keep the inner directory named manyfold_printables.

  3. Check that the file inside the running container will be /config/plugins/manyfold_printables/manyfold_printables.gemspec. Avoid an extra nested directory.

  4. Edit the Manyfold container in Unraid. Add these Variable entries:

    Key Value
    PLUGINS_PATH /config/plugins
    PRINTABLES_STATE_PATH /config/printables-state
  5. Ensure the plugin directory is readable and the state directory is writable by the container's configured user (PUID/PGID). Create the state directory if necessary.

  6. Put Manyfold and FlareSolverr on the same custom Docker network. Do not publish FlareSolverr's port to the internet.

  7. Apply the container settings and restart Manyfold. If workers run in another container, update and restart those too.

  8. Open Site Settings → Plugins and check that manyfold_printables appears.

For MariaDB/MySQL, make sure the DATABASE_URL includes encoding=utf8mb4: append ?encoding=utf8mb4 if there is no query string, or &encoding=utf8mb4 if other query settings already exist. Preserve the rest of the URL and keep it private. Apply/restart both web and worker containers. The database columns must also support utf8mb4; changing only the database default does not change existing columns. This is required for descriptions containing emoji. See Docker configuration.

For other Docker installations, mount a persistent directory at /plugins, set PLUGINS_PATH=/plugins, and put the plugin at /plugins/manyfold_printables. Mount a separate writable persistent directory for PRINTABLES_STATE_PATH. See the Docker configuration guide.

Manyfold 0.150.0 uploader caveat: its plugin upload page writes into the application's default plugins directory, even when PLUGINS_PATH points somewhere else. Install directly into your chosen persistent directory as described above.

Use

  1. Open Add content → Import URL.
  2. Paste a model URL, for example https://www.printables.com/model/3161-3d-benchy.
  3. Review the displayed capabilities, then choose Import this link.
  4. Wait for the background import. Check the description, source link, and file list on the new model.

Printables appears in the import form's Supported sites list. Its checkmark reflects whether the plugin is enabled; it is not a live FlareSolverr health check.

The plugin accepts model URLs with locale prefixes, slugs, query strings, and common tabs such as /files. It uses the same importer for every accepted model URL.

To refresh an imported model, use Synchronize next to its Printables source link. Re-sync can replace notes edited in Manyfold. Manyfold checks duplicates using the exact submitted URL, so reuse the same URL rather than importing slug variations of the same model.

Settings

Variable Default Purpose
PRINTABLES_ENABLED true Set to false to disable Printables URL recognition.
PRINTABLES_STATE_PATH A temporary directory Set to persistent writable storage to retain rate-limit cooldowns across restarts.
PRINTABLES_REQUEST_INTERVAL 2 Minimum seconds between API/page requests; values below 2 are clamped to 2.
PRINTABLES_FLARESOLVERR_URL http://flaresolverr:8191/v1 Currently only this internal endpoint is accepted. Use the Docker alias flaresolverr.

Requests are serialized across processes using a file lock. HTTP 429 responses impose at least a five-minute cooldown and honor longer Retry-After values. The tests do not contact Printables. Import one model at a time; this is not a bulk crawler. Multiple worker containers must share the rate-limit state directory on storage that supports file locking.

Update, disable, or remove

Back up the plugin folder, replace it in place with the new release, and restart the web and worker processes. Keep only one copy inside the active plugin directory.

To disable the plugin, set PRINTABLES_ENABLED=false and apply/restart the container. To remove it, move manyfold_printables outside the active plugin directory and restart. Previously imported library content remains.

If Manyfold fails to start after an update, move the plugin folder outside the active directory and restart. Report the versions and relevant redacted error text in an issue.

Troubleshooting

  • URL not recognized: check plugin folder nesting, PLUGINS_PATH, and that both web and worker processes restarted.
  • Description missing or challenge failed: check FlareSolverr is running and reachable on the shared network. The importer stops rather than saving a challenge page as a description.
  • Cooling down / HTTP 429: wait for the cooldown before retrying. Do not shorten or remove the limiter.
  • Emoji / incorrect string value: use encoding=utf8mb4 for the MySQL/MariaDB connection and ensure the text columns support full Unicode. The plugin reports a connection-encoding problem without discarding emoji.
  • Partial model: a failed import can leave an incomplete model. Inspect its source-link problem, resolve the cause, and synchronize again. A placeholder title is not a completed import.
  • License capability shows unavailable: expected; the license wording is preserved in notes rather than mapped to a guessed SPDX identifier.
  • New Manyfold version: this plugin extends an internal importer method. Check compatibility before upgrading a production installation.

Development

Use Ruby 3.4 in a separate development environment:

bundle install
bundle exec ruby test/all.rb

GitHub Actions runs the fixture tests without any Printables requests. Architecture notes explain how the plugin hooks into Manyfold.

License and acknowledgments

AGPL-3.0-only; see LICENSE and NOTICE.md. This is an independent community project, not an official Manyfold, Printables, Prusa Research, or FlareSolverr release. The initial implementation was developed with AI assistance and tested on a real self-hosted instance.

About

Unofficial Printables.com URL importer for Manyfold, with full gallery downloads and internal FlareSolverr support

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages