{"id":19989228,"url":"https://github.com/maaack/screenplayreader","last_synced_at":"2025-07-02T14:07:12.924Z","repository":{"id":16387239,"uuid":"79860393","full_name":"Maaack/ScreenplayReader","owner":"Maaack","description":"Tool for reading files in screenplay formats and parsing their structure.","archived":false,"fork":false,"pushed_at":"2022-12-08T00:51:40.000Z","size":169,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-01T21:48:27.380Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Maaack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-23T23:42:23.000Z","updated_at":"2022-01-14T05:53:12.000Z","dependencies_parsed_at":"2023-01-11T19:20:14.933Z","dependency_job_id":null,"html_url":"https://github.com/Maaack/ScreenplayReader","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Maaack/ScreenplayReader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maaack%2FScreenplayReader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maaack%2FScreenplayReader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maaack%2FScreenplayReader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maaack%2FScreenplayReader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Maaack","download_url":"https://codeload.github.com/Maaack/ScreenplayReader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Maaack%2FScreenplayReader/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263154247,"owners_count":23422008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T04:45:56.722Z","updated_at":"2025-07-02T14:07:12.900Z","avatar_url":"https://github.com/Maaack.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Screenplay Reader\nA tool for reading files in screenplay formats and parsing their structure.\n\n## Basic Idea\nUpload a screenplay in .txt, .pdf, .fdx, and so on and get it parsed into\nthe different recognizable parts of a screenplay. Get the output through\nthe REST framework, or alternative future methods.\n\n## What does it do right now?\n### Input\nTakes plaintext of a screenplay, where newlines separate distinct sections\n(ie. location, character, action, dialogue)\n\n### Output\nOutputs a csv of one scene per row, marking characters present.\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003cth\u003eScene Number\u003c/th\u003e\n        \u003cth\u003eLocation\u003c/th\u003e\n        \u003cth\u003eCharacter #1\u003c/th\u003e\n        \u003cth\u003eCharacter #2\u003c/th\u003e\n        \u003cth\u003eCharacter #3\u003c/th\u003e\n        \u003cth\u003eCharacter #4\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e1\u003c/td\u003e\n        \u003ctd\u003eCrime Scene\u003c/td\u003e\n        \u003ctd\u003eX\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e2\u003c/td\u003e\n        \u003ctd\u003ePolice Station\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eX\u003c/td\u003e\n        \u003ctd\u003eX\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e3\u003c/td\u003e\n        \u003ctd\u003eHideout\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eX\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\n## How To Run\n### Requirements\n* docker\n* docker-machine\n\n### Setup\n1. Navigate into the base folder.\n1. Run `docker-compose up`\n1. :fire::fire::fire:\n\n1. You'll need to run migrations on the database to get it caught up.\n   ```\n   $\u003e sudo docker exec -it screenplayreader_web_1 /bin/bash\n   timekeeper_web_1$\u003e python manage.py makemigrations\n   timekeeper_web_1$\u003e python manage.py migrate\n   ```\n1. Open your browser to [localhost][1].\n\n### Usage\n\n#### Importing Content\n1. Visit the [Importer app API root][2].\n1. Send a POST request of your content to the [ImportedContent endpoint][2.1]. \n\n#### Parsing Content\n1. Visit the [Importer app API root][2].\n1. Create a new [ParseOperation][2.2] and [run the operation][2.3]. \n\n#### Interpreting Content\n1. Visit the [Interpreter app API root][3].\n1. Create a new [InterpretOperation][3.1] and [run the operation][3.2]. \n\n#### Exporting Content\n1. Visit the [Exporter app API root][4].\n1. Navigate to a [Screenplay][4.1] created by the [Interpreter][3].\n1. Download [Basics CSV][4.2] or [Character Breakout CSV][4.3].\n\n## Structure\nDjango-based site with REST API framework\n\n* `screenplayreader` - Django project\n  * `importer` - Django application\n  * `interpreter` - Django application\n  * `exporter` - Django application\n\n## Additional Resources\n* [Writing your first Django App Tutorials][10]\n* [Django REST framework Documentation][11]\n* [REST API Quick Tips][12]\n* [API Cheatsheet][13]\n\n\n[1]: http://localhost:8000/\n[2]: http://localhost:8000/importer/\n[2.1]: http://localhost:8000/importer/imported-content/\n[2.2]: http://localhost:8000/importer/parse-operations/\n[2.3]: http://localhost:8000/importer/parse-operations/{:pk}/run-operation\n[3]: http://localhost:8000/interpreter/\n[3.1]: http://localhost:8000/interpreter/interpret-operations/\n[3.2]: http://localhost:8000/interpreter/interpret-operations/{:pk}/run-operation\n[4]: http://localhost:8000/exporter/\n[4.1]: http://localhost:8000/exporter/screenplays/\n[4.2]: http://localhost:8000/exporter/screenplays/{:pk}/basics-csv\n[4.3]: http://localhost:8000/exporter/screenplays/{:pk}/character-csv\n[10]: https://docs.djangoproject.com/en/2.0/intro/tutorial01/\n[11]: http://www.django-rest-framework.org/\n[12]: http://www.restapitutorial.com/lessons/restquicktips.html\n[13]: https://github.com/RestCheatSheet/api-cheat-sheet#api-design-cheat-sheet\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaaack%2Fscreenplayreader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaaack%2Fscreenplayreader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaaack%2Fscreenplayreader/lists"}