{"id":15537060,"url":"https://github.com/nikolas/openvault","last_synced_at":"2025-09-05T16:08:17.893Z","repository":{"id":138008710,"uuid":"45129801","full_name":"nikolas/openvault","owner":"nikolas","description":null,"archived":false,"fork":false,"pushed_at":"2015-10-28T19:55:34.000Z","size":123704,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-20T14:51:54.277Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":false,"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/nikolas.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":"2015-10-28T17:25:54.000Z","updated_at":"2023-09-08T17:03:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"f77c1aff-f9cd-42ef-a339-80b1e90df797","html_url":"https://github.com/nikolas/openvault","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/nikolas%2Fopenvault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikolas%2Fopenvault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikolas%2Fopenvault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikolas%2Fopenvault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikolas","download_url":"https://codeload.github.com/nikolas/openvault/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246113002,"owners_count":20725371,"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-10-02T11:54:41.441Z","updated_at":"2025-03-28T23:22:33.444Z","avatar_url":"https://github.com/nikolas.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/afred/openvault.png)](https://travis-ci.org/afred/openvault)\n\n# Openvault\n\n[Openvault](http://openvault.wgbh.org) is Rails/Hydra application which makes available to the public\nmost of the metadata for WGBH media assets, and a small selection of our media.\n\n## Related projects\n\n**Boston TV News Digital Library**: \n([site](http://bostonlocaltv.org) [github](https://github.com/WGBH/bostonlocaltv))\nFootage from WGBH's *Ten O'Clock News* is here, along with footage from other area broadcasters.\n(It's probably more difficult than it ought to be for people on Openvault to discover the News site.)\n\n**Stock Sales**:\n([site](http://www.wgbhstocksales.org/) [github](https://github.com/WGBH/stock_sales))\nIf folks want to purchase footage, they should be directed to Stock Sales.\nMore connections between the two site might promote more sales.\n\n**PBCore**: ([docs](http://pbcore.org/)) An XML standard for public broadcasting metadata.\nThis is what we store in Fedora. You shouldn't need to worry about the details: access is \nprovided through `PbcoreDescDoc` which extends `ActiveFedora::OmDatastream`.\n\n**Blog**:\n([site](http://blog.openvault.wgbh.org/) [config github](https://github.com/WGBH/openvault-blog))\nIn the earlier version of the site, all of wordpress was checked in to this codebase.\nNow it's its own site, with just the configuration tweaks to the default installation checked in.\nThe downside is that nothing is keeping the style in sync between these two sites.\n\n**Media server**:\nYou shouldn't need to worry about the media server, except to note that it blocks requests from\nhosts it hasn't white-listed. For development, if you actually want to see media, add\n\"`127.0.0.1  localhost.wgbh.org`\" to your `/etc/hosts`\n\n**Digital Commonwealth**:\n([site](https://www.digitalcommonwealth.org/))\nThey (hopefully) harvest our content via OAI-PMH. They are interested only is media, and not in\nour \"Program\" or \"Series\" records.\n\n## Operations\n\n### Deploy\n\nMerge latest changes into master and redeploy\n```\n$ git checkout master\n$ git pull\n$ bundle exec cap --verbose staging deploy\n  # There are incompatibilities between major versions of capistrano:\n  # 'bundle exec' makes sure you're using the one specified in Gemfile.\n```\n\n(You will need to supply a password.)\nWhen complete, check http://openvault-staging.wgbh.org/; if it looks good:\n```\n$ bundle exec cap --verbose production deploy\n```\n\n(Password, again.) Check http://openvault.wgbh.org/ to confirm that the deployment worked.\n\n### Ingest\n\n#### Metadata\n\n**Note**: Ruby warnings go to STDOUT, but to tell whether it completed successfully,\nyou need to look in the `logs` directory.\n\nFor managing the source metadata, we have a git repo at http://atlas.wgbh.org/stash with all the pbcore xml,\nand we have a checkout of this repo on the production server. To reingest:\n```\n$ ssh openvault@lsopenvault01.wgbh.org\n$ cd /wgbh/http/openvault/current\n$ RAILS_ENV=production bundle exec rake openvault:ingest \\\n   file=/wgbh/http/openvault/openvault_ingest_data/pbcore_xml_from_artesia/all_assets/FOR-EXAMPLE.xml\n```\n\nYou can also set a mode to determine how conflicts are handled.\n\n#### Transcripts\n\nIf a transcript is missing, there are two steps to fix it:\n- Load metadata to create Transcript object\n- Load the actual text of the transcript\n\nThe first step is the same as any metadata load. The second is messier because we haven't made a rake task yet.\n```\n$ RAILS_ENV=production bundle exec rails c\n\u003e video = Video.find(slug: 'put-the-url-slug-here').first\n\u003e require 'openvault'\n\u003e require 'openvault/transcript_ingester'\n\u003e Openvault::TranscriptIngester.ingest_tei_xml_specified_by_pbcore!(\n    video.transcripts.first, \n    '/wgbh/http/openvault/openvault_ingest_data/transcripts_tei_xml/all_transcripts/')\n    # Second argument is directory where the file can be found.\n```\n\n### Debug\n\nOn the server:\n\n- Consult the logs.\n- Look at the PBCore for a record: append `.pbcore` to any URL.\n- Look at the Solr result for a record: append `.solr` to any URL.\n- As a *last* resort, the files can be tweaked live, but it's under Passenger, to recompile isn't automatic.\n\nLocally:\n\n- rspec\n- byebug\n\n## Internals\n\n### `routes.rb`\n\n- There are a lot of adhoc redirects so that old references we found with webmaster tools don't break.\n- Any URL which isn't matched by anything more specific falls through to the `OverrideController`\n\n### `controllers/`\n\nAt the heart of a Blacklight application is the `CatalogController`.\nThe most important tweak in ours is `#lookup_and_set_fields` which allows items to be found by a slug we've assigned.\n\n### `models/`\n\nThe most important are the subclasses of `OpenvaultAsset`:\n- A `Series` has multiple ...\n- `Program`s which in turn have\n- `Video`,\n- `Audio`,\n- `Image`, and\n- `Transcript`\n\nInstances are linked in Fedora, and these links are exposed in the UI.\n\n### `views/`\n\n*TODO*\n\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikolas%2Fopenvault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikolas%2Fopenvault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikolas%2Fopenvault/lists"}