{"id":28444708,"url":"https://github.com/ideoforms/subvertle","last_synced_at":"2026-05-09T19:36:25.261Z","repository":{"id":1312942,"uuid":"1257687","full_name":"ideoforms/subvertle","owner":"ideoforms","description":"A framework to access, translate and synthesise BBC iPlayer subtitles.","archived":false,"fork":false,"pushed_at":"2011-05-07T12:56:45.000Z","size":265,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-06T09:09:59.427Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/ideoforms.png","metadata":{"files":{"readme":"README","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":"2011-01-15T13:52:33.000Z","updated_at":"2025-03-12T23:36:27.000Z","dependencies_parsed_at":"2022-08-16T13:05:08.095Z","dependency_job_id":null,"html_url":"https://github.com/ideoforms/subvertle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ideoforms/subvertle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ideoforms%2Fsubvertle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ideoforms%2Fsubvertle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ideoforms%2Fsubvertle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ideoforms%2Fsubvertle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ideoforms","download_url":"https://codeload.github.com/ideoforms/subvertle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ideoforms%2Fsubvertle/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262647254,"owners_count":23342622,"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":"2025-06-06T09:09:59.221Z","updated_at":"2026-05-09T19:36:20.221Z","avatar_url":"https://github.com/ideoforms.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"SUBVERTLE\n-----------------------------------------------------------------------\n\nSubvertle is a set of tools to extract, manipulate and synthesize BBC iPlayer\nsubtitles, created for Culture Hack Day London 2011.\n\nIts main constituents are:\n - python/subvertle/iplayerlib.py   - a Python library to access iPlayer metadata\n - python/subvertle/translate.py    - a translation framework, to iteratively transform\n                                      text into different dialects\n - python/subvertle/singSomeText.py - an interface to the Canoris web service, to\n - python/web/subvertle-web.py      - a Flask-based web framework to access, translate\n                                      and serve iPlayer subtitles\n - python/web/subvertle-web.py      - a Flask-based web framework to access, translate\n                                      and serve iPlayer subtitles\n\n - greasemonkey/iplayer_subtitles.user.js\n                                    - a Greasemonkey (Firefox) script which overlays\n                                      subtitles onto iPlayer by interfacing with the\n                                      subvertle-web service.\n\nREQUIREMENTS\n-----------------------------------------------------------------------\n\nFor the iPlayer library (iplayerlib.py), no libraries are required.\nPython 2.5+ is supported.\n\nA number of python module dependencies are present for additional functionality:\n - nltk (for translation)\n - swmixer, canoris (for singing)\n - Flask (for web services)\n - xgoogle.translate (for language translation):  \n\thttp://www.catonmat.net/blog/python-library-for-google-translate/)\n\nUSAGE\n-----------------------------------------------------------------------\n\nFor an example of the iPlayer interface and translation code in action:\n\n\tcd python\n\tpython example.py \u003ciplayer_programme_url\u003e\n\n\n\nTranslation\n-----------------------------------------------------------------------\n\nThe subtitles can be arbitrarily transformed through the connection of translation\n'pipes'. The 'plumber' object takes a list of pipe names in its constructor, and will\nthen sequentially run any text it is given to process() through these  'pipes'. All \npipe definitions are in subvertle/pipes, the process is straight-forward and creation of\nmore should be easy. Currently there exists:\n - expletive: adds swear words at appropriate points (using nltk)\n - language: use Google Translate to convert between languages\n - swap: general module for performing basic substitution\n - lolspeak: exactly what it says on the tin, annoying but easy to implement\n\nThe plumber object can be created thus:\n\ntranslator = plumber([\"expletive\"]) # just add expletives\n\ntranslator = plumber([\"lolspeak\",\"expletive\"]) # make lolspeak, then add expletives\n\n# add expletives, translate to Spanish then French and back to English, finally make lolspeak\n# note that the languages are their own list\ntranslator = plumber([\"expletive\",[\"es\",\"fr\",\"en\"],\"lolspeak\"]) \n\nText can then be processed simply using:\ntranslationString = translator.process(originalString)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fideoforms%2Fsubvertle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fideoforms%2Fsubvertle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fideoforms%2Fsubvertle/lists"}