Giter Site home page Giter Site logo

randomstuffwebsite's Introduction

Maddie's Random Stuff Website

This is the source code for the maddie480.ovh website, an app running on Java 17 using Eclipse Jetty.

The src folder contains the source for everything provided by the Java servlet:

The front-vue folder contains the source for more dynamic frontend parts made in Vue.js:

If you want to check how the update checker's everest_update.yaml file is generated, check the Everest Update Checker Server repo instead.

GameBanana search API

This API uses the mod search database generated by the Everest Update Checker server to find mods based on keywords. This searches Celeste mods only.

It is used by Olympus, the Everest installer and mod manager, to search Celeste mods on GameBanana.

To use this API, call https://maddie480.ovh/celeste/gamebanana-search?q=[search]. The answer is in JSON format, and is a list of the top 20 matches. For example:

$ curl "https://maddie480.ovh/celeste/gamebanana-search?q=spring+collab+2020&full=true"
[
  {
    "CategoryId": 4632,
    "Screenshots": [
      "https://images.gamebanana.com/img/ss/mods/5fcaf5f6990f6.jpg",
      "https://images.gamebanana.com/img/ss/mods/5fcaf5ffe2893.jpg"
    ],
    "Description": "Made by KawaiiDawn",
    "Views": 3456,
    "GameBananaType": "Mod",
    "GameBananaId": 53717,
    "Text": "NOTE: THIS RANDOMIZER WILL SOON BE OBSOLETED BY ANOTHER COLLAB RANDOMIZER THAT IS FARTHER IN PROGRESS THAN THIS ONE, BE SURE TO DISABLE THIS MOD WHEN THAT MOD COMES OUT (You can still enjoy this until that comes out, think of this as a preview ;D)<br>Bigkahuna is making the updated one btw<br><br>This mod adds in randomizer options for maps from the 2020 Celeste Community Spring Collab. Currently, only beginner maps are available, but I am still actively working to add in every map.&nbsp;If you have any questions feel free to post here or message me on discord:&nbsp;?KawaiiDawn?#2795<br>FINISHED:<br>Beginner Maps<br>PLANNED:<br>Intermediate Maps, Advanced Maps, Expert Maps, Grandmaster Maps<br>KNOWN ISSUES:<br>Crystal Enigma causes the game to crash at the randomizer menu, so that map is currently absent from the list of available maps.<br>Screens from certain maps may appear much less often, I don't know why this happens.<br>The game randomizes the custom tileset slots, but I plan to keep this as I think randomized tilesets is a neat feature.<br>Some rooms may be impossible. I went through every room, but there still may be issues in some. Contact me if you find an impossible room.",
    "Name": "2020 Spring Collab Randomizer (v0.1)",
    "PageURL": "https://gamebanana.com/mods/53717",
    "MirroredScreenshots": [
      "https://celestemodupdater.0x0a.de/banana-mirror-images/img_ss_mods_5fcaf5f6990f6.png",
      "https://celestemodupdater.0x0a.de/banana-mirror-images/img_ss_mods_5fcaf5ffe2893.png"
    ],
    "CreatedDate": 1607137213,
    "Author": "KawaiiDawn",
    "CategoryName": "Other/Misc",
    "Downloads": 209,
    "Likes": 1,
    "Files": [
      {
        "Description": "",
        "HasEverestYaml": true,
        "Size": 8859,
        "CreatedDate": 1607136797,
        "Downloads": 209,
        "URL": "https://gamebanana.com/dl/499384",
        "Name": "sc2020rando.zip"
      }
    ]
  },
  [...]
]

GameBanana sorted list API

This API allows to get a sorted list of most downloaded, liked or viewed Celeste mods on GameBanana.

If you want to retrieve the latest mod with no type filter, it is recommended to use the real GameBanana API instead, for more up-to-date information.

The URL is https://maddie480.ovh/celeste/gamebanana-list?sort=[sort]&type=[type]&category=[category]&page=[page] where:

  • sort is the info to sort on (mandatory). It can be latest, likes, views or downloads
  • type (or itemtype) is the GameBanana type to filter on (optional and case-insensitive). For example Map, Gamefile or Tool
  • category is the GameBanana mod category ID to filter on (optional), this is returned by the GameBanana categories list API. For example 944
  • page is the page to get, first page being 1 (optional, default is 1). Each page contains 20 elements.

The output format is the same as the GameBanana search API, see the previous section. You also get the total amount of mods in the list, as a X-Total-Count header.

GameBanana featured mods list API

Hit the following URL: https://maddie480.ovh/celeste/gamebanana-featured to get a list of all mods that are shown in the front page of Celeste.

The output is JSON, in the same as the GameBanana search API (see the corresponding section).

Each mod has a Featured key if it is featured. The Category is one of the following:

  • today: Best of today
  • week: Best of this week
  • month: Best of this month
  • 3month: Best of 3 months
  • 6month: Best of 6 months
  • year: Best of this year
  • alltime: Best of all time

This API sorts the mods in the same order as they are on the website: by Category (following the order above) then by Position.

GameBanana mod info API

This API provides info on a mod, based on its itemtype and itemid, in the same as the GameBanana search API (see the corresponding section).

The URL is https://maddie480.ovh/celeste/gamebanana-info?itemtype=[itemtype]&itemid=[itemid]:

$ curl "https://maddie480.ovh/celeste/gamebanana-info?itemtype=Mod&itemid=150813"
{
   "CategoryId":6800,
   "Screenshots":[
      "https://images.gamebanana.com/img/ss/mods/5f590aced2b97.jpg",
      "https://images.gamebanana.com/img/ss/mods/5f46e9ee53c9b.jpg"
   ],
   "Description":"A collaboration involving 100+ people to commemorate Celeste",
   "Views":511063,
   "GameBananaType":"Mod",
   "TokenizedName":[
      "the",
      "2020",
      "celeste",
      "spring",
      "community",
      "collab"
   ],
   "UpdatedDate":1668375864,
   "GameBananaId":150813,
   "Featured":{
      "Position":0,
      "Category":"alltime"
   },
   "Text":"<span class=\"GreenColor\"><b>The 2020 Celeste Spring Collab is a project that has been in the making for over 8 months with 100+ people involved. <\/b>After waiting patiently for so long, we're proud to present you the final product!<br><\/span> [...]",
   "ModifiedDate":1668375829,
   "Name":"The 2020 Celeste Spring Community Collab",
   "PageURL":"https://gamebanana.com/mods/150813",
   "MirroredScreenshots":[
      "https://celestemodupdater.0x0a.de/banana-mirror-images/img_ss_mods_5f590aced2b97.png",
      "https://celestemodupdater.0x0a.de/banana-mirror-images/img_ss_mods_5f46e9ee53c9b.png"
   ],
   "CreatedDate":1599670994,
   "Author":"Spring Collab 2020 Team",
   "CategoryName":"Maps",
   "Downloads":100049,
   "Likes":154,
   "Files":[
      {
         "Description":"v1.7.5",
         "HasEverestYaml":true,
         "Size":56290503,
         "CreatedDate":1668375774,
         "Downloads":12687,
         "URL":"https://gamebanana.com/dl/890982",
         "Name":"springcollab2020_bdf5e.zip"
      },
      {
         "Description":"Audio v1.0.0",
         "HasEverestYaml":true,
         "Size":513411848,
         "CreatedDate":1599575103,
         "Downloads":26737,
         "URL":"https://gamebanana.com/dl/484937",
         "Name":"springcollab2020audio_135a4.zip"
      },
      {
         "Description":"Outdated - Old Grandmaster HS",
         "HasEverestYaml":true,
         "Size":159602,
         "CreatedDate":1616693898,
         "Downloads":918,
         "URL":"https://gamebanana.com/dl/539975",
         "Name":"springcollab2020oldgmhs_ee692.zip"
      }
   ]
}

GameBanana categories list API

This API allows getting a list of GameBanana item types that have at least one Celeste mod in it (contrary to the official GameBanana v2 API for this), along with how many mods there are for each category.

The counts returned by this API might not match the numbers displayed on the GameBanana website; that's because GameBanana counts mods that do not show up in the list.

Each entry can have an itemtype and a categoryid, that can be used as type and category parameters on the list API.

The URL is https://maddie480.ovh/celeste/gamebanana-categories and the result looks like:

- formatted: All
  count: 1406
- itemtype: Mod
  categoryid: 15655
  formatted: Assets
  count: 26
- itemtype: Mod
  categoryid: 4633
  formatted: Dialog
  count: 20
- itemtype: Mod
  categoryid: 1501
  formatted: Effects
  count: 5
- itemtype: Tool
  formatted: Tools
  count: 30
...

GameBanana category RSS feed API

Note that this API works for all GameBanana categories, not only Celeste ones.

This API uses the "get mods for a category" API from GameBanana, then turns the result in an RSS format.

Usage is very similar to the "vanilla" GameBanana API, since it calls it directly behind the scenes: for example, getting the latest Celeste helpers (https://gamebanana.com/mods/cats/5081 ➡️ ID is 5081) is done with

https://gamebanana.com/apiv8/Mod/ByCategory?_csvProperties=@gbprofile&_aCategoryRowIds[]=5081&_sOrderBy=_tsDateAdded,DESC&_nPerpage=10

You can get them in the RSS format by just replacing the URL and carrying over all query params except _csvProperties:

https://maddie480.ovh/gamebanana/rss-feed?_aCategoryRowIds[]=5081&_sOrderBy=_tsDateAdded,DESC&_nPerpage=10

You can copy this URL replacing 5081 with the category of your choice to get a feed for the latest mods in this category. To include mod updates (and not only new mods), replace _tsDateAdded with _tsDateUpdated.

If the GameBanana API returns an error (for example if you pass an invalid parameter), this API will return it as is.

Random Celeste map button

Click here to get redirected to a random Celeste map.

Everest versions list API

This API is available at https://maddie480.ovh/celeste/everest-versions, and returns all the Everest versions available, in JSON format. For example:

[
    {
        "version": 3520,
        "branch": "dev",
        "author": "bigkahuna443",
        "description": "Handle duplicate room names",
        "date": "2022-08-10T15:09:33.8105837Z",
        "mainDownload": "https://dev.azure.com/EverestAPI/Everest/_apis/build/builds/2820/artifacts?artifactName=main&api-version=5.0&%24format=zip",
        "olympusMetaDownload": "https://dev.azure.com/EverestAPI/Everest/_apis/build/builds/2820/artifacts?artifactName=olympus-meta&api-version=5.0&%24format=zip",
        "olympusBuildDownload": "https://dev.azure.com/EverestAPI/Everest/_apis/build/builds/2820/artifacts?artifactName=olympus-build&api-version=5.0&%24format=zip"
    },
    [...]
]
  • version is the Everest version number.
  • branch is either dev, beta or stable. Other branches might be created to test specific features in the future.
  • mainDownload is the download for use by Everest to install an update.
  • date is the date at which the version was published, in ISO 8601 format.
  • olympusMetaDownload is the download that Olympus uses to get the build size.
  • olympusBuildDownload is the download for use by Olympus to install Everest.

Two extra fields are specified for automatic builds made after a single change (commit or pull request merge):

  • author is the author of the change (GitHub username), either the author of the commit or the creator of the pull request.
  • description is the description of the change, either the message of the commit or the title of the pull request.

If the version of Everest/Olympus you are calling this API from supports installing native builds (.NET Core builds), you should pass the supportsNativeBuilds=true query parameter to include them. As of now, this adds an extra branch to the output of the API, called core.

randomstuffwebsite's People

Contributors

dependabot[bot] avatar maddie480 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.