overview
turn imessage spotify links from a group chat into a spotify playlist. it runs locally on your mac, keeps only songs, de‑dupes, and orders oldest → newest.
install
pipx install imsg2spot
requirements (super short): macos with messages history, python 3.9+.
mac permissions (first‑time only):
- open system settings
- privacy & security
- full disk access
- turn on "terminal" (or the shell/ide you’ll use)
then quit and reopen the terminal.
commands
list-chats
- overview
- shows recent chats so you can identify the right group
--limit N: how many chats to show (default 50)--filter-participant HANDLE: only show chats that include this handle; repeatable- HANDLE can be a phone in e164 (e.g.,
+00000000000) or an apple id email
- HANDLE can be a phone in e164 (e.g.,
- example
imsg2spot list-chats --limit 50
# narrow by member(s)
imsg2spot list-chats --limit 200 \
--filter-participant "+00000000000" \
--filter-participant "+10000000000"
dry-run
- overview
- preview what will be added (no spotify changes)
- pick exactly one chat selector:
--chat-name NAME(case-insensitive)--chat-id ID(from list-chats)--number PHONE(for 1-on-1 conversations)
- optional:
--db PATHif you're using a copied db
- example
# by name
imsg2spot dry-run --chat-name "group name"
# or by id
imsg2spot dry-run --chat-id 20
# or by phone number (1-on-1 conversations only)
imsg2spot dry-run --number "+1234567890"
make-playlist
- overview
- creates/updates your playlist on spotify (opens browser to authorize)
- same chat selector as dry-run: choose
--chat-name NAME,--chat-id ID, or--number PHONE --name PLAYLIST_NAME: playlist title--public: makes the playlist public (omit for private)- optional:
SPOTIFY_REDIRECT_URIto change the local port if 8000 is busy
- example
# by name
imsg2spot make-playlist --chat-name "group name" --name "my playlist" --public
# or by id
imsg2spot make-playlist --chat-id 20 --name "my playlist" --public
# or by phone number (1-on-1 conversations only)
imsg2spot make-playlist --number "+1234567890" --name "songs with friend" --public
copying your live messages db (optional but safer)
mkdir -p db
sqlite3 ~/Library/Messages/chat.db ".backup 'db/chat.db'"
use --db db/chat.db if you copied it to a different path.
that’s it. if anything looks off, run dry‑run first. if port 8000 is busy, set SPOTIFY_REDIRECT_URI=http://127.0.0.1:8888/callback and re‑run.
Metadata
Release files for imsg2spot 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| imsg2spot-0.1.5.tar.gz | 8.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| imsg2spot-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / imsg2spot-0.1.5.tar.gz
| Download URL | imsg2spot-0.1.5.tar.gz |
|---|---|
| Size | 8.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4182cbdb6a4de6cfd86477c37d47621d245a30c19bdced22adcf67efcbb65f72
|
|
BLAKE2b-256 checksum How to use checksums |
ed44be39f0189638d0e1daa9a1535d048226211f47517907d6d90e85466c9771
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.4
|
Release files / imsg2spot-0.1.5-py3-none-any.whl
| Download URL | imsg2spot-0.1.5-py3-none-any.whl |
|---|---|
| Size | 9.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d60feb73202f4ebf0b5e5149fb3b1c3e3652a8be71db555a997efc1f34c1589
|
|
BLAKE2b-256 checksum How to use checksums |
6c60a011f3d9e9b072dec1d678d103dc56ad2af6134defed8673f7f0e71091be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.4
|