scrobble


Namescrobble JSON
Version 0.2.1 PyPI version JSON
download
home_page
SummaryScrobble CDs to your last.fm account.
upload_time2024-01-28 10:56:58
maintainer
docs_urlNone
author
requires_python>=3.11
license
keywords last.fm scrobble cd music
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![codecov](https://codecov.io/gh/sheriferson/scrobble/branch/main/graph/badge.svg?token=F5H7FXXB58)](https://codecov.io/gh/sheriferson/scrobble)

# Scrobble

A little very unofficial Python CLI tool to scrobble music to Last.fm.

> **Note**
> Super early, under active development, and so forth.


## Background

It started as a tool to scrobble CD tracklists using barcodes, and that's what it does today, but there are plans for it to do more.

Inspired by [CodeScrobble][] and [Open Scrobbler][].

[CodeScrobble]: https://codescrobble.com "CodeScrobble tool for scanning CD or record barcodes and scrobbling the tracklist."
[Open Scrobbler]: https://openscrobbler.com "Open Scrobbler tool for scrobbling albums or custom tracks."

## Features

- Scrobble a CD's tracklist using its barcode.
- Supports multi disc releases.
- Uses MusicBrainz as the source of CD and track metadata.
- Accepts an optional `PLAYBACKEND` argument in natural language if you want to scrobble a CD you listened to a while ago. e.g., `scrobble 016861828257 '2 hours ago'`.
- A `--dryrun` option if you just want to see a tracklist without sending anything to your last.fm account.
- A `--notify` option if you want to get a Pushover.net notification. Requires a Pushover app API token and a user key.
- If the barcode matches more than one release, the tool will ask you to choose. This matters because sometimes the tracklist is different (how releases that different end up with the same barcode is... pfff I don't know). If you want to yolo it, you can pass `--no-choice` and have the tool pick the first match.
- A `--track-choice` option that lets you choose a subset of tracks to scrobble. Requires [charmbracelet/gum][gum] for now.

[gum]: https://github.com/charmbracelet/gum "'gum' cli tool by charmbracelet. A tool for glamorous shell scripts."

## Installation

```sh
pip3 install scrobble
```

or

```sh
git clone https://github.com/sheriferson/scrobble
cd scrobble
pip3 install .
```

If you want to use the `--track-choice` option, you'll also need `gum`. See [here][gum] for details and Installation instructions. If you have Homebrew it's a simple:

```commandline
brew install gum
```

## Configuration

Okay you need to do some configuration before this will do anything useful for you. Some configurations are required (last.fm) and others are optional (Pushover).

You need to [get a last.fm API account][lastfmapi]. It's easy and immediate. Once you have a key and a secret, put them in `~/.config/scrobble.toml`:

[lastfmapi]: https://www.last.fm/api/account/create "Create a last.fm API account."

**Below is the mininum required configuration for this tool to work.**
```toml
[lastfmapi]
api_key = '<your-api-key>'
api_secret = '<your-api-secret>'
username = '<optional-username-for-url-in-pushover-notification>'
```

The first time you try to scrobble something, the app will ask you to give it permission to connect to your last.fm account, so you will need access to the machine's screen/browser. Once this is done, it will save a session key in `~/.lastfm_session_key`, and shouldn't need to ask for permission again.

If you want this tool to run on a remote/headless server, you can run the tool once on your local machine, then copy `~/.config/.lastfm_session_key` over your remote host.

If you plan on using `--notify` to get notifications when scrobbling is complete, you need to provide a Pushover API token and user key as well:


```toml
[pushoverapi]
token = '<your-pushover-app-token>'
user = '<your-user-key>'
```

## Usage

```sh
scrobble --help
```

```sh
  Usage: scrobble [OPTIONS] COMMAND [ARGS]...

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --install-completion          Install completion for the current shell.              │
│ --show-completion             Show completion for the current shell, to copy it or   │
│                               customize the installation.                            │
│ --help                        Show this message and exit.                            │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ cd                                                                                   │
│ discogs                                                                              │
│ musicbrainz                                                                          │
╰──────────────────────────────────────────────────────────────────────────────────────╯
```

```sh
scrobble cd --help
```

```sh
 Usage: scrobble cd [OPTIONS] BARCODE [PLAYBACKEND]

╭─ Arguments ───────────────────────────────────────────────────────────────────────────╮
│ *    barcode           TEXT            Barcode (as a number) of the CD you want to    │
│                                        scrobble, or a path to an image of a barcode.  │
│                                        Double album releases are supported.           │
│                                        [default: None]                                │
│                                        [required]                                     │
│      playback_end      [PLAYBACK_END]  When did you finish listening? e.g., 'now' or  │
│                                        '1 hour ago'.                                  │
│                                        [default: now]                                 │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ─────────────────────────────────────────────────────────────────────────────╮
│ --dryrun            --no-dryrun              --dryrun will print a list of tracks     │
│                                              without scrobbling to Last.fm            │
│                                              [default: no-dryrun]                     │
│ --verbose           --no-verbose             --verbose will print a bunch of stuff to │
│                                              your terminal.                           │
│                                              [default: no-verbose]                    │
│ --notify            --no-notify              --notify will send a push notification   │
│                                              via Pushover with CD information.        │
│                                              [default: no-notify]                     │
│ --release-choice    --no-release-choice      --release-choice will give you a list of │
│                                              options of more than one CD is matched.  │
│                                              Otherwise, the app will go with the      │
│                                              first match.                             │
│                                              [default: release-choice]                │
│ --track-choice      --no-track-choice        --track-choice will give you a list of   │
│                                              tracks in the release to choose to       │
│                                              scrobble instead of scrobbling the       │
│                                              entire release.                          │
│                                              [default: no-track-choice]               │
│ --help                                       Show this message and exit.              │
╰───────────────────────────────────────────────────────────────────────────────────────╯
```

## Examples

```sh
# list album info and tracks from Rammstein's Herzeleid without actually scrobbling

$ scrobble cd --dryrun --verbose 031452916021

💿 Rammstein - Herzeleid (1996)
🎵 1 Wollt ihr das Bett in Flammen sehen?
🎵 2 Der Meister
🎵 3 Weißes Fleisch
🎵 4 Asche zu Asche
🎵 5 Seemann
🎵 6 Du riechst so gut
🎵 7 Das alte Leid
🎵 8 Heirate mich
🎵 9 Herzeleid
🎵 10 Laichzeit
🎵 11 Rammstein
⚠️  Dry run - no tracks were scrobbled.

# provide a path to a an image with a barcode instead of the barcode value itself
scrobble cd --dryrun --verbose --no-release-choice 'tests/resources/CD1-600.jpeg'

💿 MF DOOM - MM..FOOD (2017)
🎵 1 Beef Rapp
🎵 2 Hoe Cakes
🎵 3 Potholderz
🎵 4 One Beer
🎵 5 Deep Fried Frenz
🎵 6 Poo‐Putt Platter
🎵 7 Fillet‐O‐Rapper
🎵 8 Gumbo
🎵 9 Fig Leaf Bi‐Carbonate
🎵 10 Kon Karne
🎵 11 Guinesses
🎵 12 Kon Queso
🎵 13 Rapp Snitch Knishes
🎵 14 Vomitspit
🎵 15 Kookies
🎵 1 MM..FOOD Drive Tour
⚠️  Dry run - no tracks were scrobbled.

# scrobble Nymphetamine by Cradle of Filth which you finished
# listening to two hours ago

$ scrobble cd 016861828257 '2 hours ago'

# scrobble Comalies by Lacuna Coil
# the barcode matches multiple releases, so you're offered options

$ scrobble cd 727701816029

More than one release matches barcode 727701816029.

1. Comalies, 1 disc, 13 tracks, released in 2002.
2. Comalies, 2  discs, 22 tracks, released in 2004.
3. Comalies, 1 disc, 13 tracks, released in 2002.

Which release do you want to scrobble? [1/2/3] (1):
...
# as you can see, sometimes there are duplicates
# differentiation between them isn't handled very well right now

# scrobble Fight Club: Original Motion Picture Score
# barcode matches multiple releases, but  don't ask me to choose a release,
# just pick the first one and send a notification using
# pushover.net (requires extra configuration)

$ scrobble cd --no-choice --notify 018777371520
```


## Missing

- Docs.
- Other features.
- More tests.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "scrobble",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": "",
    "keywords": "last.fm,scrobble,cd,music",
    "author": "",
    "author_email": "Sherif Soliman <hi@sherif.io>",
    "download_url": "https://files.pythonhosted.org/packages/6c/9c/728ab606773cee2ce40c5524d58e6bd012524e7fa9d6aa86bab60df127cd/scrobble-0.2.1.tar.gz",
    "platform": null,
    "description": "[![codecov](https://codecov.io/gh/sheriferson/scrobble/branch/main/graph/badge.svg?token=F5H7FXXB58)](https://codecov.io/gh/sheriferson/scrobble)\n\n# Scrobble\n\nA little very unofficial Python CLI tool to scrobble music to Last.fm.\n\n> **Note**\n> Super early, under active development, and so forth.\n\n\n## Background\n\nIt started as a tool to scrobble CD tracklists using barcodes, and that's what it does today, but there are plans for it to do more.\n\nInspired by [CodeScrobble][] and [Open Scrobbler][].\n\n[CodeScrobble]: https://codescrobble.com \"CodeScrobble tool for scanning CD or record barcodes and scrobbling the tracklist.\"\n[Open Scrobbler]: https://openscrobbler.com \"Open Scrobbler tool for scrobbling albums or custom tracks.\"\n\n## Features\n\n- Scrobble a CD's tracklist using its barcode.\n- Supports multi disc releases.\n- Uses MusicBrainz as the source of CD and track metadata.\n- Accepts an optional `PLAYBACKEND` argument in natural language if you want to scrobble a CD you listened to a while ago. e.g., `scrobble 016861828257 '2 hours ago'`.\n- A `--dryrun` option if you just want to see a tracklist without sending anything to your last.fm account.\n- A `--notify` option if you want to get a Pushover.net notification. Requires a Pushover app API token and a user key.\n- If the barcode matches more than one release, the tool will ask you to choose. This matters because sometimes the tracklist is different (how releases that different end up with the same barcode is... pfff I don't know). If you want to yolo it, you can pass `--no-choice` and have the tool pick the first match.\n- A `--track-choice` option that lets you choose a subset of tracks to scrobble. Requires [charmbracelet/gum][gum] for now.\n\n[gum]: https://github.com/charmbracelet/gum \"'gum' cli tool by charmbracelet. A tool for glamorous shell scripts.\"\n\n## Installation\n\n```sh\npip3 install scrobble\n```\n\nor\n\n```sh\ngit clone https://github.com/sheriferson/scrobble\ncd scrobble\npip3 install .\n```\n\nIf you want to use the `--track-choice` option, you'll also need `gum`. See [here][gum] for details and Installation instructions. If you have Homebrew it's a simple:\n\n```commandline\nbrew install gum\n```\n\n## Configuration\n\nOkay you need to do some configuration before this will do anything useful for you. Some configurations are required (last.fm) and others are optional (Pushover).\n\nYou need to [get a last.fm API account][lastfmapi]. It's easy and immediate. Once you have a key and a secret, put them in `~/.config/scrobble.toml`:\n\n[lastfmapi]: https://www.last.fm/api/account/create \"Create a last.fm API account.\"\n\n**Below is the mininum required configuration for this tool to work.**\n```toml\n[lastfmapi]\napi_key = '<your-api-key>'\napi_secret = '<your-api-secret>'\nusername = '<optional-username-for-url-in-pushover-notification>'\n```\n\nThe first time you try to scrobble something, the app will ask you to give it permission to connect to your last.fm account, so you will need access to the machine's screen/browser. Once this is done, it will save a session key in `~/.lastfm_session_key`, and shouldn't need to ask for permission again.\n\nIf you want this tool to run on a remote/headless server, you can run the tool once on your local machine, then copy `~/.config/.lastfm_session_key` over your remote host.\n\nIf you plan on using `--notify` to get notifications when scrobbling is complete, you need to provide a Pushover API token and user key as well:\n\n\n```toml\n[pushoverapi]\ntoken = '<your-pushover-app-token>'\nuser = '<your-user-key>'\n```\n\n## Usage\n\n```sh\nscrobble --help\n```\n\n```sh\n  Usage: scrobble [OPTIONS] COMMAND [ARGS]...\n\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --install-completion          Install completion for the current shell.              \u2502\n\u2502 --show-completion             Show completion for the current shell, to copy it or   \u2502\n\u2502                               customize the installation.                            \u2502\n\u2502 --help                        Show this message and exit.                            \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Commands \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 cd                                                                                   \u2502\n\u2502 discogs                                                                              \u2502\n\u2502 musicbrainz                                                                          \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n```sh\nscrobble cd --help\n```\n\n```sh\n Usage: scrobble cd [OPTIONS] BARCODE [PLAYBACKEND]\n\n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    barcode           TEXT            Barcode (as a number) of the CD you want to    \u2502\n\u2502                                        scrobble, or a path to an image of a barcode.  \u2502\n\u2502                                        Double album releases are supported.           \u2502\n\u2502                                        [default: None]                                \u2502\n\u2502                                        [required]                                     \u2502\n\u2502      playback_end      [PLAYBACK_END]  When did you finish listening? e.g., 'now' or  \u2502\n\u2502                                        '1 hour ago'.                                  \u2502\n\u2502                                        [default: now]                                 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --dryrun            --no-dryrun              --dryrun will print a list of tracks     \u2502\n\u2502                                              without scrobbling to Last.fm            \u2502\n\u2502                                              [default: no-dryrun]                     \u2502\n\u2502 --verbose           --no-verbose             --verbose will print a bunch of stuff to \u2502\n\u2502                                              your terminal.                           \u2502\n\u2502                                              [default: no-verbose]                    \u2502\n\u2502 --notify            --no-notify              --notify will send a push notification   \u2502\n\u2502                                              via Pushover with CD information.        \u2502\n\u2502                                              [default: no-notify]                     \u2502\n\u2502 --release-choice    --no-release-choice      --release-choice will give you a list of \u2502\n\u2502                                              options of more than one CD is matched.  \u2502\n\u2502                                              Otherwise, the app will go with the      \u2502\n\u2502                                              first match.                             \u2502\n\u2502                                              [default: release-choice]                \u2502\n\u2502 --track-choice      --no-track-choice        --track-choice will give you a list of   \u2502\n\u2502                                              tracks in the release to choose to       \u2502\n\u2502                                              scrobble instead of scrobbling the       \u2502\n\u2502                                              entire release.                          \u2502\n\u2502                                              [default: no-track-choice]               \u2502\n\u2502 --help                                       Show this message and exit.              \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n## Examples\n\n```sh\n# list album info and tracks from Rammstein's Herzeleid without actually scrobbling\n\n$ scrobble cd --dryrun --verbose 031452916021\n\n\ud83d\udcbf Rammstein - Herzeleid (1996)\n\ud83c\udfb5 1 Wollt ihr das Bett in Flammen sehen?\n\ud83c\udfb5 2 Der Meister\n\ud83c\udfb5 3 Wei\u00dfes Fleisch\n\ud83c\udfb5 4 Asche zu Asche\n\ud83c\udfb5 5 Seemann\n\ud83c\udfb5 6 Du riechst so gut\n\ud83c\udfb5 7 Das alte Leid\n\ud83c\udfb5 8 Heirate mich\n\ud83c\udfb5 9 Herzeleid\n\ud83c\udfb5 10 Laichzeit\n\ud83c\udfb5 11 Rammstein\n\u26a0\ufe0f  Dry run - no tracks were scrobbled.\n\n# provide a path to a an image with a barcode instead of the barcode value itself\nscrobble cd --dryrun --verbose --no-release-choice 'tests/resources/CD1-600.jpeg'\n\n\ud83d\udcbf MF DOOM - MM..FOOD (2017)\n\ud83c\udfb5 1 Beef Rapp\n\ud83c\udfb5 2 Hoe Cakes\n\ud83c\udfb5 3 Potholderz\n\ud83c\udfb5 4 One Beer\n\ud83c\udfb5 5 Deep Fried Frenz\n\ud83c\udfb5 6 Poo\u2010Putt Platter\n\ud83c\udfb5 7 Fillet\u2010O\u2010Rapper\n\ud83c\udfb5 8 Gumbo\n\ud83c\udfb5 9 Fig Leaf Bi\u2010Carbonate\n\ud83c\udfb5 10 Kon Karne\n\ud83c\udfb5 11 Guinesses\n\ud83c\udfb5 12 Kon Queso\n\ud83c\udfb5 13 Rapp Snitch Knishes\n\ud83c\udfb5 14 Vomitspit\n\ud83c\udfb5 15 Kookies\n\ud83c\udfb5 1 MM..FOOD Drive Tour\n\u26a0\ufe0f  Dry run - no tracks were scrobbled.\n\n# scrobble Nymphetamine by Cradle of Filth which you finished\n# listening to two hours ago\n\n$ scrobble cd 016861828257 '2 hours ago'\n\n# scrobble Comalies by Lacuna Coil\n# the barcode matches multiple releases, so you're offered options\n\n$ scrobble cd 727701816029\n\nMore than one release matches barcode 727701816029.\n\n1. Comalies, 1 disc, 13 tracks, released in 2002.\n2. Comalies, 2  discs, 22 tracks, released in 2004.\n3. Comalies, 1 disc, 13 tracks, released in 2002.\n\nWhich release do you want to scrobble? [1/2/3] (1):\n...\n# as you can see, sometimes there are duplicates\n# differentiation between them isn't handled very well right now\n\n# scrobble Fight Club: Original Motion Picture Score\n# barcode matches multiple releases, but  don't ask me to choose a release,\n# just pick the first one and send a notification using\n# pushover.net (requires extra configuration)\n\n$ scrobble cd --no-choice --notify 018777371520\n```\n\n\n## Missing\n\n- Docs.\n- Other features.\n- More tests.\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Scrobble CDs to your last.fm account.",
    "version": "0.2.1",
    "project_urls": {
        "Homepage": "https://github.com/sheriferson/scrobble"
    },
    "split_keywords": [
        "last.fm",
        "scrobble",
        "cd",
        "music"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5600e3ca44b876f9269eb27e72117856dcee8eef42257f43f279c93ad4684e07",
                "md5": "6b1cbfa820ead8f2e1a2a719a0dbd972",
                "sha256": "673f3c1a63dea982e1d2f24b034a8b70bfcd6f7dde905186ea23370743099ce9"
            },
            "downloads": -1,
            "filename": "scrobble-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6b1cbfa820ead8f2e1a2a719a0dbd972",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 23064,
            "upload_time": "2024-01-28T10:56:55",
            "upload_time_iso_8601": "2024-01-28T10:56:55.783207Z",
            "url": "https://files.pythonhosted.org/packages/56/00/e3ca44b876f9269eb27e72117856dcee8eef42257f43f279c93ad4684e07/scrobble-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6c9c728ab606773cee2ce40c5524d58e6bd012524e7fa9d6aa86bab60df127cd",
                "md5": "9167c43321e2b8391ecf3c87d073e33f",
                "sha256": "92faf70a323cd075994a8f504ec293c84ce09462793c4ab54effb07526d26dd6"
            },
            "downloads": -1,
            "filename": "scrobble-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "9167c43321e2b8391ecf3c87d073e33f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 27380,
            "upload_time": "2024-01-28T10:56:58",
            "upload_time_iso_8601": "2024-01-28T10:56:58.013459Z",
            "url": "https://files.pythonhosted.org/packages/6c/9c/728ab606773cee2ce40c5524d58e6bd012524e7fa9d6aa86bab60df127cd/scrobble-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-28 10:56:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "sheriferson",
    "github_project": "scrobble",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "scrobble"
}
        
Elapsed time: 0.39903s