{"id":29565549,"url":"https://github.com/tx3stn/plex2pl","last_synced_at":"2025-12-31T14:31:14.733Z","repository":{"id":304555672,"uuid":"1018513739","full_name":"tx3stn/plex2pl","owner":"tx3stn","description":"Convert plex playlists to other playlist formats","archived":false,"fork":false,"pushed_at":"2025-07-13T20:11:50.000Z","size":45,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-13T22:09:38.293Z","etag":null,"topics":["jellyfin","m3u","media","playlist","playlists","plex","plex-media-server","plexamp"],"latest_commit_sha":null,"homepage":"","language":"Go","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/tx3stn.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,"zenodo":null}},"created_at":"2025-07-12T12:27:23.000Z","updated_at":"2025-07-13T20:11:42.000Z","dependencies_parsed_at":"2025-07-13T22:19:44.679Z","dependency_job_id":null,"html_url":"https://github.com/tx3stn/plex2pl","commit_stats":null,"previous_names":["tx3stn/plex2pl"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/tx3stn/plex2pl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tx3stn%2Fplex2pl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tx3stn%2Fplex2pl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tx3stn%2Fplex2pl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tx3stn%2Fplex2pl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tx3stn","download_url":"https://codeload.github.com/tx3stn/plex2pl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tx3stn%2Fplex2pl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265837712,"owners_count":23836558,"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":["jellyfin","m3u","media","playlist","playlists","plex","plex-media-server","plexamp"],"created_at":"2025-07-18T21:34:43.383Z","updated_at":"2025-12-31T14:31:14.676Z","avatar_url":"https://github.com/tx3stn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 --\u003e\n\u003ch1 align=\"center\"\u003eplex2pl\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eConvert your plex playlists into other formats for use with other programs.\u003c/em\u003e\n\u003c/p\u003e\n\n\nCurrently support formats:\n* `m3u`\n\nUpcoming:\n* `jellyfin` native\n\n## Contents\n\n- [Why](#why)\n- [Install](#install)\n  - [Download from GitHub](#download-from-github)\n  - [Build it locally](#build-it-locally)\n  - [Run the Docker container](#run-the-docker-container)\n- [Configuring](#configuring)\n- [Usage](#usage)\n- [Running in Docker](#running-in-docker)\n- [References](#references)\n\n## Why\n\nI use plexamp for listening to music, but have migrated all other media to Jellyfin.\nI wanted to manage my playlist via Plex, but have a compatible solution for other providers for switching in future, or trying out things like [FinAmp](https://github.com/jmshrv/finamp)\n\n## Install\n\n### Download from GitHub\n\nFind the latest version for your system on the\n[GitHub releases page](https://github.com/tx3stn/plex2pl/releases).\n\n### Build it locally\n\nIf you have go installed, you can clone this repo and run:\n\n```bash\nmake install\n```\n\nThis will build the binary and then copy it to `/usr/local/bin/plex2pl` so it will be\navailable on your path. Nothing more to it.\n\n### Run the Docker container\n\nGet the Docker container from the\n[GitHub container registry](https://github.com/tx3stn/plex2pl/pkgs/container/plex2pl).\n\n```bash\ndocker pull ghcr.io/tx3stn/plex2pl:latest\n```\n\nSee [Running in Docker](#running-in-docker) for more details.\n\n## Configuring\n\nAll of the configuration required for `plex2pl` is found in the config file.\n\nThe default expected locations for this are:\n* `$XDG_CONFIG_DIR/plex2pl/config.json`\n* `$HOME/.config/plex2pl/config.json`\n\nIf you want to use a file located somewhere else you can pass the `--config` flag, e.g.:\n\n```bash\nplex2pl --config /my/custom/config/file/path/config.json\n```\n\n\u003e [!TIP]\n\u003e To get in editor feedback/validation of your schema, add the following to the top of your json file:\n\u003e ``` json\n\u003e \"$schema\": \"https://raw.githubusercontent.com/tx3stn/plex2pl/refs/heads/main/.schema/schema.json\"\n\u003e ```\n\n### `plexServerUrl`\n\nThe url used to access your plex server, from the host device `plex2pl` is running on.\n\n### `plexAuthToken`\n\nThe token required to authenticate the requests against the Plex server.\n\nSee [their docs on how you can find yours](https://support.plex.tv/articles/204059436).\n\n### `OutDirectory`\n\nThe location of the directory you want to generate the playlists in.\n\nEach playlist will be created as a file with the playlist title as the name inside this directory.\n\n### `verbose`\n\nIf you want to see verbose output from the tool running.\n\nUseful for debugging.\n\nCan be enabled at run time (overriding the value in your config file), with the `--verbose` flag, e.g.:\n\n```bash\nplex2pl --verbose\n```\n\n## Usage\n\nOnce your config file is created, just run it:\n\n```bash\nplex2pl\n```\n\nThat's it 🎉\n\nThe playlist files will be created in the directory you specified.\n\n## Running in Docker\n\nYou can run this inside a container, with a few considerations:\n1. **Volume mount your output directory**\nSo you can create files in the correct place, and not just inside the container.\n\n2. **Volume mount your config**\nA directory called `/config` is made for this, you can then pass the `--config` flag to the running command to use this config file.\n\n3. **Specify the right user to run the container as**\nSo that your playlist files get created as the expected user to be able to use the created playlists, the example below uses the same user as the host.\n\n4. **Make sure the container can access your plex server.**\nIf you're running plex in a container you will need to give access to the smae network plex is running on.\n\nPutting this all together looks like this:\n\n```bash\ndocker run --rm -v \"/media/dir/music/playlists:/media/dir/music/playlists\" \\\n\t-v \"/home/user/.config/plex2pl:/config\" \\\n\t--network host \\\n\t-u $(id -u):$(id -g) \\\n\tghcr.io/tx3stn/plex2pl:latest --config \"/config/config.json\"\n```\n\n## References\n\n- https://github.com/XDGFX/PPP\n- https://blog.fileformat.com/audio/common-errors-when-creating-or-editing-extm3u-files-and-how-to-fix-them/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftx3stn%2Fplex2pl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftx3stn%2Fplex2pl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftx3stn%2Fplex2pl/lists"}