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

@zeepkist/combine

v3.2.0

Published

Combines leaderboard data from the monthly Zeepkist Super League (ZSL) events into a single dataset per event

Downloads

31

Readme

Zeepkist Leaderboard Combiner

Combines leaderboard data from the monthly Zeepkist Super League (ZSL) events into a single dataset per event.

How to use

Pre-requisites

Install the following system dependencies:

Install the following Zeepkist plugins:

Configure the Leaderboard Logger plugin

Open the logger config file (Zeepkist/BepInEx/config/net.tnrd.zeepkist.leaderboardlogger.cfg) and set the options to:

[Formatting]
Filename = %Date:yyyyMMddTHHmmss%_%LevelUid%_Xw==_%Name%.csv
Entry = %SteamId%,%Username%,%Time%,%ZeepkistId%,%ColorId%,%HatId%

Save the leaderboard data in Zeepkist

Run Zeepkist and use /start log at the start of each level in an online room to log the leaderboard data (you do not need to be host)

Log files are saved to %userprofile%\AppData\Roaming\Zeepkist\Leaderboard Logs

Install this app

npm install -g @zeepkist/combine

Run this app

Create a new folder for the event and move the leaderboard logs into the folder. E.g %userprofile%\AppData\Roaming\Zeepkist\Leaderboard Logs\Example Event

Run the app with the following command:

super-league --input 'Example Event' --output 'Example Event Results'

The app will output the combined leaderboard data to the Example Event Results folder.

Multiple Events (with Season Standings)

If you have multiple events in the same season, you can combine them all into a single season standings with individual results for each event by running the app on the parent folder. E.g %userprofile%\AppData\Roaming\Zeepkist\Leaderboard Logs\Season 1\Example Event

super-league --input 'Season 1' --output 'Season 1 Results'

Multiple Seasons

If you have multiple seasons, you can generate all seasons at once by running the app on the parent folder. E.g %userprofile%\AppData\Roaming\Zeepkist\Leaderboard Logs\Seasons\Season 1\Example Event

super-league --input 'Seasons' --output 'Seasons Results'

Input File Structure

Single Event

One or more CSV leaderboard logs in the input folder

Input Folder
 ├── 20221204T180734_18112022-104248521-AuthorName-481758454581-1683_Xw==_RoomName.csv
 ├── 2021-01-01T12:00:00_1234567890_Example Level 2.csv
 └── 2021-01-01T12:00:00_1234567890_Example Level 3.csv

Multiple Events (with Season Standings)

One or more folders in the input folder each containing one or more CSV leaderboard logs

Input Folder
   ├── Example Event 1
   │   └── 20221204T180734_18112022-104248521-AuthorName-481758454581-1683_Xw==_RoomName.csv
   └── Example Event 2
      └── 20221204T180734_18112022-104248521-AuthorName-481758454581-1683_Xw==_RoomName.csv

Multiple Seasons

One or more folders in the input folder each containing one or more events (see above)

Input Folder
   ├── Season 1
   │   ├── Example Event 1
   │   │   └── 20221204T180734_18112022-104248521-AuthorName-481758454581-1683_Xw==_RoomName.csv
   │   └── Example Event 2
   │      └── 20221204T180734_18112022-104248521-AuthorName-481758454581-1683_Xw==_RoomName.csv
   └── Season 2
      ├── Example Event 1
      │   └── 20221204T180734_18112022-104248521-AuthorName-481758454581-1683_Xw==_RoomName.csv
      └── Example Event 2
         └── 20221204T180734_18112022-104248521-AuthorName-481758454581-1683_Xw==_RoomName.csv

Output File Structure

Single Event

Output Folder
 └── Output Folder.json

Multiple Events (with Season Standings)

Output Folder
 ├── metadata.json
 ├── standings.json
 ├── Example Event 1.json
 └── Example Event 2.json

Multiple Seasons

Output Folder
 ├── metadata.json # auto-generated file containing metadata for all seasons
 ├── Season 1
 │   ├── metadata.json
 │   ├── standings.json
 │   ├── Example Event 1.json
 │   └── Example Event 2.json
 └── Season 2
     ├── metadata.json
     ├── standings.json
     ├── Example Event 1.json
     └── Example Event 2.json

Metadata Files (Optional)

You can add metadata to events and seasons by creating a metadata.json file in the season folder.

Metadata allows you to:

  • Add a custom name and workshop ID to each event of a season.
  • Change the point system for a season

Given the input folder structure of multiple events:

Input Folder
   ├── metadata.json
   ├── 2023-01-01
   │   └── *.csv
   └── 2023-02-01
      └── *.csv

Given the input folder structure of multiple seasons:

Input Folder
   └── Season 1
       ├── metadata.json
       ├── 2023-01-01
       │   └── *.csv
       └── 2023-02-01
          └── *.csv

The file should be structured as:

{
  "events": {
    "2023-01-01": {
      "name": "Example Event 1",
      "workshopId": "1234"
    },
    "2023-02-01": {
      "name": "Example Event 2",
      "workshopId": "5678"
    }
  },
  "points": [10, 7, 5, 3], // 1st, 2nd, 3rd, 4th ... etc,
  "finishPoints": 0 // points for finishing the level (any position not covered by the "points" array, e.g 5th or lower in example above)
}