ajayyy / DeArrow

Crowdsourcing better titles and thumbnails on YouTube
https://dearrow.ajay.app
GNU General Public License v3.0
1.24k stars 33 forks source link

All thumbnails are gray/all titles are missing until refresh #230

Closed QuietMisdreavus closed 4 months ago

QuietMisdreavus commented 4 months ago

I seem to be in a similar boat to #137 and #206, but i feel like this situation is slightly different from the apparent causes they've got.

I'm running in Safari (v17.3.1) using the extension from the App Store (v1.5.5), and every time i load a page in a new tab, the thumbnails and titles fail to load. However, if i reload the page, the thumbnails and titles correctly load and the site displays as normal until i close the tab.

image

Extension list:

No channel overrides set.

Uninstalling the extension (by moving the app to Trash) and reinstalling (by dragging the app out of Trash and reopening to add the extension back) allowed the correct behavior exactly once, before reverting to the bugged behavior.

Debug info ```json { "debug": { "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3.1 Safari/605.1.15", "platform": "MacIntel", "language": "en-US", "extensionVersion": "1.5.5" }, "config": { "titleReplacements": 9816, "vip": false, "alreadyActivated": true, "darkMode": false, "replaceThumbnails": true, "titleFormatting": -1, "thumbnailFallback": 0, "extensionEnabled": true, "shouldCleanEmojis": true, "thumbnailReplacements": 35777, "showInfoAboutRandomThumbnails": true, "alwaysShowShowOriginalButton": true, "allowExpirements": true, "showDonationLink": true, "showUpsells": true, "donateClicked": 0, "invidiousInstances": 0, "keepUnsubmitted": true, "keepUnsubmittedInPrivate": false, "onlyTitleCaseInEnglish": false, "serverAddress": "Default server address", "thumbnailServerAddress": "https://dearrow-thumb.ajay.app", "fetchTimeout": 7000, "startLocalRenderTimeout": 2000, "renderTimeout": 25000, "thumbnailCacheUse": 2, "showGuidelineHelp": true, "thumbnailFallbackAutogenerated": 0, "showLiveCover": true, "defaultToCustom": true, "showOriginalOnHover": false, "importedConfig": false, "replaceTitles": true, "useCrowdsourcedTitles": true, "titleMaxLines": 3, "channelOverrides": {}, "customConfigurations": {}, "showIconForFormattedTitles": true, "countReplacements": true, "ignoreAbThumbnails": true, "activated": true, "freeAccessWaitingPeriod": 259200000, "firefoxOldContentScriptRegistration": false, "lastIncognitoStatus": false, "showActivatedMessage": false } } ```
ajayyy commented 4 months ago

What happens if you click a video while in this state?

QuietMisdreavus commented 4 months ago

The video page loads, and the title/thumbnail replacement starts working for the video itself and the recommendations.

QuietMisdreavus commented 4 months ago

Oh, this is interesting, though. I finished watching that video and clicked the sidebar link back to my Subscriptions page. Those thumbnails and titles loaded correctly. However, when i navigated to the home page, i got the same behavior as #206:

image
ajayyy commented 4 months ago

Could you try disabling your other extensions?

This seems to be the function listening for new thumbnails appearing not working (since it falls back to also checking for thumbnails on page navigation, which is why it works for the first few)

QuietMisdreavus commented 4 months ago

Same behavior, though i went through the "click a video, click back to Subscriptions, click to Home" flow and the home page correctly loaded thumbnails and titles.

IMNdi commented 4 months ago

I had this too on Edge, blanks for all, refreshing did get blanks again, however clicking on a link generated thumbs and everything until the next page loaded. So as a result, I managed to make it load, I don't remember how, unfortunately. Right click link? Middle click? Click and back again?

Anyway, after 24 hours it just started working again and I assumed I was A/B tested by Youtube.

I also have some other weird issues over the next 48 hours, related to lazy loading things. For example, I clicked video A, had description A, title A, etc. Clicking a video from that page ( /v= ) managed to load the next video, but not details. Title was stuck as previous title, description was left over, comments did load on scroll down.

That also went away.

I suspect it was YT A/B testing some UI. Common extensions with you: Bitwarden, TamperMonkey (YT age restriction bypass) and Sponsorblock.

ajayyy commented 4 months ago

@QuietMisdreavus

Could you run the following commands in the console:

console.log("location", window.location.host, window, window?.customElements, window?.customElements?.define, window.customElements?.define?.toString());
console.log(("version", window["versionCB"], document.querySelector("#sponsorblock-document-script"), document.querySelectorAll("#sponsorblock-document-script"))
console.log(("fetch", window.fetch)

window.addEventListener("message", console.log)
document.createElement("ytd-thumbnail")
console.log("finished setup")

Then open youtube.com, wait a few seconds, then click a video, wait a few seconds, then click the back button then scroll down until more thumbnails load on the right

Then send the result from the console.

QuietMisdreavus commented 4 months ago
Console output ``` > console.log("location", window.location.host, window, window?.customElements, window?.customElements?.define, window.customElements?.define?.toString()); console.log("version", window["versionCB"], document.querySelector("#sponsorblock-document-script"), document.querySelectorAll("#sponsorblock-document-script")); console.log("fetch", window.fetch); window.addEventListener("message", console.log); document.createElement("ytd-thumbnail"); console.log("finished setup"); [Log] location – "www.youtube.com" (4) Window {listeners: Object, 0: Window} CustomElementRegistry {getName: function, whenDefined: function, upgrade: function} (t,n,i)=>{let o=n;if(v.includes(t))if(n.toString().startsWith("class")){class e extends n{constructor(){super(),f({type:"newElement",name:t})}}o=e}else o=function(){n.call(this),f({type:"newElement",name:t})},Object.setPrototypeOf(o.prototype,n.prototype),Object.setPrototypeOf(o,n);e(t,o,i)} "(t,n,i)=>{let o=n;if(v.includes(t))if(n.toString().startsWith(\"class\")){class e extends n{constructor(){super(),f({type:\"newElement\",name:t})}}o=e}else o=function(){n.call(this),f({type:\"newElement\",name:t})},Object.setPrototypeOf(o.prototype,n.prototype),Object.setPrototypeOf(o,n);e(t,o,i)}" [Log] version – "1.1.40" (2) NodeList [ Githubissues.
  • Githubissues is a development platform for aggregating issues.