Git Product home page Git Product logo

cursemeta's Introduction

I'm a curious engineer who likes to tinker with electronics and software. I think this represents me best: ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

  • ๐Ÿ’ผ I'm working at Qteal. My work related projects don't generally use GitHub. See LinkedIn or my website for more info
  • โ›๏ธ Many of the projects on here are Minecraft related. I'm currently not doing much Minecraft mod development anymore.
  • ๐Ÿ“– Others are personal sideprojects I do for learning.
  • ๐Ÿซ Some of the (pre 2019) repositories are school related projects.
  • ๐Ÿค– There are some electronics related projects here, but most are not in Git. Some are on my website though.
  • ๐Ÿ–จ๏ธ I own a 3D printer, but much like the electronics projects, that generally doesn't end up on git.

Some of my most notable (open source) projects include:

  • CurseMeta Now deprecated proxy to the CurseForge (aka Twitch for a while) mod API that made third party Minecraft launcher integration possible. Used by MultiMC since 2017 and serves about 20 million requests per month.
  • MCLink A service that lets someone make a (Twitch/Patreon) subscriber only Minecraft server automatically.
  • TerraFirmaCraft The port to for Minecraft 1.12. This is a port of a mod I played a lot a long time ago. I started the project, but now most of the development is done by other members of the community.

cursemeta's People

Contributors

dries007 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

nikkyai temp1011

cursemeta's Issues

A few requests

Hello, I've been looking into using this for MMD's curse info bot. Basically you give the bot a username, it will tell you how many downloads that user has, and link to their top 10 projects. I was wondering if you could add a few things to help us out.

This is what the current output looks like.
image

The main thing missing is the monthly downloads data for a specific project. Im not sure if you have that data available when you scrape it, but it would be nice to keep that feature. Some other feature requests would be a way to get all of the projects from a username. Grabbing the mods.json every few hours and processing it ourselves would allow for this, however it would make the bot less ram/storage efficient than it is now. I noticed that you can search using a username but scraping this has similar performance to what we have now.

Another thing we have been planning to implement, is a system that will announce when a new mod has been put on Curse. This is probably beyond your scope, but do you think it would be possible to have a way to get all mods that were created since the last time the data was scraped?

Thanks

Invalid author URL

I noticed that the user profile has the ASPX extension appended when it shouldn't. This is easy to fix on the receiving end, but still a bit weird.

  "Authors": [
    {
      "Name": "NuclearHex",
      "Url": "https://mods.curse.com/members/NuclearHex.aspx"
    }
  ],

API Spec

The API should support basic query syntax, for example:

GET /.json?ver=1.12&fields=name,versions,url
[
    {
        "name": "Project that supports 1.12",
        "versions": ["1.12", "1.0"],
        "url": "http://blah.blah"
    }
]

There should also be endpoints for searching, eg;

GET /search.json?q=tinkers
[
    {
        // Tinkers Construct
    },
    {
        // IDK something else with tinkers in the name/desc
    }
]

(Will continue updating this issue)

GameVesion

The game version for releases is is missing an R in the key. Just spent a good amount of time trying to work out why I kept getting issues with undefined values lol.

		{
			"FileType": "release",
			"GameVesion": "1.4.2",
			"ProjectFileID": 642755
		},

docs for GetRepositoryMatchFromSlug

Pretty basic use-case of resolving a slug to an mod id. No idea how to get it to work.

I tried minecraft/storage-drawers using GET & POST in various different forms, but I always just get 200 null back (yay)

Server pack support

It would be really nice to have a way to get server version of a modpack (imagine a self-updating modded server). Right now the API lists only client-version files.

Just my thoughts: AddonFile model has IsCompatibleWithClient property. Could be the thing.

CurseMeta v2 updates/todo list

You can watch this issue if you want to know if/when sections are finished.

V2 is now live, under beta label. A live-edit staging environment can also be found on staging_cursemeta.dries007.net.

With the v2 python rewrite, all the previous aggregation/stats/history functionality was lost.
Bringing all of it back will take time, but will be done over time.

Feel free to comment and note what you need. New functionality may also be requested here.

ToDo snapshot as of March 14th

  • Referral link: https://workflowy.com/invite/4dfc7739.lnx (Gives me more free space to add stuff!)
  • Keep historic DL counts
    • PopularityScores?
    • The sooner the better, less data loss
    • I have the historic data still (Write import script)
    • API
      • Diff downloads (from-to timestamp)
      • Get total downloads per game/type
    • Keep up to date with feeds only?
    • Fixed interval data points or detect a change on every update?
      • I think more fixed interval, probably less data. Maybe even only do changed data?
  • Status page
    • Internal statistics such as
      • Threads running (?)
      • Uptime global/thread (?)
      • Requests served global/thread (?)
      • Task queue size
      • Server load
      • Approx bandwidth used
    • Any other stats?
    • Should this be public?
  • Web UI
  • DB query API
  • Uniform output API (Post process everything)
    • Fix typos (GameVersion is missing the R in some places)
    • Add Addon data to File objects (so less requests are needed)
    • Selective return data
      • Jenkins API like ?
    • Re-processed (or similar but DIY) raw feeds, preferably compressed.
  • Statistics pages (Graphs & tables!)
    • Old version: https://cursemeta2.dries007.net/stats/graphs.html
    • Maybe take some inspiration from MCStats.org ?
    • Stuff to stat (Global & per game, type, author(primary & all), gameversion)
      • nr of games
      • nr of addons
      • nr of files
      • nr of authors
      • Downloads
      • Filesizes
      • PopularityScores
      • GameVersions
      • Newest files
      • Newest addons
      • Newest authors (?)
      • Highest downloads 24h/7d/1m/
  • Separate out UI and data
    • Now the analysis of the response gets triggered by the CurseClient module, but is processed in the Frontend module (as part of tasks)
    • Make a more modularized system (would also support better tests)
  • File downloads (on the server)
  • Archive
    • We are not in the business of archiving, but supporting others is OK.
    • Write a script people can use to keep an archive (preferably with options).
  • Crazy idea: Draw a huge (interactive?) graph of the authors - addons relations + file dependencies?
  • Write the history of CurseMeta somewhere, because it's interesting.
  • Write tests (meh)
    • Get a list of troubling addon/file ids to test on (weird characters, no files, etc)
  • Pick a theme song.

522s on some project/mod id combinations

Some Project+FileID combinations MultiMC is trying to resolve via CurseMeta are returning host errors. It looks like it might be an intermittent issue, my guess is that the result sometimes manages to make it to the cache but that the backend requests are timing out. Sorry for hammering the heck out of the server ๐Ÿ˜…

Examples

image

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.