{"id":16906004,"url":"https://github.com/chocobo1/foo_xspf_1","last_synced_at":"2025-10-05T00:48:12.927Z","repository":{"id":27359135,"uuid":"30834491","full_name":"Chocobo1/foo_xspf_1","owner":"Chocobo1","description":"Import \u0026 export XSPF playlist in foobar2000","archived":false,"fork":false,"pushed_at":"2023-05-03T17:27:04.000Z","size":143,"stargazers_count":14,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-25T06:34:41.156Z","etag":null,"topics":["foobar2000","playlist","xspf"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Chocobo1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2015-02-15T17:10:57.000Z","updated_at":"2024-08-13T22:03:08.000Z","dependencies_parsed_at":"2024-12-09T19:15:23.550Z","dependency_job_id":"1944f5df-7810-4ee8-b2a3-8bc47d570a91","html_url":"https://github.com/Chocobo1/foo_xspf_1","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/Chocobo1/foo_xspf_1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chocobo1%2Ffoo_xspf_1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chocobo1%2Ffoo_xspf_1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chocobo1%2Ffoo_xspf_1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chocobo1%2Ffoo_xspf_1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Chocobo1","download_url":"https://codeload.github.com/Chocobo1/foo_xspf_1/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chocobo1%2Ffoo_xspf_1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278395916,"owners_count":25979691,"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","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["foobar2000","playlist","xspf"],"created_at":"2024-10-13T18:40:32.196Z","updated_at":"2025-10-05T00:48:12.897Z","avatar_url":"https://github.com/Chocobo1.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# foo_xspf_1 [![AppVeyor Build](https://ci.appveyor.com/api/projects/status/github/Chocobo1/foo_xspf_1?branch=master\u0026svg=true)](https://ci.appveyor.com/project/Chocobo1/foo-xspf-1)\r\nXSPF playlist plugin for foobar2000 1.3+\r\n\r\nXSPF is the XML format for sharing playlists.\r\n\r\n### Features\r\n* Generate XSPF playlist with/without hard coded path (\\\u003clocation\\\u003e)\r\n* Import XSPF playlist with/without hard coded path (\\\u003clocation\\\u003e)\r\n* Support XSPF version 1 format\r\n\r\n### Download\r\n[Project release page](../../releases)\r\n\r\n### Usage\r\n* To read a XSPF playlist, drag and drop the playlist to foobar2000, or just open it as you normally do (duh\r\n* To generate a XSPF playlist, select menu `File` -\u003e `Save playlist...`, or right click -\u003e `Utilities` -\u003e `Save as playlist...`\r\n\r\n### Options\r\nOptions are listed at `File` -\u003e `Preferences` -\u003e page `Advanced` -\u003e tab `Tools` -\u003e `XSPF playlist`\r\n  ![options_screenshot](./pics/options.png)\r\n* Read\r\n  * \\\u003calbum\u003e\r\n\r\n\tRead this field and map to metadata \"ALBUM\". This field is used as text when \\\u003clocation\u003e is present, or as a search keyword when \\\u003clocation\u003e is absent.\r\n\r\n  * \\\u003ccreator\u003e\r\n\r\n    Read this field and map to metadata \"ARTIST\". This field is used as text when \\\u003clocation\u003e is present, or as a search keyword when \\\u003clocation\u003e is absent.\r\n\r\n  * \\\u003ctitle\u003e\r\n\r\n    Read this field and map to metadata \"TITLE\". This field is used as text when \\\u003clocation\u003e is present, or as a search keyword when \\\u003clocation\u003e is absent.\r\n\r\n  * \\\u003ctrackNum\u003e\r\n\r\n    Read this field and map to metadata \"TRACKNUMBER\". This field is used as text when \\\u003clocation\u003e is present, or as a search keyword when \\\u003clocation\u003e is absent.\r\n\r\n  * \\\u003clocation\u003e\r\n\r\n    If checked, foobar2000 will use this field as file path. Otherwise the plugin will use other fields to find matching tracks in media library and add it to playlist.\r\n\r\n  * Disable resolving \\\u003clocation\u003e\r\n\r\n    If checked, the plugin won't bother to check if data in \\\u003clocation\u003e is valid or not. This option must be checked when \\\u003clocation\u003e is pointing to a cuesheet.\r\n\r\n  * Allow multiple match\r\n\r\n    If checked and \\\u003clocation\u003e is unchecked, the plugin will add all matching tracks instead of only one.\r\n\r\n  * Allow partial matching\r\n\r\n    If checked and \\\u003clocation\u003e is unchecked, the plugin will allow partial matching when finding tracks in media library. Otherwise, exact match is enforced.\r\n\r\n* Write\r\n  * \\\u003calbum\u003e\r\n\r\n    Write out this field, mapped to metadata \"ALBUM\".\r\n\r\n  * \\\u003cannotation\u003e\r\n\r\n    Write out this field, mapped to metadata \"COMMENT\".\r\n\r\n  * \\\u003ccreator\u003e\r\n\r\n    Write out this field, mapped to metadata \"ARTIST\".\r\n\r\n  * \\\u003cdate\u003e\r\n\r\n  Write out this field, mapped to metadata \"TRACKNUMBER\".\r\n\r\n  * \\\u003cduration\u003e\r\n\r\n    Write out this field, mapped to the date on which the xspf file is generated.\r\n\r\n  * \\\u003clocation\u003e\r\n\r\n    Write out this field, mapped to \"file path\".\r\n\r\n  * \\\u003ctitle\u003e\r\n\r\n    Write out this field, mapped to metadata \"TITLE\".\r\n\r\n  * \\\u003ctrackNum\u003e\r\n\r\n    Write out this field, mapped to metadata \"TRACKNUMBER\".\r\n\r\n  * Compact output\r\n\r\n    If checked, there won't be any formatting in the generated xspf file, making the file smaller but also makes it less suitable for human to read.\r\n\r\n  * Use relative path whenever possible\r\n\r\n    If checked, \\\u003clocation\u003e will have relative path instead of absolute path. The path is relative in the sense of where the track is located and the path of the generated xspf file.\r\n\r\n### Compiler\r\n* Visual Studio 2015\r\n\r\n### License\r\nSee [LICENSE](./LICENSE) file\r\n\r\n### Third-party code\r\n* [TinyXML-2](http://www.grinninglizard.com/tinyxml2/)\r\n* [foobar2000 Software Development Kit](https://www.foobar2000.org/SDK)\r\n\r\n### References\r\n* [XSPF](http://www.xspf.org/)\r\n* [XSPF validator](https://validator.xspf.org/)\r\n* [foobar2000](https://www.foobar2000.org/)\r\n* [foobar2000 forum](https://hydrogenaud.io/index.php/board,28.0.html)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchocobo1%2Ffoo_xspf_1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchocobo1%2Ffoo_xspf_1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchocobo1%2Ffoo_xspf_1/lists"}