Skip to content

Conversation

@RyanAtNight
Copy link
Contributor

@RyanAtNight RyanAtNight commented Jan 5, 2026

Summary

Adds the ability to scrape and import studio logo images from Stash-box endpoints (like StashDB) directly from the studio edit page.

Motivation

When studios are initially created through regular web scrapers (rather than Stash-box endpoints), their logo images are often not imported. This PR addresses the workflow gap by making it easy to retroactively import studio images from Stash-box sources without having to manually download and upload them.

Previously, adding a logo to an existing studio required:

  1. Finding the studio on an external source
  2. Downloading the image manually
  3. Uploading it through the UI

This PR streamlines that process to just a few clicks using Stash-box endpoints.

Changes

Core Features:

  • Stash-box Search Modal (StudioStashBoxModal.tsx): Search for studios by name on configured Stash-box endpoints (e.g., StashDB), preview results, and import images
  • Stash-box Scrape Dialog (StudioScrapeDialog.tsx): Review and selectively import scraped studio data including images
  • Unified Scraper Menu: Integrated Stash-box scraping into the studio edit panel with "Query Stash-box..." button

UI/UX Improvements:

  • Positioned second row of scraper buttons at the top of the form for better visibility and accessibility (to make the layout of the Performers detail edit page and in cause the Studio edit detail page gets longer)
  • Image preview in scrape dialogs before importing
  • Support for scraping other studio fields (name, URLs, details, aliases, tags) alongside images

Technical Details:

  • Button Layout Refactoring: Refactored the .details-edit button bar to use a renderButtons() function (modeled after the Performers detail edit page pattern). The previous implementation only allowed custom buttons to be appended to the right side of the "Set Image" and "Clear Image" buttons, making it impossible to control button ordering. The new approach provides consistent button layout matching the Performers page, which users are already familiar with.
  • Added comprehensive internationalization support (scrape_query and scrape_with strings across all locale files)
  • Added key prop to StudioEditPanel to force remount and ensure clean state after scraping

Screenshots

image image image image

Testing

  • Searching for studios on StashDB
  • Importing studio images from Stash-box results
  • Verifying other studio fields can be scraped alongside images
  • Confirming button layout matches Performers page pattern

@RyanAtNight
Copy link
Contributor Author

I'm looking into a CSS tweak to fix that visual bug where the logo image overflows outside of its area like the last screenshot I have there.

@RyanAtNight
Copy link
Contributor Author

Studio image problem fixed with 1de6675
Before:
image

After:
image

Implements comprehensive studio image scraping with:
- StashBox integration via StudioStashBoxModal component
- URL-based web scraping via StudioScrapeDialog component
- Scraper menu integration in studio editor
- Basic English localization (en-GB)

This feature allows users to import studio images from:
1. StashBox search by studio name
2. Direct URL scraping via configured scrapers

UI components include modal dialogs for search results and
scraper output with image preview and import functionality.
This fixes an issue where newly added Stash IDs wouldn't appear in the
component until the page was refreshed, by forcing a remount when the
studio data changes.
This completes internationalization support for the scraper menu across
all 26 supported languages.
This improves visibility and accessibility of scraping features by
placing them in a more prominent location.
@RyanAtNight RyanAtNight force-pushed the feature/studio-image-from-stash-id branch from 1de6675 to 401e2d8 Compare January 6, 2026 03:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant