Skip to main content

A tool that helps to work effectively with the API from last.fm

Project description

Last FM API (lastfmxpy)

GitHub License GitHub issues GitHub commit activity (branch) GitHub contributors PyPI - Python Version PyPI - Version


  • lastfmxpy (Last FM Api) - is a mono-repository that has a user-friendly interface for interacting with the largest music service last.fm. This library implements all the standard methods available on this page.

Table of contents

Project goals

  • Implement all existing methods in the Last FM API Docs
  • Provide a convenient interface for sending requests to the server
  • Add doc-strings to each method or class
  • Add asynchronous support
  • Add tests
  • Add support for documentation in different languages

Documentation

This documentation provides examples of how to use the synchronous and asynchronous classes and methods, and shows all available methods and parameters

Installation

To install this library, you need to enter the following command

pip install -U lastfmxpy

Example of SYNCHRONOUS usage

In this example, we use the LastFMApi class that we previously imported from the api package, and then use the post method in which we set the method we will use and the parameter

import json

from lastfmxpy import (
    api,
    methods,
    params,
)

# Initialise our object through which we will interact with last.fm
client = api.LastFMApi(
    api_key="...", # Get here https://www.last.fm/api/account/create,
    shared_secret="..." # Also get here ( ̄︶ ̄)↗ 
)

# Get all information about the artist in JSON as a string 
response: str = client.post(
    
    # Specify which method we will use
    method=methods.User.GET_INFO,
    
    # Let us specify our parameters
    params=params.UserGetInfo(
        user="pkeorley"
    ),
    
    # We can also specify additional parameters
    additional_params=dict(format="json")

)

# Let's show our data in a convenient form on the screen
data: str = json.dumps(
    json.loads(response),
    indent=4,
    ensure_ascii=False
)

print(data)

Example of ASYNCHRONOUS usage

In this example, we use the AsyncLastFMApi class, which we previously imported from the api package in the same way as in the case of the previous class, and then use the post method in which we set the method we will use and the parameter

import asyncio
import json

from lastfmxpy import (
    api,
    methods,
    params,
)

# Initialise our object through which we will interact with last.fm
client = api.AsyncLastFMApi(
    api_key="...", # Get here https://www.last.fm/api/account/create,
    shared_secret="..." # Also get here ( ̄︶ ̄)↗ 
)

# Get all information about the artist in JSON as a string 
async def main():
    
    # Calling the asynchronous method
    response: str = await client.post(
        
        # Specify which method we will use
        method=methods.User.GET_INFO,
        
        # Let us specify our parameters
        params=params.UserGetInfo(
            user="pkeorley"
        ),
        
        # We can also specify additional parameters
        additional_params=dict(format="json")
    
    )
    
    # Let's show our data in a convenient form on the screen
    data: str = json.dumps(
        json.loads(response),
        indent=4,
        ensure_ascii=False
    )

    return data

print(asyncio.run(main()))

All available methods:

from lastfmxpy.methods import (
    Album,
    Artist,
    Auth,
    Chart,
    Geo,
    Library,
    Tag,
    Track,
    User
)

All available parameters:

from lastfmxpy.params import (
    AlbumAddTags,
    AlbumGetInfo,
    AlbumGetTags,
    AlbumGetTopTags,
    AlbumRemoveTag,
    AlbumSearch
)

from lastfmxpy.params import (
    AlbumAddTags,
    AlbumGetInfo,
    AlbumGetTags,
    AlbumGetTopTags,
    AlbumRemoveTag,
    AlbumSearch
)
from lastfmxpy.params import (
    ArtistAddTags,
    ArtistGetCorrection,
    ArtistGetInfo,
    ArtistGetSimilar,
    ArtistGetTags,
    ArtistGetTopAlbums,
    ArtistGetTopTags,
    ArtistGetTopTracks,
    ArtistRemoveTag,
    ArtistSearch
)
from lastfmxpy.params import (
    AuthGetMobileSession,  # deprecated as last.fm
    AuthGetSession,
    AuthGetToken
)
from lastfmxpy.params import (
    ChartGetTopArtists,
    ChartGetTopTags,
    ChartGetTopTracks
)
from lastfmxpy.params import (
    GeoGetTopArtists,
    GeoGetTopTracks
)
from lastfmxpy.params import (
    LibraryGetArtists
)
from lastfmxpy.params import (
    TagGetInfo,
    TagGetSimilar,
    TagGetTopAlbums,
    TagGetTopArtists,
    TagGetTopTracks,
    TagGetWeeklyChartList
)
from lastfmxpy.params import (
    TrackAddTags,
    TrackGetCorrection,
    TrackGetInfo,
    TrackGetSimilar,
    TrackGetTags,
    TrackGetTopTags,
    TrackLove,
    TrackRemoveTag,
    TrackScrobble,
    TrackSearch,
    TrackUnlove,
    TrackUpdateNowPlaying
)
from lastfmxpy.params import (
    UserGetFriends,
    UserGetInfo,
    UserGetLovedTracks,
    UserGetPersonalTags,
    UserGetRecentTracks,
    UserGetTopAlbums,
    UserGetTopArtists,
    UserGetTopTags,
    UserGetTopTracks,
    UserGetWeeklyAlbumChart,
    UserGetWeeklyArtistChart,
    UserGetWeeklyChartList,
    UserGetWeeklyTrackChart
)

License

lastfmxpy is distributed under the terms of the MIT license.

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

lastfmxpy-1.2.2.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

lastfmxpy-1.2.2-py3-none-any.whl (27.3 kB view details)

Uploaded Python 3

File details

Details for the file lastfmxpy-1.2.2.tar.gz.

File metadata

  • Download URL: lastfmxpy-1.2.2.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for lastfmxpy-1.2.2.tar.gz
Algorithm Hash digest
SHA256 42e12064a6a4aabf13cfe53dddedf7b2707493393a20b6155d1f88522b15733a
MD5 c64a3bf93f57887acb0025dbcd0e6aea
BLAKE2b-256 5f835956c7bd5b60a337e25fc224b0ef9547100e8886b9bfbd5a9dbdd99a05f9

See more details on using hashes here.

File details

Details for the file lastfmxpy-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: lastfmxpy-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 27.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for lastfmxpy-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 69a0b1f2cebd7928493f6513ba0aad6290c0bcfb5b72928cb6c2d9ece71413dc
MD5 b12202572ea8d97d50d9e6af7e78d502
BLAKE2b-256 a70b38e2b452eb3373a28439e968ccd5ff43d040fcf890feacee586f178df647

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page