Git Product home page Git Product logo

beatsaver-main's People

Contributors

allpoland avatar caeden117 avatar joellarson avatar ktkongtong avatar nsgolova avatar pixelguymm avatar specture7 avatar tohrazer avatar top-cat avatar xace1337manx 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

beatsaver-main's Issues

[Request] Adjust note count for maps with Noodle requirement

For the NPS count on maps, if there is a way, it would be nice if it supported "_fake" notes. Same thing with walls. Another cool thing would be a customData/animateTrack/AssignPathAnimation counter on maps. Would help noodle maps look nicer on their map page. Reported by totally balloon#2735

When the map card's username in the "Unpublished" tab is clicked, the user is not redirected to the "Published" section and is stuck in the "Unpublished" section

When viewing the "Unpublished" section of the profile (https://beatsaver.com/profile#unpublished), clicking on a map card's username redirects the user to the user ID version of the profile as expected (https://beatsaver.com/profile/4284242), but is still in the "Unpublished" section view and can't see the expected "Published" maps. The section tabs are not visible, and the user must refresh the page to return to the "Published" view.

Additional Info: When opening the page in a new tab via the map card's username (e.g. middle-click), the user is sent to the correct "Published" maps section on the user ID version of the profile. This issue only occurs when using the built-in routes (e.g. left click).

Example:
"Unpublished" section view:
image

After clicking on the map card's username:
image

[Request] Add a way to "subscribe" to a mapper

It'd be nice to have a subscription area similar to youtube in which you subscribe to a mapper, possibly receive notifications for new uploads, and have a separate area where you could see new maps from people you're subscribed to. There doesn't need to be a subscriber count for a mapper, so there's no competitive reason for it. Just something convenient to be able to easily download new maps from your favorite mappers in a single page. Similar to a mod called BeatSync I believe but in browser

The "Preview" button on the map card uses the map ID, while the "Preview" button in the map page uses the .zip link

When looking at the hyperlink given by the "Preview" button on the map card, the URL uses the map ID version of the BS Viewer.
Example from https://beatsaver.com/profile/4284242 :
image

When looking at the hyperlink given by the "Preview" button on the map page, the URL uses the direct link to the .zip download version of the BS Viewer.
Example from https://beatsaver.com/maps/1b7fb :
image

At the time of writing this issue, the direct link to the .zip download version causes a CORS issue when attempting to open the BS Viewer preview in a new tab (e.g. middle-clicking the "Preview" button). This issue does not occur when attempting to open the BS Viewer preview in a new tab with the map ID version of the hyperlink.
Example from https://skystudioapps.com/bs-viewer/?url=https%3A%2F%2Fna.cdn.beatsaver.com%2Fcf67f9c99572207a8cb109336ffa731f7e8a2af5.zip :
image

Note, the CORS issue does not occur when using BeatSaver's built-in preview functionality.

Improve mapper search

  • Include songAuthorName in search index
  • (Optional) Add some method of restricting search to single mapper mapper:reaxt

Statistics / PFP Glitch

By clicking on "my profile" and selecting "profile" , it takes you to your maps and stuff, where for some reason the PFP and statistics bar and playlist download are missing (see image 1)

However, if you go to the leaderboards and find yourself in there and click on that, it properly displays everything like it should (see image 2)

image
image

CDN problem

I found that some newly uploaded songs are on as.cdn.beatsaver.com, and the covers and maps cannot be downloaded.

And, in China, connecting to as.cdn.beatsaver.com almost has to go around the earth, and it is not even as good as cdn.beatsaver.com. Is there any optimization method? For example, add CDN address option?
I can also provide a CDN server, but the traffic is not a lot. If it is only used for Chinese users, how much traffic is required per month?



If a user clicks "Change username" without changing the username value, the request will still go through and put the username change on cooldown

When clicking on "Change username" in the user profile's "Account" section (https://beatsaver.com/profile#account) when the username field is unchanged/untouched (i.e. not dirty, still exactly the same as the user's current account name), the request will go through successfully and put the username change on the 24-hour cooldown.

Based on the code here:

call.respond(ActionResponse(false, listOf("Username already taken")))

Clicking "Change username" with the same name should return the error "Username already taken", but the same username is being caught as a unique username.

Error received after clicking on "Change username" twice:
image

Add a data point to the site where you can include other mappers' accounts as collaborators

Having a way to specify collaborators by account would be pretty nice.

If I work on a map with someone and they upload it to their account, having that map show up on my map list too even though I didn't upload it would be cool.

If this were to be a feature, I think you would need to add another field to the map cards in the search list that differentiates between uploaders and collaborators/mappers or at least specifies the uploader field.

Clicking mapper name on mapper page sends you back to the top of the page

For some reason, when I click on a mapper anywhere other than the top of the mapper page, it just sends me back to the top of the mapper page

Example 1 (working correctly)
Click here
image

Sends me here
image

Example 2 (not working)
Click here
image

Sends me here. You can actually see what it was trying to do in the tab name
image

[Request] Map length on front of the map, contributers tab?

Knowing how long a map is without having to open the map page will probably be helpful in the case I go to search new nekopara maps and get too hyped to check out the map page only to find out the nekopara map was only about 15 seconds long. Though personally it took me a bit to notice the one on the old beatsaver and I wouldn't mind a 15 second long nekopara map, would probably be useful for others from what I've heard

And a contributors tab would, I feel be nice for the cases where a mapper may put playtesters, other mappers/lighters in there but not in the map authors field.

[Request] See downloads, up/downvotes, key on map card

Request by users to replicate OBS (Old Beat Saver) functionality to see download count, total upvotes, total downvotes, and the map key on the map card in search results in addition to being available on the map detail page.

Dependencies: Data merge- on votes/downloads

LMK if you'd like me to mock some options since I have this template built in XD

Schedule publish time

Being able to publish maps at a set time would be useful for releasing map packs where multiple maps go live at the same time.

Allow switching or changing capitalization of display names

Related to #11:

Discord Quotes

2021-08-24_113516
2021-08-24_113617

I see two solutions here:

  1. Allow to switch display name between: old beatsaver username / Discord name / Steam name (all linked accounts, basically)
    This, however, adds more problems:
    • What if people change Discord/Steam names and want to see the same ones on BeatSaver? Some sort of syncing needs to be added (e.g. a button "Sync linked name")
    • Someone might change their name every day as a joke or to impersonate other people, etc. This can be circumvented by allowing to do such syncing once in X months, for example
  2. Allow to change capitalization of the old beatsaver username.
    This wasn't allowed on the old website, but it certainly would be appreciated.

Note: API should still provide alphanumeric usernames. This task is about display names that may be added as a separate field (if it's more than just capitalization).

Allow certain CSPs

Hey there!

For my project https://github.com/AIOSaber, and specifically the BeatSaver Extension (AIOSaber/BeatSaver-Extension#2), I'd really like if you could add the following policies:

This would allow my userscript to access
a. The local client via get/post & websocket
b. & c. Load a "toast" library which is used for some simple popups.

Here's an example with disabled CSP on my local browser:
grafik

Would it be possible to get this or could you suggest another workaround?

Thanks & Best
Alex

[Request] Add comments

This will allow mappers to easily gain feedback on their maps from users.

I imagine the comments would look something like modelsaber's comment system but following beatsavers's new theme.
image
Here's just a small mockup I made.
image

[Request] API addition - # of pages / # of maps

I'm not sure if this is the right place to request things regarding the BeatSaver API but there is one think that I miss in the new API. When receiving the data in the past, it would display the total number of maps and or the total number of pages that would fit the request in the json. It's now gone and impossible to make page based features/sites without having to test for an empty response.

If it's not too difficult to add, it would be nice to have that data back in the json.
If it was removed for a reason then that's fine and I'll live without it.

When editing a published map's description and clicking "Save", the UI gets stuck and does not update properly

When editing a map's description and clicking "Save", the updated description will be sent to the server correctly, but the UI will be stuck in a non-editable state. Upon clicking "Save", this error occurs in the console:

Uncaught (in promise) TypeError: this._this$0_107.props.updateMapinfo is not a function
    invoke_aucpnc_k$ mapinfo.kt:241
    p output.js:1
    promise callback*_/qA.prototype.invoke_xfv2uo_k$ mapinfo.kt:240
    _/EA.prototype.render_ytb8qw_k$/</< output.js:1
    React 11
    unstable_runWithPriority scheduler.production.min.js:18
    React 11
    FS ReactDOM.kt:9
    FS ReactDOM.kt:8
    invoke_xfv2uo_k$ app.kt:44
    onload output.js:1
    _ output.js:1
    _ output.js:1
    9401 output.js:1
    Webpack 7
mapinfo.kt:241:34

The user can get around this issue by refreshing the page. Clicking the "Edit" button returns the user to the default UI, but the information is outdated. Clicking the "Edit" button again has the outdated information in the editable boxes.

This issue does not occur when editing an unpublished map's description.
image

props.updateMapinfo(props.mapInfo.copy(name = newTitle, description = newDescription))

Improvements for the /mappers page

I'll just document here what might be improved and you tell me what's doable and what's a definite no-no.
All low priority, I don't expect this to be added anytime soon (but maybe eventually).
Reference page: https://n3tman.github.io/TopMappers/

Features to consider for https://beatsaver.com/mappers

  1. Sorting - to find people with most maps, dislikes, mapping age, etc.
  2. Basic text filtering - to find yourself in the list, find people who started in 2021, etc.
  3. Advanced filtering - similar to how tablesorter widget works. Most wanted part: comparison operators.
    • E.g. find rows where First Upload is >=2020, Total Maps is >2, Ranked Maps =0.
    • Can be used to find interesting mappers based on data.
  4. [ScoreSaber] New column: Total number of plays on all difficulties.
    • I know it's not the best metric, but it's better than downloads.
  5. [BSaber] Link to a BSaber profile, like https://bsaber.com/members/<uploader.name>
    • Helps to know more about the mapper since some people have detailed pages there.
  6. [BSaber] New column: Number of maps recommended by curators.
    • This wp-json endpoint can be used to find map keys.
  7. [BSaber] New column: Number of playlists where maps have been featured.
    • This playlistAPI file can be used to find playlist links. They can be downloaded and map keys can be extracted/compared (all files have key values).
    • Would be great to have a popup with names/links to these playlists too, similar to TopMappers. I had to add URLs of playlists manually though, but they can be added to playlistAPI file.
  8. [UI] Alternate colors for rows + highlight row on hover
  9. [UI] Thousand separators for numbers. E.g. 286,190 or 286 190 (thin space) instead of 286190.
    • Might be added globally to individual mapper pages as well (in stats block).

Split mapper and uploader into different fields on the map page

As it stands right now, a long mapper name + long uploader name can cause information to get cut off in the mapper field
image

I would argue that these two fields could be split up into uploader and mapper.

At the very least, having a hover bubble that shows the full text would be nice.

Date selection popup is below the suggested user button

When you search for a song name and there is a mapper/user with the same name, if you want to select a start date or end date for a search, the date selection popup will appear below the suggested username button.

I don't know if I explained this correctly, so here's a screenshot as an example
image

Restrict uploader names to alphanumeric chars or add a new field

Previous username rules by Jellyfish (from #modding-announcements)

Usernames may now only include alphanumeric characters or a - character.

Any string in a username doesn't allow to create URL-friendly post tags on BSaber.

Example uploader: https://beatsaver.com/profile/4284389
Current uploader.name from the API: AndroGeek | Beat Saber Mapper
Previously it was just androgeek: https://bsaber.com/tag/androgeek/

A possible solution would be to ask users who logged in through Discord to enter a separate name that follows old naming rules.

[BUG?] API Behavior of `&after=` in Latest

The &before parameter in maps/latest API endpoint does not include the beatmap posted at the exact time specified in &before (expected). However, the &after parameter does include it. If a client is paging forward and back using the first and last beatmaps' upload date you end up with a repeated beatmap when moving towards the latest uploads unless you add a millisecond to the upload date on the first result.

Allow hash lookup on unpublished hashes

Return current map data when looking up by hash as long as there is a published version and the map is not deleted even if the hash is for an unpublished version

Map stats on user profile include data from unpublished maps

  • The map counters include the stats of unpublished maps (maps, BPM, score, duration, difficulties)
  • Subsequent difficulties added via the unpublished upload feature increment the difficulties count
  • After publishing an unpublished map, the added difficulty count does not correct itself, and a users difficulty count will be bloated with "ghost" difficulties

For example, this map (https://beatsaver.com/maps/1b7fb) contains ~10 iterative versions in its unpublished state, and despite the versions being hidden from view now that it is published, they are still being considered in the user stats (https://beatsaver.com/profile/4284242). Note the mismatch of difficulty count in the user stats compared to the difficulty count in the published maps.

Previewer tweaks

Switch from urls to ids

Also look into scaling the window better to user display?

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.