0.2.0 • Published 3 years ago

scratch-stats v0.2.0

Weekly downloads
6
License
MIT
Repository
github
Last release
3 years ago

Scratch Stats

A simple package to fetch project stats from the publicly available Scratch API. This is published as a TypeScript package, but can be used from Javascript as well.

Installation

$ yarn add scratch-stats

Usage

There are a couple of core resources exposed by the API that this library makes use of: User and Project. The main entry point is the user:

import { Scratch } from 'scratch-stats';

Scratch.user('rebbel16').then((user) => {
  console.log('I am:', user.username);
});

It's possible to chain other queries off of this initial user:

Scratch.user('YO_GIRL_').then(async (user) => {
  console.log('I am:', user.username, '\n');

  const popularProjects = await user.projects({ order: { views: 'DESC' } });

  console.log('Here are my popular projects:\n');

  for (const project of popularProjects) {
    console.log(
      ` * ${project.title} (${project.url}, views: ${project.views})`
    );

    if (project.isRemix) {
      const parent = await project.parent()!;
      const creator = parent.author;

      console.log(
        `    ... a remix of ${parent.title}, created by: ${creator.username}`
      );
    }
  }
});

As well as fetching a project by ID directly:

Scratch.project(441385296).then((project) => {
  console.log('Project');
  console.log(`     Title: ${project.title}`);
  console.log(`   Created: ${project.createdAt}`);
  console.log(`Created by: ${project.author.username}`);
  console.log(`            ${project.author.url}`);
});

Development

Make sure all dependencies are installed:

$ yarn install

You can test the installation by running:

$ yarn test

This package has a single external dependency (Axios) for providing HTTP connectivity. When adding tests, follow the existing patterns for faking these external connections.

When creating a release, ensure that the generated package contains the expected files:

$ yarn build && yarn pack && tar tzf scratch-stats*.tgz