Skip to main content

Last-Shout

PyPI - Version PyPI - Python Pre-Commit

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.

Metadata

Release files for last-shout 0.10.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for last-shout 0.10.1
File Size Uploaded
last_shout-0.10.1.tar.gz 27.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for last-shout 0.10.1
File Interpreter ABI Platform
last_shout-0.10.1-py3-none-any.whl Python 3 none any Details

Total release size: 54.7 kB

Release files / last_shout-0.10.1.tar.gz

Download URL last_shout-0.10.1.tar.gz
Size 27.1 kB
Tags Source
SHA-256 checksum
How to use checksums
54398a5f00d73df96289eebb6c53af2f67352df091eabcecdbc3bc055df3175e
BLAKE2b-256 checksum
How to use checksums
b17dd46c2964096078e0c4d87008bbd138de6fb715f2bf1d91055c3a2e30f48f
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / last_shout-0.10.1-py3-none-any.whl

Download URL last_shout-0.10.1-py3-none-any.whl
Size 27.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e438a3e2f65c697b240e2d7a2d45166462dfefe834dad55a8c2b61c9866853ae
BLAKE2b-256 checksum
How to use checksums
75250b4a2e5481a6616060567d49a90f0ede93bb5ed4e8bb0cdb37a9d448ffd0
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

0.10.1 This release

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page