{"id":18495113,"url":"https://github.com/notpeter/legiscrape","last_synced_at":"2025-06-25T08:07:23.570Z","repository":{"id":62575516,"uuid":"85535443","full_name":"notpeter/legiscrape","owner":"notpeter","description":"Legistar \u0026 Granicus Video Scraper","archived":false,"fork":false,"pushed_at":"2018-08-04T18:01:00.000Z","size":52,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-10T10:01:31.204Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/notpeter.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-20T04:31:43.000Z","updated_at":"2024-08-28T12:05:40.000Z","dependencies_parsed_at":"2022-11-03T18:57:16.247Z","dependency_job_id":null,"html_url":"https://github.com/notpeter/legiscrape","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/notpeter/legiscrape","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notpeter%2Flegiscrape","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notpeter%2Flegiscrape/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notpeter%2Flegiscrape/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notpeter%2Flegiscrape/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/notpeter","download_url":"https://codeload.github.com/notpeter/legiscrape/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notpeter%2Flegiscrape/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261832678,"owners_count":23216497,"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-06T13:23:32.196Z","updated_at":"2025-06-25T08:07:23.547Z","avatar_url":"https://github.com/notpeter.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Legiscrape - Legistar Meetings / Granicus Video Toolbox\n\n## Note\n\nThis is software is alpha quality.  This is a first step in allowing\nconstiuents to have full access to data currently locked up in\ntheir city's Legistar systems.\n\nI'm building it for Oakland with the intention that it can be used\nin other cities with minimal modification.\n\n## What can it do now?\n\n* Download video and remux into valid MP4\n* Download using multiple connections (2-4x speed up)\n* Manipulate proprietary JSON captions\n  * Create plaintext transcript\n  * Generate standard format captions (SRT and WEBVTT)\n  * Extract Chapter Metadata\n* Combine audio, video, chapters, captions into a single clean MP4\n\n## Usage:\n\nPrerequisites:\n* [Python 3.x](https://www.python.org/downloads/) (Tested with 3.6.0)\n* `brew install ffmpeg mp4box aria2c`\n\n````\npip3 install legiscrape\nlegiscrape-video 20170314_PublicSafetyCommittee.mp4 \"http://oakland.granicus.com/MediaPlayer.php?view_id=2\u0026clip_id=2225\"\n````\n\n## Why?\n\nLegistar and Granicus video are sucky systems.\n\nIn my first week trying to report on an Oakland City Council meeting\nI ran into a number of issues which drove me insane:\n\n1. Chrome/Firefox/Safari can't play video if don't have flash. Period.\n2. MP4 video files aren't always valid MP4 files.\nIf VLC can barely play it, good luck seeking, keeping voice sync or\nusing a less forgiving player.\n3. No ability to link to timestamp in a video (ala YouTube\nt=15m32s)\n4. Captions are in a closed format (and not included in MP4 download)\n5. Underprovisioned servers so playback/download isn't reliable.\n6. No permalinks. Agenda's from 2010 link to servers which don't exist.\n7. It's all a closed system.\n\n## Who\n\nBuilt by Peter Tripp in Oakland.\n\n* github.com/notpeter\n* twitter.com/notpeter\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotpeter%2Flegiscrape","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotpeter%2Flegiscrape","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotpeter%2Flegiscrape/lists"}