{"id":21485314,"url":"https://github.com/igneus/lyv","last_synced_at":"2025-03-17T09:45:42.902Z","repository":{"id":15526003,"uuid":"18260503","full_name":"igneus/lyv","owner":"igneus","description":"access content of lilypond files with ruby","archived":false,"fork":false,"pushed_at":"2024-02-17T13:54:03.000Z","size":52,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-23T19:26:28.331Z","etag":null,"topics":["lilypond","ruby"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/igneus.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":"2014-03-30T08:41:41.000Z","updated_at":"2024-02-17T13:54:06.000Z","dependencies_parsed_at":"2025-01-23T19:25:54.111Z","dependency_job_id":"760892d4-a2a9-47f9-84d7-b5aaafb2dd5a","html_url":"https://github.com/igneus/lyv","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/igneus%2Flyv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igneus%2Flyv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igneus%2Flyv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igneus%2Flyv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igneus","download_url":"https://codeload.github.com/igneus/lyv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244013291,"owners_count":20383707,"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":["lilypond","ruby"],"created_at":"2024-11-23T13:14:52.235Z","updated_at":"2025-03-17T09:45:42.878Z","avatar_url":"https://github.com/igneus.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# lyv\n\n*lyv* is a small set of tools to handle [LilyPond](http://lilypond.org) data\nfrom Ruby.\nIt is in no way general. Most of it was first written for my\n[In adiutorium](https://github.com/igneus/In-adiutorium) project\nand subsequently used also in other contexts.\nThus the gem is primarily for my own purposes and available to anyone\nwho might happen to need it.\n\nIt solves tasks like\n* how many scores are defined in a given file?\n* what, if any, are their lyrics?\n* which header fields do they have? With what values?\n* which fields does the top-level header have?\n* get whole source of the n-th score or score meeting some requirements\n\n```ruby\nrequire 'lyv'\n\nparser = LilyPondParser.new\ndoc = parser.parse_document(File.read('path/to/MyMusic.ly'))\n\n# top-level header fields\nputs \"#{doc.header['composer']}: #{doc.header['title']}\"\n\n# traverse scores and process their header fields and lyrics\ndoc.scores.each do |s|\n  puts \"#{s.header['opus']}: #{s.lyrics}\"\nend\n```\n\n## anti-advertisement\n\nIf you want to process LilyPond files, you should consider the fact that\nmost of the notation geeks seem to prefer Python as their scripting\nlanguage. Particularly the [python-ly](https://github.com/wbsoft/python-ly)\nlibrary might fit your needs.\n\nIf python-ly was there at the time my need to parse, split, rearrange,\nprogramatically modify etc. LilyPond files emerged, I wouldn't have created\nany of the scripts that later became lyv.\n\n## license\n\nGNU/GPL 3.0 or newer\n\n## the name\n\n*Liv* is a women's name of Nordic origin. \n*ly* is an extension commonly used for Li*ly*pond files.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figneus%2Flyv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figneus%2Flyv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figneus%2Flyv/lists"}