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 🙏

© 2025 – Pkg Stats / Ryan Hefner

switch-tracker

v0.1.0

Published

Extract switch playtime from the Switch Parental Controls app

Readme

switch-tracker

Extract switch playtime from the Switch Parental Controls Android app

Nintendo allows switch owners to track their gaming time using the Switch Parental Control app, but no API is available to access that data. This library extracts that data by controlling a developer enabled android device, using the ADB (Android Debug Bridge) command line tool.

See it in action:

Phone being controlled remotely to extract the playtime data

This library was tested on a Raspberry Pi and on macOS

Requirements

Installation

npm install switch-tracker

Usage

Terminal command

$ switch-tracker

Node.js

import { getSwitchPlayTime } from 'switch-tracker'

async function printPlayTime() {
    const playTime = await getSwitchPlayTime()
    console.log(playTime)
}

printPlayTime()

Example output:

[
  {
    "dateString": "Today",
    "weekday": "Su",
    "minutes": 0,
    "index": 0,
    "date": "2021-01-24"
  },
  {
    "dateString": "Yesterday",
    "weekday": "Sa",
    "minutes": 110,
    "index": 1,
    "date": "2021-01-23"
  },
  {
    "dateString": "22",
    "weekday": "Fr",
    "minutes": 0,
    "index": 2,
    "date": "2021-01-22"
  },
  /* ... */
]

Options

Descriptions:

  • pages: Number scrolls down the list of days, determines how many days are parsed
  • xmlFile: Temporary XML file path with the android UI information. Note: Probably doesn't need to be changed

Examples:

cli:

$ switch-tracker --pages 6 --xml-file ./android-ui.xml

code:

const playTime = await getSwitchPlayTime({
    pages: 6,
    xmlFile: "./android-ui.xml"
})

Specifications:

| json field | cli | type | default | | ---------- | --------------- | ------------- | ----------------------- | | pages | -p --pages | number | 4 | | xmlFile | -f --xml-file | string (path) | switch-tracker/ui.xml |

Troubleshooting

  • Error: Command failed: adb shell uiautomator dump:
    • This is a known transient error, killing the app manually and giving it some time before trying it again should fix it
  • Please submit an issue if you run into anything else!

Development

Exiting features and some ideas for new ones:

  • [x] extract play time for each day
  • [x] cli tool
  • [ ] handle transient errors
  • [ ] add option to specify how many days to extract instead of specifying times to scroll
  • [ ] get games played that day
  • [ ] use nintendo's api directly instead of controlling an android device (see switchpub)

If you have any problems or suggestions, please open an issue or submit a pull request!

License

MIT License