thumbnail-rating-bar-for-youtube
thumbnail-rating-bar-for-youtube copied to clipboard
Google has dropped the dislike count, thanks for the great extension! It was very helpful over all of these years :1st_place_medal:
More info: https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts Relevant HN discussion: https://news.ycombinator.com/item?id=29177091
Also according to the post, devs can apply for an exemption. This is overall a bad move for the platform in my opinion, all things considered.
Could this extension switch to the likes-to-views ratio?
(As "gpt5" mentions in those HN comments.)
You can apply for an exemption (to have dislike data on non-authenticated calls) as long as you don’t display or share dislike data with end your users.
Since this extension does do both of those things, I doubt it'll quality for an exemption
I just attempted the exemption form and it seems the only way to get an exemption is to be an organization with a specific internal app that does not expose the data to anyone but a sole user or set of internal users. It also requires that a data compliance audit be done on every applicable project, but this compliance seems to, again, only apply to organizations and not sole developers. This stinks..
I think a likes-to-views ratio indicator would be the next best thing here if dislike counts are being removed.
Youtube/Google themselves are a joke.
@NeveHanter, thanks for letting me know about this, and thanks for the kind words.
@Nornec, yep, looks like exemptions are only supposed to be for projects that don't share dislike counts publicly.
Could this extension switch to the likes-to-views ratio?
(As "gpt5" mentions in those HN comments.)
@braham-snyder and @ryanbuening, yes. I'll start implementing this as an optional alternative for now so we can try A/B testing it to see if we can tune it to be useful since it might need some kind of exponential/log scaling factor to work well. I'll comment here when that update has been released.
@elliotwaite I just wonder whether there's a bit of a loophole; given we each use our own API key, it's perfectly possible we all just happened to clone this project and are working on it independently - and so there aren't really end users per-se because each one of our API calls will not be viewed by any other App user. Basically could devs still use it for WIP projects, if they are the sole user of that particular API key.
@Greedquest, interesting idea. I wonder if personal use would qualify as a valid use case. If anyone wants to try this, here's a link to the application form: Developer Exemption Application Form.
The form also mentions:
An exemption will not be granted until your API Project passes a compliance audit, so if you have not passed a compliance audit, please start this process immediately.
I tried to pass a compliance audit for this extension in the past and they would take months in between replies and ask me to submit redundant data, but maybe their communication has improved since then. I'm going to pass on trying this option since my probability estimate for success is so low that it seems like a waste of time, but if anyone else wants to try this, I'd be interested in hearing what YouTube's response is.
I just released an update (version 1.5.0) which adds the option to try the "Likes-to-Views" option, as well as a "Both" option for A/B testing:
![Screen Shot 2021-11-11 at 2 00 26 AM](https://user-images.githubusercontent.com/1767836/141278478-ff7f23c2-fe79-4ffc-8c8f-7bf45b588d19.png)
This is the current formula (it was the best I found so far), but the a
and b
values may need to be tuned:
likesToViews = likes / views
a = 30
b = .2
score = 1 / (1 + Math.exp(-a * (Math.pow(likesToViews, b) - 0.5)))
percentage = 100 * score
The likesToViews
get exponentiated (b
), shifted (- 0.5), scaled (a
), and then fed through a sigmoid. You can see what this formula does and how tuning a
and b
would affect the output with this Desmos graph (the x-axis is the likesToViews
, and y-axis is the output score
between 0 and 1).
There does seem to be some correlation between the likes-to-views and likes-to-dislikes (especially with the "Exponentially scale the rating bar" option turned on, which currently only affects the likes-to-dislikes rating), but they can also differ a lot sometimes. It's definitely a different metric, but interesting in its own unique way.
Also, this update didn't change any of the tooltip text, which still only shows likes-to-dislikes info.
Let me know what you guys think.
Exemption is pointless because without public dislikes people wouldn't use dislikes like they use now. Why make an action if it isn't going to change anything?
I compared Likes-to-Dislikes vs the Likes-to-Views formula and it seems very hit or miss so far. Bottom bar is Likes-to-Views.
I compared Likes-to-Dislikes vs the Likes-to-Views formula and it seems very hit or miss so far. Bottom bar is Likes-to-Views.
@ryanbuening, yeah, it might be more of an engagement rating rather than the normal likes rating.
Also, videos that are run as ads will probably have low engagement. I saw this one in the trending section and it has very few likes (2,688) given its total views (1.2M), so I'm guessing Amazon ran it as a YouTube ad.
![Screen Shot 2021-11-11 at 6 48 44 AM](https://user-images.githubusercontent.com/1767836/141318078-28ec55aa-5959-4327-ac13-514bf544c86d.png)
Train some machine learning construct that guesses the amount of dislikes based on the amount of likes, views and comments and video length? While we still have access to the data
@ShadowTheAge So reimplement YouTube's video suggestion algorithm! I mean that's basically what this extension is for, to allow you to pick the videos you want to watch based on community approval.
@ryanbuening Yeah, it is more of an engagement metric. Music videos for example will have most people just playing it in the background or autosuggested, less likely to interact with it. Or a 3 hour tutorial probably is watched once and never again so people won't remember to go back and like that video they watched over and over again.
@elliotwaite Another interesting thing to see would be Likes : Comment count (likes on video per comment) - since both of these are positively correlated with "engagement" dividing one by the other could cancel that factor out. They are also both proportional to views, so dividing one by the other gives a dimensionless metric independent of view count (just like likes/dislikes).
Tl;Dr:
Comments ∝ TotViews * Engagement (i.e. Comments increase with both "engagement" and number of views)
Likes ∝ +veViews * Engagement
Dislikes ∝ -veViews * Engagement
(TotViews = +veViews + -veViews)
∴
Likes / Dislikes ∝ +veViews / -veViews (what we had before)
Likes / Views ∝ +veViews * Engagement / TotViews (what we have now - meaning it varies with video engagement as well as positive reception)
Likes / Comments ∝ +veViews / TotViews (proposal)
Someone should create an independent dislike database + browser extension that will work on the same principle as SponsorBlock. It might be even possible to fetch and archive the current dislike counts, since API should remain working till December 13th.
Train some machine learning construct that guesses the amount of dislikes based on the amount of likes, views and comments and video length? While we still have access to the data
@ShadowTheAge, interesting idea. Perhaps just a standard sentiment analysis model would work, even if it's not trained to predict the likes-to-dislikes rating. It could show the average of some number of the top comments. I may try that at some point, but it would take a bit of work to implement.
Someone should create an independent dislike database + browser extension that will work on the same principle as SponsorBlock. It might be even possible to fetch and archive the current dislike counts, since API should remain working till December 13th.
@Leopold702, that could potentially work too. If the extension gained enough users (reached the critical mass point in network effect terms), maybe even just showing the likes/dislikes of only the people who use the extension would be useful. But that might require a lot more users. I might try that too, but this would also require a bit of work to set up.
@elliotwaite Another interesting thing to see would be Likes : Comment count (likes on video per comment) - since both of these are positively correlated with "engagement" dividing one by the other could cancel that factor out. They are also both proportional to views, so dividing one by the other gives a dimensionless metric independent of view count (just like likes/dislikes).
@Greedquest, interesting idea. I just added this option (Likes-to-Comments) in version 1.5.2, as well as some options to A/B test it against the others.
The current function used is:
likesToComments = likes / comments
a = 0.15
score = 1 - Math.exp(-a * likesToComments)
percentage = 100 * score
And here's the Desmos graph for that function.
This one is interesting too. From looking at how it scores Shorts, it may give them a slightly higher rating, maybe because people watching Shorts are more likely to just like and swipe to the next one rather than also leave a comment, but even if that is true it might not be an issue.
Let me know what you guys think about this one.
For me, what almost always gives me good results, is max(LtV,LtC) with the constants you're using now. Other constants might give better results, but I don't know how to test that.
Sometimes, neither work very well, I believe that's mostly with channels that incite discussions (PBS Space Time is an example). I believe that could be solved by not using the number of comments, but the number of commenters, but I suppose that data is not easily available?
Also: the ratio should also be shown on the video page, not only on the thumbnail, although I seldomly look at the ratio after I click on a video: that's what this extension is for :)
@Gaeriel yeah number of commenters rather than comments is a good shout, as like votes are one per user. Looking at the docs, unique commenter count is not one of the v3 api endpoints so it would probably require manual iteration over all the comments accumulating by user id, so could take a few minutes per video (a bit more complex to implement in a performant way than the current statistics but not impossible with some caching).
Alternatively I guess if number of unique commenters is proportional to engagement, and comments per user is also proportional, then maybe total comments are actually proportional to engagement squared. In which case a statistic like Likes^2 / (Comments * TotViews)
might have better dimensions. At this point some dataset and graphs might be nice :)
There's Tampermoneky script. It works through YouTube Data API key. However I don't understand how it gets dislike count, I'm not programmer.
And there's TODO "Real count", so...
However I don't understand how it gets dislike count, I'm not programmer.
It looks like he uses the API to get it, so it won't work after December 13
I found this on r/youtube : https://old.reddit.com/r/youtube/comments/qtyn45/i_coded_a_userscript_to_restore_the_dislike/?ref=share&ref_source=link
He claims an almost 100% accuracy of reproducing the dislike count, but his code is obfuscated, so I have no idea how he does it. It might be worth contacting him.
I found this on r/youtube : https://old.reddit.com/r/youtube/comments/qtyn45/i_coded_a_userscript_to_restore_the_dislike/?ref=share&ref_source=link
He claims an almost 100% accuracy of reproducing the dislike count, but his code is obfuscated, so I have no idea how he does it. It might be worth contacting him.
@Gaeriel, thanks for sharing. I am skeptical but open to being proven wrong. Is there a way to test out if that code actually works prior to YouTube actually removing the dislike info?
I'm skeptical too and I don't trust obfuscated code. I can think of no way of testing if it works without the dislike info in the API response, except for reverse engineering it. I tried a de-obfuscator, but it's still very obfuscated :)
I'm skeptical too and I don't trust obfuscated code. I can think of no way of testing if it works without the dislike info in the API response, except for reverse engineering it. I tried a de-obfuscator, but it's still very obfuscated :)
I looked into deobfuscating it too. It looks doable but would probably take a while. For now, I'll wait till YouTube actually removes the dislikes to see if that code still works before pursuing this option further.
he deobfuscated it :) https://textbin.net/8iyxfntpaa
Ok, so apparently there's still a ratio available on the page for the video:
document.querySelector("ytd-app").data.playerResponse.videoDetails.averageRating
He calculates the dislikes using that ratio and this formula:
Math.round(likes*((5-ratio)/(ratio-1)))
Hi, guys. There is a given solution: https://github.com/Anarios/return-youtube-dislike Maybe collaboration 🤔
document.querySelector("ytd-app").data.playerResponse.videoDetails.averageRating
@Gaeriel, got it. I'm assuming YouTube will remove that info as well when they remove the dislikes, but if they don't, I'll switch over the code to using it.
Hi, guys. There is a given solution: https://github.com/Anarios/return-youtube-dislike Maybe collaboration 🤔
@marvellz, thanks for the info. Looks like they are considering a similar strategy to what has been discussed here. I'm planning on implementing a strategy like this for this extension, but if for some reason their solution ends up being better, perhaps we can try to collab with them where we use their backend instead or something.