thumbnail-rating-bar-for-youtube icon indicating copy to clipboard operation
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:

Open NeveHanter opened this issue 2 years ago • 56 comments

More info: https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts Relevant HN discussion: https://news.ycombinator.com/item?id=29177091

NeveHanter avatar Nov 10 '21 17:11 NeveHanter

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.

Nornec avatar Nov 10 '21 18:11 Nornec

Could this extension switch to the likes-to-views ratio?

(As "gpt5" mentions in those HN comments.)

braham-snyder avatar Nov 10 '21 18:11 braham-snyder

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

MmyGgithubAaccount avatar Nov 10 '21 18:11 MmyGgithubAaccount

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..

Nornec avatar Nov 10 '21 18:11 Nornec

I think a likes-to-views ratio indicator would be the next best thing here if dislike counts are being removed.

ryanbuening avatar Nov 10 '21 21:11 ryanbuening

Youtube/Google themselves are a joke.

mat926 avatar Nov 10 '21 23:11 mat926

@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 avatar Nov 11 '21 02:11 elliotwaite

@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 avatar Nov 11 '21 08:11 Greedquest

@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.

elliotwaite avatar Nov 11 '21 09:11 elliotwaite

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

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.

elliotwaite avatar Nov 11 '21 10:11 elliotwaite

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?

ShadowTheAge avatar Nov 11 '21 12:11 ShadowTheAge

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.

image

image

image

ryanbuening avatar Nov 11 '21 13:11 ryanbuening

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

elliotwaite avatar Nov 11 '21 14:11 elliotwaite

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 avatar Nov 11 '21 15:11 ShadowTheAge

@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.

Greedquest avatar Nov 11 '21 15:11 Greedquest

@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)

Greedquest avatar Nov 11 '21 19:11 Greedquest

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 avatar Nov 11 '21 19:11 Leopold702

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 avatar Nov 12 '21 06:11 elliotwaite

@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.

elliotwaite avatar Nov 12 '21 07:11 elliotwaite

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 avatar Nov 12 '21 22:11 Gaeriel

@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 :)

Greedquest avatar Nov 13 '21 13:11 Greedquest

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...

Marfa avatar Nov 13 '21 15:11 Marfa

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

Gaeriel avatar Nov 13 '21 19:11 Gaeriel

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 avatar Nov 15 '21 11:11 Gaeriel

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?

elliotwaite avatar Nov 15 '21 15:11 elliotwaite

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 :)

Gaeriel avatar Nov 15 '21 16:11 Gaeriel

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.

elliotwaite avatar Nov 15 '21 17:11 elliotwaite

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)))

Gaeriel avatar Nov 16 '21 10:11 Gaeriel

Hi, guys. There is a given solution: https://github.com/Anarios/return-youtube-dislike Maybe collaboration 🤔

marvellz avatar Nov 16 '21 12:11 marvellz

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.

elliotwaite avatar Nov 16 '21 15:11 elliotwaite