Coder Social home page Coder Social logo

modalseoul / weeb.fm Goto Github PK

View Code? Open in Web Editor NEW
45.0 16.0 3.0 2.86 MB

Last.fm successor. "Weeb.fm" is definitely a temporary name.

License: MIT License

Python 29.56% TypeScript 29.40% HTML 11.66% JavaScript 1.00% SCSS 28.38%
music lastfm tagging archiving weeb django django-rest-framework drf typescript ng2

weeb.fm's Introduction

2020? What?

When I was given the chance to play professional games, I lept at it. Unfortunately it meant letting this project die. I'm kicking it up again just a little after 4 years. Join the Discord

WiltFM


WeebFM development started on 10/3/2016. The day LastFm decided to toss up a persistent modal on every. single. page. The modal asks users to Subscribe or disable Adblock. There's no way around it. But fuck that. Last has gone to shit anyways. WeebFm(temporary name) is going to be better than Last, because "*If you ain't first, you're last*" - Ricky Bobby

Scrobblers


[(C#) Windows Spotify](https://github.com/ModalSeoul/Weeb-Spotify-Scrobbler)

Image

(Javascript) Google Chrome Pandora


But, why?

THIS. IS. Sparta? WHY GODDAMMIT


weeb.fm's People

Contributors

andrewmy avatar justcald avatar modalseoul avatar scratso avatar shakedown-street avatar zkxjzmswkwl 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

Watchers

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

weeb.fm's Issues

"Most Popular Artist" inaccurate

Popularity should be measured by how many users have scrobbled a particular artist -- not how many scrobbles that artist has received (that would be "Most Scrobbled Artist"), as the current counter is affected by one person really liking an artist, and excessively scrobbling it -- even though it might not actually be popular.

Not massively important, of course, but either the wording or the check for popularity should be changed.

As a side note, "popularity" is defined as:

the state or condition of being liked, admired, or supported by many people.

And the current system does not actually follow the "many people" aspect.

Feature request: nullifying cheaters' data

With plans to implement manual scrobbling directly, editing and the like (in addition to visual modifications), Wilt aims for customizability. To keep actual global statistics (unlike Last), we may need a countermeasure against obvious cheaters. There's also people who are simply not going to use the features the way they were designed for. But suspending, banning or reseting accounts would go against the philosophy, so the idea is to just nullify the data, or part of it, outside of their profiles. It could be automated or handled manually with a reporting function.

Examples of obvious cheating would be: scrobbling the same 4-minute song every minute; supposed constant scrobbling of only small parts of every song; repeatedly editing scrobbles such as to completely change the artist or song; (if we go Last's way) getting enough scrobbles to get access to all the features without scrobbling ever again; deliberately faking scrobbles to get into some top in whatever way; ...

When I say nullifying only parts of the data, I mean for instance that some user would count in an artist's total listeners count, but wouldn't in total scrobbles, or some song scrobbles. This means there'd be more than one nullifying option.

Nullified accounts would have a mention on their profiles (visible by anyone?), in the form of an icon or info somewhere, for eventual mistakes and confusion. Clicking on the icon or hovering over it would reveal which data has actually been affected. Or maybe show an alert box with all the info directly on the profile, under the avatar/header for instance.

EDIT:

Silently nullifying might be a more effective countermeasure.

This is cheating:
http://i.imgur.com/lAZh6YM.png (http://www.last.fm/user/Enigma_Machine_)
http://i.imgur.com/1fJDGg8.png this is a 4 minute song (http://www.last.fm/user/betogrinder)

Suggestions for cleanup of Get Started page

On the Get Started page I would suggest merging the "Ways to Scrobble" and "Scrobbler downloads" tables, arrange alphabetically, and for each entry include a link to the executable and one to the source code. Arranged as follows:

Ways to scrobble Download GitHub
Chrome Extension (Bandcamp, Google Play, Pandora) [Link here] [Link here]
Foobar2000 [Link here] [Link here]
MPD [Link here] [Link here]
MusicBee [Link here] [Link here]
RipFM (From Last.fm to Wilt) [Link here] [Link here]

"Users who have scrobbled..." interference with ampersand in artist name

EDIT: It's an issue with the ampersand in the artist name. See link on first comment.

User Hypsicratea has played songs by La Monte Young & Marian Zazeela, but she doesn't appear in this artist's page. There's no one under the column name on the page.

https://modal.moe/profile/Hypsicratea
https://modal.moe/artist/La%20Monte%20Young%20%26%20Marian%20Zazeela

The user scrobbled two tracks, both of which have colons in the title (Drift Study 14 VII 73 9:27:27-10:06:41 PM NYC and 13 I 73 5:35 - 6:14:03 PM NYC).

Autocorrect Implementation Example

Solving spelling variations in song titles and artists

Consider the following scenarios that could be scrobbled by a user (note: the actual song scrobbled is exactly the same in all cases):

Artist Name // Song Title

  1. Jay Ant // Fully Focused
  2. Fly Commons // Fully Focused
  3. Fly Commons x Christoph Andersson // Fully Focused (feat. Jay Ant & G-Eazy)
  4. Jay Ant // Fully Focused ft. G-Eazy (prod. Christoph Andersson & Fly Commons)
  5. Fly Commons // Fully Focused (feat. Jay Ant & G-Eazy)
  6. Jay Ant x G-Eazy // Fully Focused
  7. G-Eazy // Fully Focused (feat. Jay Ant)

Assume that the following variations have been scrobbled with the artist and song in opposite fields:
8) Fully Focused (feat. Jay Ant) // Fly Commons
9) Fully Focused (feat. G-Eazy) // Jay Ant
10) Fully Focused // Fly Commons x Jay Ant

At the time of scrobbling, each song would be first checked against 'artists' and if it doesn't exist then create a new artist with a unique ID. Then check against 'songs' and if the song title with matching artist ID already exists, if yes then increase its scrobble count by 1, or if it doesn't exist, create a new song with a unique ID and corresponding artist ID. After the new song has been created, a new camp will need to be created as well, with this song being its only member.

If it is the first time a user has scrobbled a unique song, then the song will be given 1 point.

Initially, each song would have a default autocorrect spelling identical to what was scrobbled. Each song would have an autocorrect field containing one or several song IDs belonging to itself and other songs. Each user will have the ability to assign an autocorrect spelling suggestion* for both the song and the artist of the song he has scrobbled.

The following example will assume that each of the ten users above have manually declared a desired autocorrect spelling for each song that was scrobbled. Below is a list of what each song will now be corrected to:

Artist Name // Song Title
11) Jay Ant // Fully Focused (feat. G-Eazy)
12) Fly Commons // Fully Focused (feat. Jay Ant & G-Eazy)
13) Fly Commons // Fully Focused (feat. Jay Ant & G-Eazy)
14) Jay Ant // Fully Focused (feat. G-Eazy)
15) Jay Ant // Fully Focused ft. G-Eazy (prod. Fly Commons)
16) Jay Ant // Fully Focused (feat. G-Eazy)
17) G-Eazy // Fully Focused (feat. Jay Ant) [this user opted not to make an autocorrect suggestion]

Assume that the following variations have been scrobbled with the artist and song in opposite fields:
18) Fly Commons // Fully Focused (feat. Jay Ant & G-Eazy)
19) Jay Ant // Fully Focused (feat. G-Eazy)
20) Fly Commons // Fully Focused (feat. Jay Ant)

A diagram showing how relationships are formed by submitting new autocorrect suggestions
points

At the end of it, four camps are generated regarding spelling of this song. All songs that are a member of an individual camp will be considerered the same, with each camp representing a unique song.

Camp 1


  1. Jay Ant // Fully Focused
  2. Jay Ant // Fully Focused (feat. G-Eazy)
  3. Fully Focused (feat. G-Eazy) // Jay Ant
  4. Jay Ant // Fully Focused ft. G-Eazy (prod. Christoph Andersson & Fly Commons)

Camp 2


  1. Fly Commons x Christoph Andersson // Fully Focused (feat. Jay Ant & G-Eazy)
  2. Fly Commons // Fully Focused (feat. Jay Ant & G-Eazy)
  3. Jay Ant // Fully Focused ft. G-Eazy (prod. Fly Commons)
  4. Jay Ant x G-Eazy // Fully Focused
  5. Fully Focused (feat. Jay Ant) // Fly Commons

Camp 3 (Remains unchanged)


  1. G-Eazy // Fully Focused (feat. Jay Ant)

Camp 4


  1. Fully Focused // Fly Commons x Jay Ant
  2. Fly Commons // Fully Focused (feat. Jay Ant)

The next step is choosing a camp leader, which would be done by adding together the number of points and votes. The camp leader is the song with the highest number of points and votes, while all others are considered variations.

Points would be determined by the number of users who have scrobbled the specific song. 1 Point will be given to a song the first time a user scrobbles it. If a user provides an autocorrect title then 1 point will be taken away from the original song and given to the corrected song.

Votes will work similar to reddit with upvoting and downvoting. A point and a vote are weighted the same, and each user is allowed one vote per song regardless if they have scrobbled it before or not.

The page of the camp leader would show a list of variations, while the page of each variation would show a link to the camp leader's page. Biographical info and comments on pages of all spelling variations should be preserved.

A diagram showing an overview of the camps and how leaders/variations would be displayed
display

Each time a user saves an autocorrect suggestion, the original scrobble and the correction will be compared to existing camps. After comparing, there will be three possible outcome scenarios for each song:

  1. The original scrobble matches a member of an existing camp, but the corrected scrobble does not.
  2. The original and corrected scrobbles match a member in the same camp.
  3. The original and corrected scrobbles match a member in two different camps.

Note: When a unique song is scrobbled, a new camp is created for it. Therefore it is impossible for the original scrobble not to match any camps.

Scenario 1: A new song is created for the corrected scrobble with 1 point, the new song is added to the camp of the original scrobble and the original scrobble loses 1 point.

Scenario 2: The corrected scrobble gains 1 point and the original scrobble loses 1 point.

Scenario 3: The corrected scrobble gains 1 point, the original scrobble loses 1 point, and all members of the original scrobble's camp are moved into the corrected scrobbles camp. The two camps are merged.

Feature request: album artist =/= song artist, and how it could affect the database

(The following has no relation to covers. Those are isolated cases.)

Ok, get ready, as it's not a simple request.

"Scrobblers" should tell the difference between an album artist and a track artist, or if an album is a compilation. Of course, it could be corrected by the community in some way we can discuss later if this suggestion gets approved.

We could then have a division in the Artists>Albums subpages of user libraries, "Albums" and "Also featured on" (like Spotify has an "Appears on" section). If so, we should decide on a more appropriate name than "also featured on."

If the album is just a compilation and not a mix, things are easy. Counters should be updated for the artists of the "scrobbled" tracks. Things can get harder with DJ mixes for example. They're somehow a little bit like covers, so the scrobbles shouldn't be only attributed to the original artists, and mistaggings happen frequently enough so that some songs end up being popularly wrongly credited to the DJ as a result, which messes up the database of a site like Wilt if anything else (we get more versions of the same because of various tags). The following idea should also make auto-correction/merging easier (=/= simpler, yeah...) in the long run and minimize the mess.

I believe it's possible to make counters go up for the album artist and the artists of the played songs, but there needs to be information about that in the library. For example:

  • On the album artist's page of user libraries, the songs from said album appear just like his own songs, except there's a mention of the original artists (in the form of brackets, smaller font, or anything else). Eventually, another idea is to separate his songs from the ones in his mixes into two columns.
  • On the original artist's page of user libraries, the song appears just like any other in the song list, but the artist also gets a "Also featured on" (name subject to change) section. The album should be mentioned in the song subpage of one's library anyway (just like it's done on lastfm right now: you can see when you scrobbled a particular song and what album it was on).

After that, the counters of said DJ's can be cut into his own songs and mix tracks, for example by hovering with one's mouse over the number, or under a "Details" button. We could also have the choice (some button/settings) whether to count all tracks or not in user toplists. In a similar way, we could have the choice whether to include all tracks in toplists on artist profiles. This may be only possible if the previous ideas get executed and prevents wrongly credited songs from ending up there without it being attributed to the actual artist, plus adds to the count for the correctly tagged song (the one with the original artist).

(I'll leave it like that for now, as I've forgotten my other ideas and corrections while writing...)

License maybe?

As this is an open source project, shouldn't it has a proper license?

Suggestions in relation to complex songs with parts

Longer songs may have several (differently subtitled) parts, which some programs/people split into tracks, while it's all just one track on the release. The idea is to redirect these to the main tag with the song's title.

(Suggestion 1a - case A)
This means that if someone scrobbles either of the tags relating to a part of the song, it'd scrobble with the song title instead of the part subtitle. And listening to two or more of these parts consecutively would generate one scrobble. Furthermore, if someone tries to scrobble two or more of these redirected tags consecutively and the total time is shorter than the set minimum for a song to count, it wouldn't scrobble at all. This can be applied to albums with no versions (under exactly the same album name) splitting said song into tracks. If a vinyl release splits a song in two, it's still fine to merge into one tag too.

So, let's say a song Title (10:00) on an album Chapter by an artist Artist has parts called Intro (1:00), Whatever (2:35) and Something (6:45). If someone listens to Artist - Whatever (album tagged as Chapter, and not Chapter (Remixes) nor anything else), it scrobbles as Artist - Title. But if that someone has set the minimum time before scrobbling to, let's say, half of a song or 3 minutes (whatever's first), it won't; because he neither listened to half of Title nor for 3 minutes.
With some redirecting, if someone listens to Artist - Title Part III - Something (still album Chapter), it will also scrobble as Artist - Title. More on this in suggestion 3.

(Suggestion 1b - case B)
Now what needs discussion is the more problematic ones, like Insomnium's Winter's Gate: web release - 7 tracks; vinyl - 2 tracks (with different timing); CD - 1 track (7 on one release). If we go for one tag, for example, one can arguee that the parts of this song are "selective listening"-friendly, hence why they can't be merged together. It'll be mostly arbitrary if we touch such albums, so I guess we should just ignore these. I thought of doing the opposite and scrobbling all 7 parts separately, but I'm not sure this can be automated.

(Suggestion 2)
In any case, this means we need to keep the data on the redirected tags users will try to scrobble, as it ensures that a wrong redirection can be reversed and counts can be fixed. By the way, even in case A, a new version of an album can always appear in the future with the complex song split into several tracks.
Example of what we could do with the data on songs with parts: http://i.imgur.com/FXGAY15.png

(Suggestion 3)
The above needs an autocorrect that will look for various tagging patterns (and take into account album tags).
Artist - Title Part 1: Subtitle
Artist - Title: Part I - Subtitle
Artist - Title - Subtitle
Artist - Subtitle
Artist - Subtitle (Title Part 1)
Artist - Subtitle (Title)
Artist - Title: Subtitle1/Subtitle2/Subtitle 3
Artist - Title Subtitle1 / Subtitle2 / Subtitle 3
Artist - Title: I. Subtitle 1/II. Subtitle2/III. Subtitle3
...

(Suggestion 4)
A "Did you mean?" kind of feature, for when you can't be sure about what a user has scrobbled. Maybe in the form of an exclamation mark icon next to album/song names, plus a notification. It could also be used as an opposite purpose tool for albums like Insomnium's Winter's Gate, where the user could pick the parts he has listened to.

[Bug] MusicBee scrobbler crashes when playing an album with Unicode characters

Traceback (most recent call last):
File "MusicBee.py", line 63, in
File "MusicBee.py", line 59, in check_musicbee
File "MusicBee.py", line 39, in scrobble
File "c:\python35-32\lib\encodings\cp437.py", line 19, in encode
UnicodeEncodeError: 'charmap' codec can't encode character '\xc3' in position 12347: character maps to
Failed to execute script MusicBee

Furthermore it seems to also happen when playing an album that has a number in the title

Example: V4MP1R3S

Banners stretch when size of browser window changes.

Banners should crop instead of stretching when the size of the browser window changes. Consider implementing something like YouTube does with channel banners as shown by this template. They recommend using a 1440p image as the channel art and then crop according to the template.
channel art template 2

Hor+/- > Stretching

Update the readme

Considering this project has ended maybe it would be fair to update the readme to make that clear.

Perhaps making it a little bit more informative on what the code does too, doesn't need to be very long.

"Remember me" not functioning properly.

The remember me checkbox should remember username. It behaves as expected upon logging in and back out, but not if the page closes.

Using cookies probably isn't the best way to store the username.

Ideas for Stats [enhancement]

Had an idea for future stats. As the What I Listen To is initialled as WILT, I found that WILT could also mean "What I've Listened Today". That made me realise that although last.fm has these new last.year and last.week options, it doesn't have one for the current day, or yesterday. Might be an idea for the Stats page ?

Though, I see that another issue for stats hasn't been resolved yet. #37

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.