# Changelog of Movie Script Finder & Extractor (`thescrapelab/screenplay-script-scraper`) Actor

- **URL**: https://apify.com/thescrapelab/screenplay-script-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/thescrapelab/screenplay-script-scraper.md

## Changelog

### 0.4.0

- Changed `searches` runs to emit `script_chunk` rows for each matched script when public text is available, instead of stopping at metadata-only output
- Changed `searches` runs to fall back to compact metadata rows when a matched title has no public script text to extract
- Switched multi-phase search crawling to phase-specific request queues so local and cloud runs stay stable across source fallbacks
- Added a validation check that keeps `package.json` and `.actor/actor.json` version numbers aligned for cleaner Git-based builds
- Fixed IMSDb detail pages with broken `Read Script` links so they no longer emit the generic `/scripts` URL as if it were a screenplay result
- Added an offline IMSDb extractor regression test and a lightweight GitHub Actions CI workflow for public maintenance

### 0.3.0

- Added simple pay-per-event support for a single `movie_script` event charged once per emitted script
- Stopped the crawler gracefully when the pay-per-event charge limit is reached
- Simplified the public input further so users only need `movieName` or `searches`
- Made `movieName` return the single top screenplay match with chunk rows
- Made `searches` return a compact list of matching scripts instead of full-text output
- Removed repetitive `hasScriptText: false` values from metadata-only search rows
- Simplified the input schema by removing manual `sources`, `memoryMode`, and browser fallback options
- Made the Actor automatically try all supported sources in a fixed low-memory crawl order
- Compacted success rows so unknown fields are omitted instead of emitted as `null`
- Removed noisy always-empty success fields like `errorMessage` from normal dataset rows
- Cleaned analysis locations by stripping trailing source-style tags such as `(MATRIX)`
- Added the missing `open` dependency so `apify run` works again in local development
- Improved search-only runs so `extractScriptText = true` prefers text-capable matches over metadata-only PDF/external hits
- Changed source-wide search seeding to run in fallback order, stopping early once enough scripts are found
- Avoided unnecessary IMSDb fallback searches for already-canonical `/scripts/Matrix,-The.html` style URLs
- Added explicit `buildTag: "latest"` to the actor config so future Apify pushes keep the cloud `latest` build tag aligned
- Made search matching more forgiving for multi-word queries by ignoring generic terms like `script` and `screenplay`
- Improved direct Daily Script metadata extraction so titles and writers come from the screenplay text instead of noisy HTML page titles
- Changed invalid or unsupported input error rows to emit `source: "unknown"` instead of mislabeling them as a supported source
- Hardened Daily Script handling for unsupported `.doc`/`.rtf` style files so they stay metadata-only instead of triggering crawler errors
- Changed search-discovered IMSDb detail pages with no reachable script text to be skipped as metadata-only candidates when full text is requested
- Simplified the public input schema to focus on the most important run settings
- Reduced default output volume by lowering the default `maxScripts`, turning analysis off by default, and trimming analysis arrays
- Renamed the actor to `Movie Script Finder & Extractor` and added a repo logo asset

### 0.2.0

- Normalized trailing-article titles such as `Matrix, The` into `The Matrix` for cleaner metadata and stable IDs
- Fixed `sceneCount` to count total scene headings instead of only unique headings
- Normalized scene headings before chunking and analysis so chunk titles and top locations are cleaner
- Labeled pre-scene text chunks as `Front Matter` instead of a generic numbered chunk

### 0.1.0

- Initial IMSDb-first release
- Added low-memory Cheerio-first crawl architecture
- Added row-based output for `script_metadata`, `script_chunk`, `script_analysis`, and `error`
- Implemented chunking by scene, fixed size, and paragraph
- Implemented approximate screenplay analysis helpers
- Added public-only compliance messaging and marketplace-ready README
