npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gatsby-source-lastfm

v0.1.2

Published

A GatsbyJS source plugin for building websites using Last.FM

Downloads

12

Readme

gatsby-source-lastfm

npm package npm package

This is a source plugin for GatsbyJS to pull information from Last.FM. It will pull in playbacks and associated information for a user into GraphQL, preserving all links as expected. The plugin will grab up until the limit set in its configuration; if no limit is set, it will grab all a user's scrobbles. Note that this could take a LONG time -- for 100,000 scrobbles, this equates to about 9 hours to build my site. In short, including everything could make your build take all day.

Notes on Testing/TravisCI

This plugin originally had its own .travis.yml file. Originally, this did the babel traspilation step and verified that no errors took place; it never was capable of testing the actually funcationality of the plugin without a GatsbyJS build process to test in.

To improve this, I've moved testing for all my GatsbyJS source plugins to test suites in the repository for www-jamesdanylik-com. Here, TravisCI handles building my Gatsby site, running all my source plugins; after a build is created successfully, I run test suites in Jest with Pupeteer on each of my plugins and the entire created site -- testing in this manner enables access to the complete plugin run, and allows me to ensure each of the plugins are running as expected.

TravisCI is configured to rebuild my site daily, regardless of activity, so I should detect outages fairly quickly.

Install

npm install --save gatsby-source-lastfm

Configuration

// In your gatsby-config.js
plugins: [
  {
        resolve: "gatsby-source-lastfm",
        options: {
          api_key: '<<YOUR API KEY HERE>>',
          username: '<<USERNAME TO TRACK>>',
          limit: 200, // the maximum number of playbacks to pull in
        },
  },
  ...
]

Provided Queries

Playbacks

  allLastfmPlayback {
    edges {
      node {
        id
      date {
        uts
        text
      }
        track {
          id
          # linked track node here
          # (See track query for all fields)
        }
      }
    }
  }

Tracks

  allLastfmTrack {
    edges {
      node {
        id
        name
        loved
        mbid
        streamable
        url
        image {
          text
          size
        }
        artist {
          id
          # linked artist node here!
          # (See artist query for all fields)
        }
        album {
          id
          # linked album node here!
          # (See album query for all fields)
        }
        playbacks {
          id
          # linked playback nodes here!
          # (See playbacks query for all fields)
        }
      }
    }
  }

Albums

  allLastfmAlbum {
    edges {
      node {
        id
        name
        mbid
        playbacks {
          id
          # linked playback nodes here!
          # (See playbacks query for all fields)
        }
        artist {
          id
          # linked artist node here!
          # (See artist query for all fields)
        }
        tracks {
          id
          # linked track nodes here
          # (See track query for all fields)
        }
      }
    }
  }

Artists

  allLastfmArtist {
    edges {
      node {
        id
        name
        mbid
        image {
          text
          size
        }
        playbacks {
          id
          # linked playback nodes here!
          # (See playbacks query for all fields)
        }
        albums {
          id
          # linked album nodes here!
          # (See album query for all fields)
        }
        tracks {
          id
          # linked track nodes here
          # (See track query for all fields)
        }
      }
    }
  }

Meta

  allLastfmMeta {
    edges {
      node {
        id
        total_playbacks
      }
    }
  }