Post Last.fm statistics to Twitter and/or Mastodon
Project description
Last-Shout
A command line tool to toot a user's top artist statistics from Last.fm to Mastodon.
Installation
Installing the latest version from Github:
pipx install last-shout
Getting started
In order to use Last-Shout, you need at a minimum to get authentication keys for Last.fm and Mastodon.
Help
usage: last-shout [-h] [-u USER] [--last-access-key LAST_ACCESS_KEY] [--set-lastfm] [-n NUMBER] [-p PERIOD] [-t] [--bluesky-handle BLUESKY_HANDLE] [--bluesky-password BLUESKY_PASSWORD] [--set-bluesky] [--create-mastodon-app]
[--create-mastodon-user] [--toot] [--skeet] [--version]
A program to post last.fm statistics to Twitter and/or Mastodon.
options:
-h, --help show this help message and exit
-u, --user USER Last.fm username (default: None)
--last-access-key LAST_ACCESS_KEY
Last.fm access key (default: None)
--set-lastfm Set Last.fm credentials (default: False)
-n, --number NUMBER Number of last.fm top artists (default: 10)
-p, --period PERIOD The time period over which to retrieve top artists. Options are: overall | 7day | 1month | 3month | 6month | 12month (default: 7day)
-t, --tweet Post Last.fm stats to Twitter (default: False)
--bluesky-handle BLUESKY_HANDLE
Bluesky handle (default: None)
--bluesky-password BLUESKY_PASSWORD
Bluesky password (default: None)
--set-bluesky Set Bluesky credentials (default: False)
--create-mastodon-app
Create mastodon application (default: False)
--create-mastodon-user
Create Mastodon user token (default: False)
--toot Post Last.fm stats to Mastodon (default: False)
--skeet Post Last.fm stats to Bluesky (default: False)
--version Show the version number and exit
Set Systemd Timer
Once you've set your credentials in the application, most users will want it to run on regular intervals, and if you're running a Linux distribution with systemd you can set-up a timer to do that.
Start by a systemd unit file for it in ~/.config/systemd/user/last-shout-weekly.service
[Unit]
Description=Run weekly Last-Shout
After=network.target
[Service]
Type=oneshot
WorkingDirectory=%h
ExecStart=%h/.local/bin/last-shout --toot --skeet
[Install]
WantedBy=default.target
Now let's create a time for it in ~/.config/systemd/user/last-shout-weekly.timer:
[Unit]
Description=Start the Systemd service last-shout-weekly.service every Friday at 11:30
[Timer]
OnCalendar=Fri 11:30
Persistent=true
[Install]
WantedBy=timers.target
Then run the following to enable it:
systemctl --user enable --now last-shout-weekly.timer
Then reload the user daemon:
systemctl --user daemon-reload
Now run the following to verify the timer is enabled by running:
systemctl --user list-timers
If everything is alright you should see output similar to this:
bpepple@faramir:~$ systemctl --user list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Tue 2025-01-28 16:53:50 EST 23h Mon 2025-01-27 16:53:50 EST 4min 21s ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2025-01-31 11:30:00 EST 3 days Fri 2025-01-24 11:30:06 EST - last-shout-weekly.timer last-shout-weekly.service
- - Mon 2025-01-27 16:50:50 EST 7min ago grub-boot-success.timer grub-boot-success.service
3 timers listed.
Now run the following to make sure the user timer can run even if they aren't logged in when the timer is ran:
sudo loginctl enable-linger username
To verify that the setting has been applied, check for a file with the same name as the user in the /var/lib/systemd/linger directory.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file last_shout-0.10.1.tar.gz.
File metadata
- Download URL: last_shout-0.10.1.tar.gz
- Upload date:
- Size: 27.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54398a5f00d73df96289eebb6c53af2f67352df091eabcecdbc3bc055df3175e
|
|
| MD5 |
76bf4a2c3ce5a69679321cff56a447ab
|
|
| BLAKE2b-256 |
b17dd46c2964096078e0c4d87008bbd138de6fb715f2bf1d91055c3a2e30f48f
|
File details
Details for the file last_shout-0.10.1-py3-none-any.whl.
File metadata
- Download URL: last_shout-0.10.1-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e438a3e2f65c697b240e2d7a2d45166462dfefe834dad55a8c2b61c9866853ae
|
|
| MD5 |
1a5f9cbda33cc4fe796ef6e0bf7bc885
|
|
| BLAKE2b-256 |
75250b4a2e5481a6616060567d49a90f0ede93bb5ed4e8bb0cdb37a9d448ffd0
|