{"id":19029327,"url":"https://github.com/guardian/pluto-mediabrowser","last_synced_at":"2025-04-13T12:52:44.988Z","repository":{"id":40680708,"uuid":"486647745","full_name":"guardian/pluto-mediabrowser","owner":"guardian","description":"Simple UI for Vidispine media browsing","archived":false,"fork":false,"pushed_at":"2025-03-24T04:41:14.000Z","size":1003,"stargazers_count":1,"open_issues_count":33,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-13T12:52:38.646Z","etag":null,"topics":["media-asset-management","multimedia-tech","vidispine"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/guardian.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-28T15:22:23.000Z","updated_at":"2025-02-04T16:03:08.000Z","dependencies_parsed_at":"2023-12-05T17:44:25.519Z","dependency_job_id":"2d39e434-27ae-4b71-bc10-1e20306c17d0","html_url":"https://github.com/guardian/pluto-mediabrowser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardian%2Fpluto-mediabrowser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardian%2Fpluto-mediabrowser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardian%2Fpluto-mediabrowser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guardian%2Fpluto-mediabrowser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guardian","download_url":"https://codeload.github.com/guardian/pluto-mediabrowser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248717259,"owners_count":21150388,"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":["media-asset-management","multimedia-tech","vidispine"],"created_at":"2024-11-08T21:13:52.276Z","updated_at":"2025-04-13T12:52:44.962Z","avatar_url":"https://github.com/guardian.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"#  Pluto Media Browser\n\npluto-media-browser is a frontend UI to search and find media items in Vidispine.\n\n## Dev setup\n\n### Prerequisites\npluto-media-browser is written in Javascript and Typescript with the React framework.  Yarn is used as a package manager.\nYou need node.js installed to develop and build it; we use current LTS version 12.18.\n\nYou should also have a working Vidispine installation.  The easiest way to get this is to download \nhttps://gitlab.com/codmill/customer-projects/guardian/prexit-local and follow the instructions in both the root README\nand the `vidispine/` subdir README.\n\nAuthentication to Vidispine is performed with bearer tokens.  The `prexit-local` minikube setup includes a setup of\nKeycloak to use as a local ID provider. Follow the instructions there to configure Vidispine to use it.\n\n### Vidispine initial setup\npluto-media-browser expects certain metadata fields and groups to be present in Vidispine.  These are detailed in the\n`vs-metadata/` subdirectory.\nOnce you have working Vidispine (see the prexit-local instructions about configuring the APIinit and initial user!!),\nthen you can ingest these definitions be using the `deploy.py` tool in the `vs-metadata` subdirectory:\n```\n$ cd vs-metadata\n$ ./validate.py metadata/g_asset.xml\n$ ./deploy.py --host vidispine.local --port 80 --passwd admin --file metadata/g_asset.xml\n$ [repeat the above two lines for the other files in metadata/]\n```\n\n### Setup\nTo build a dev version (non-stripped for debugging), then run:\n```\n$ yarn install\n$ yarn update-interfaces\n$ yarn test\n$ yarn dev\n```\n\nOnce you have the javascript bundle, you need to run it in a browser.\nUnfortunately this is not as simple as just double-clicking an index.html file in the tree because it needs to be able\nto pull in external resources and do CORS requests to Vidispine.\n\nTo start up on port 8000 locally, you can run:\n```shell script\n$ cd build\n$ ./runlocal.sh\n```\n\nThis will build a docker image and dynamically link the current state of bundle.js into it.  You can access it at\nhttp://localhost:8000.  If you do so with the cache off then the bundle will get reloaded on every request and you\ncan take advantage of webpack's dynamic rebuilding.\n\nThe config will be supplied by the `default_config.json` file in `build/`.  This points you to `http://vidispine.local`\nfor Vidispine access, which is the expected configuration from prexit-local.  If you are running a different way,\nyou'll need to update the vidispine configuration.\n\n### Troubleshooting\n0. If you get an error doing yarn install when installing  https://gitlab.com/codmill/customer-projects/guardian/pluto-headers.git,\nyou should:\n    1. Configure a git credential helper for your platform. See https://blog.scottlowe.org/2016/11/21/gnome-keyring-git-credential-helper/ for gnome,\n Mac should have one set up already I believe.\n    2. In a temporary location run `git clone https://gitlab.com/codmill/customer-projects/guardian/pluto-headers.git` and\n    supply your gitlab username and password. This should store them in the credential helper.\n    3. Now `yarn install` should work.\n1. Turn on the browser console!\n2. If you are getting permission denied from VS on OPTIONS requests, then CORS is not set up properly.  The following\nCORS configuration works for me:\n    ```xml\n    \u003cCORSConfigurationDocument xmlns=\"http://xml.vidispine.com/schema/vidispine\"\u003e\n        \u003centry\u003e\n            \u003crequest\u003e\n                \u003cheaderRegex\u003e\n                    \u003ckey\u003eauthorization\u003c/key\u003e\n                    \u003cvalue\u003e.*\u003c/value\u003e\n                \u003c/headerRegex\u003e\n            \u003c/request\u003e\n            \u003cresponse\u003e\n                \u003callowOrigin\u003e*\u003c/allowOrigin\u003e\n                \u003callowHeaders\u003e*\u003c/allowHeaders\u003e\n            \u003c/response\u003e\n        \u003c/entry\u003e\n    \u003c/CORSConfigurationDocument\u003e\n    ```\n   See https://apidoc.vidispine.com/latest/system/property.html#cors-configuration for more information\n3. If you are getting permission denied from VS for other requests, then the issue is probably not CORS.  Check that\nyour bearer token signing certificate is correctly set up, and check that the token is not expired!\n\n### Running in prexit-local context\n\nTBD!!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguardian%2Fpluto-mediabrowser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguardian%2Fpluto-mediabrowser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguardian%2Fpluto-mediabrowser/lists"}