README: install routes (pip/apt/venv) + screenshot
Document three ways to get the dependencies since Debian's system pip is locked down (PEP 668 externally-managed-environment): pip, apt (no pip), or a venv, with the note that `python3 -m lintunes.main` runs the app without pip or the `lintunes` command at all. Make the second-machine steps install-agnostic and add the app screenshot. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
80
README.md
80
README.md
@ -1,6 +1,6 @@
|
|||||||
# LinTunes
|
# LinTunes
|
||||||
|
|
||||||
[screenshot]
|

|
||||||
|
|
||||||
an mp3 library manager and player for linux. Absolutely no guarantees, if it wrecks your itunes library or wipes your
|
an mp3 library manager and player for linux. Absolutely no guarantees, if it wrecks your itunes library or wipes your
|
||||||
harddrive that's on you (maybe just have your LLM of choice review the
|
harddrive that's on you (maybe just have your LLM of choice review the
|
||||||
@ -39,37 +39,59 @@ even some tracks I got from napster all the way back in 2000 (I have since
|
|||||||
paid for!!)
|
paid for!!)
|
||||||
|
|
||||||
|
|
||||||
## Quickstart
|
## Installing
|
||||||
|
|
||||||
|
LinTunes needs four Python packages — **PyQt6** (with its QtMultimedia module),
|
||||||
|
**mutagen**, **numpy**, **requests** — plus the **FFmpeg codecs** for Qt
|
||||||
|
Multimedia so audio actually plays. Nothing compiles; get the deps whichever way
|
||||||
|
fits your distro:
|
||||||
|
|
||||||
|
- **pip** — simplest where your distro allows it; also puts a `lintunes` command
|
||||||
|
in `~/.local/bin`:
|
||||||
|
```sh
|
||||||
|
pip install -e .
|
||||||
|
```
|
||||||
|
- **Debian/Ubuntu** — system pip is locked down (the `externally-managed-environment`
|
||||||
|
/ PEP 668 error), so install the deps from apt and skip pip entirely:
|
||||||
|
```sh
|
||||||
|
sudo apt install python3-pyqt6 python3-pyqt6.qtmultimedia \
|
||||||
|
python3-mutagen python3-numpy python3-requests
|
||||||
|
```
|
||||||
|
(If `python3-pyqt6.qtmultimedia` isn't found, `apt search python3-pyqt6` and
|
||||||
|
grab the multimedia one.) There's no `lintunes` command this way — run it with
|
||||||
|
`python3 -m lintunes.main`.
|
||||||
|
- **venv** — isolated:
|
||||||
|
```sh
|
||||||
|
python3 -m venv .venv && .venv/bin/pip install -e .
|
||||||
|
```
|
||||||
|
Run with `.venv/bin/lintunes`. One caveat: the dock launcher (see *App icon*)
|
||||||
|
uses the *system* python, which can't see a venv's packages — so for the icon
|
||||||
|
to work, edit the installed `lintunes.desktop`'s `Exec=` line to the absolute
|
||||||
|
venv path (`…/lintunes/.venv/bin/lintunes %F`).
|
||||||
|
|
||||||
|
**You never strictly need pip or the `lintunes` command.** As long as those four
|
||||||
|
deps import, `python3 -m lintunes.main` from the checkout runs the app — which is
|
||||||
|
exactly what the desktop launcher does. The FFmpeg codecs come from
|
||||||
|
`qt6-qtmultimedia` built with ffmpeg (Fedora: RPM Fusion; Debian/Ubuntu: pulled in
|
||||||
|
by `python3-pyqt6.qtmultimedia`). Without them the UI runs but tracks won't play.
|
||||||
|
|
||||||
|
## Running it
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
pip install -e . # PyQt6, mutagen, numpy, requests
|
# one-time import from iTunes (XML: File ▸ Library ▸ Export Library in iTunes 12.x)
|
||||||
# one-time import from iTunes (XML from iTunes 12.x: File > Library > Export Library)
|
python3 -m lintunes.main --import-xml "iTunes Library.xml" \
|
||||||
lintunes --import-xml "iTunes Library.xml" \
|
--music-root "/path/to/iTunes Media" \
|
||||||
--music-root "/path/to/iTunes Media" \
|
--data-dir /path/to/library-data --save-config
|
||||||
--data-dir /path/to/library-data --save-config
|
python3 -m lintunes.main # run the app (uses the saved config)
|
||||||
lintunes # run the app
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
(Installed with pip? Type `lintunes` instead of `python3 -m lintunes.main`.)
|
||||||
### Running it
|
|
||||||
|
|
||||||
The `lintunes` command only exists after `pip install -e .`, and it lives in
|
|
||||||
`~/.local/bin`, so that has to be on your `PATH` (it is by default on most
|
|
||||||
distros). If `lintunes` isn't found, you can always run it straight from this
|
|
||||||
checkout without installing — from the project directory:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
python3 -m lintunes.main # same thing the desktop launcher runs
|
|
||||||
```
|
|
||||||
|
|
||||||
Fedora/Debian note: you need the FFmpeg codecs for Qt Multimedia
|
|
||||||
(`qt6-qtmultimedia` with ffmpeg, usually via RPM Fusion / regular apt).
|
|
||||||
|
|
||||||
LinTunes looks best with **Century Gothic** installed (`~/.local/share/fonts/`);
|
LinTunes looks best with **Century Gothic** installed (`~/.local/share/fonts/`);
|
||||||
if it's missing, you'll be asked to pick a font on first run.
|
if it's missing, you'll be asked to pick a font on first run.
|
||||||
|
|
||||||
The desktop launcher runs `lintunes` with no `--data-dir`, so it always uses
|
The desktop launcher runs LinTunes with no `--data-dir`, so it always uses
|
||||||
whatever is saved in `~/.config/lintunes/config.json`. Point that config wherever
|
whatever is saved in `~/.config/lintunes/config.json` — point that config wherever
|
||||||
you want and the dock icon follows.
|
you want and the dock icon follows.
|
||||||
|
|
||||||
## Running on a second machine (Syncthing)
|
## Running on a second machine (Syncthing)
|
||||||
@ -84,15 +106,15 @@ shared folder — you never edit anything inside the library to move it.
|
|||||||
new machine you just tell LinTunes where the synced folder landed:
|
new machine you just tell LinTunes where the synced folder landed:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# 1. get the code
|
# 1. get the code, then install the deps (see "Installing" above: pip / apt / venv)
|
||||||
git clone ssh://git@git.autonomic.zone:2222/trav/lintunes.git
|
git clone ssh://git@git.autonomic.zone:2222/trav/lintunes.git
|
||||||
cd lintunes && pip install -e .
|
cd lintunes
|
||||||
|
|
||||||
# 2. let Syncthing finish replicating the music folder, then point the config at
|
# 2. let Syncthing finish replicating the music folder, then point the config at
|
||||||
# THIS machine's paths and launch — no re-import, the data is already synced:
|
# THIS machine's paths and launch — no re-import, the data is already synced:
|
||||||
lintunes --data-dir "/path/to/synced/music/lintunes" \
|
python3 -m lintunes.main --data-dir "/path/to/synced/music/lintunes" \
|
||||||
--music-root "/path/to/synced/music/iTunes Media" \
|
--music-root "/path/to/synced/music/iTunes Media" \
|
||||||
--save-config
|
--save-config
|
||||||
|
|
||||||
# 3. install the launcher + icon, then pin it (see "App icon" below)
|
# 3. install the launcher + icon, then pin it (see "App icon" below)
|
||||||
bash packaging/install-desktop.sh
|
bash packaging/install-desktop.sh
|
||||||
|
|||||||
BIN
screenshot.png
Normal file
BIN
screenshot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 528 KiB |
Reference in New Issue
Block a user