GithubHelp home page GithubHelp logo

williamsjokvist / cfn-tracker Goto Github PK

View Code? Open in Web Editor NEW
41.0 6.0 4.0 25.54 MB

Track the live ranked match data of any Street Fighter 6 player

Home Page: https://cfn.williamsjokvist.se/

License: Other

Go 52.68% JavaScript 0.83% TypeScript 41.45% Sass 0.46% CSS 1.74% HTML 2.85%
street-fighter tracking webscraping

cfn-tracker's Introduction



CFN Tracker

Track any Street Fighter 6 or V CFN profile's live matches.
Check the website to get started.

Features

  • Real-time match tracking

  • Storing match logs and statistics

  • Support for displaying live stats to OBS via Browser Source and Text Labels

  • Support for both SF6 and SFV

  • Ability to create own OBS Browser theme with CSS

    Streamer showcase

Contributing

Contributions are welcome, take a look at the issues or open one yourself!

Setting up development environment

  1. Install dependencies

    • Wails
    • Task - optional, but recommended
    • Bun - mac/linux only, optional
  2. Create a .env in the project's root based on example.env

  3. Run task --list to view the list of commands

cfn-tracker's People

Contributors

tifye avatar williamsjokvist 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cfn-tracker's Issues

Implement force poll button

Create an interrupt handler which forces a poll when user has prompted it, maybe this should also have a cooldown

Improve UX when failing to start go-rod browser

Right now the program the panics and the user is left wondering what the hell happened. Maybe could keep the program open but display and error or something similar. Could also be useful to look into how we can get a hold of some logs.

Set up release flow

Set up goreleaser so we don't have to manually make releases. The website should also be made to always point to the latest release's download link

Steam CAPTCHA

When the program has been re-executed many times from the same IP, Steam will prompt for a CAPTCHA on log in.

One way to solve this could be for the bot to relaunch itself in a non headless window - with image GET requests enabled - so the user can solve it

I'm not sure how much this will impact regular users since the Chromium instance will cache the log in for some time. It is probably mostly an issue in development when failing login attempts a bunch.

Fix authentication tests

Currently the Authentication tests are failing due to errors connecting to the browser.

One way to possibly solve this is to connect to the browser inTestMain instead of in each test

Restore last session option when no last session exists for that player

When selecting player chips the option to restore last session is available.
Trying to start tracking after selecting to restore session (when no session exists) causes the error message "CFN does not exist"

Expected behavior is to not allow option to restore session when one does not exist.

l think this is because players are saved in database even though no sessions were saved for them.

Align SF5 tracker with SF6 makeovers

The SF5 part of the codebase needs to be aligned with the SF6 part. SF5 tracker still relies on TrackingState for updates, and isn't integrated with the storage layer yet.

It also needs to be live tested, it might not work anymore

Rounds win/loss weight

Would be cool to also display how strongly the player has been winning/losing their matches.
For example you could be winning by 2-0 which could be seen as strong win, and 2-1 as less strong.

Add bug report functionality

Now that we log to file we should add a report bug feature

Ideally this would be a form that sends an email to the maintainers of the repo

Self-updating client

Currently the client lets the user know that there is an update, and links to the download page. Instead the client could update itself sparing the user of having to do this, especially if there's an update that the user must download.

Wrap SF6 auth function in a restore to prevent crash.

Right now sf6.Authenticate contains a bunch of "Must" function calls from go-rod. It would be annoying to add error checking for every single line. Could instead wrap the function in a restore and return an error that way.

Improve development on windows

Right now contributors on windows systems must manually change wails.json, tsconfig.json, and package.json and a few others. This is because Bun isn't available on windows. Switching between branches also require push and apply from stash all the time. Would be nice without have these extra steps.

Rethink error propogation to frontend

Right now we only provide the internal error message to the frontend. We should extend the error interface with an error code so the frontend can display the error in different languages

Have separate state machine for pre and post game select states

The state machine for the front-end is becoming quite unwieldy. It is recommended by xstate to use services to break up into smaller state machines that communicate with each other.

We can have a state machine for the game picking process and one for tracking/cfn picking process. They are logically separate and only connected by a single point.

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.