ajayyy / DeArrow

Crowdsourcing better titles and thumbnails on YouTube

Home Page:https://dearrow.ajay.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

All thumbnails are gray/all titles are missing until refresh

QuietMisdreavus opened this issue · comments

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:

  • Nearly everything from 1Blocker (which has a site override to ignore YouTube anyway)
  • Bitwarden
  • Cascadea (nothing that modifies YouTube though)
  • Convusic
  • Ivory
  • Kagi
  • NetNewsWire "Subscribe To Feed"
  • Safarikai
  • SponsorBlock
  • StopTheMadness
  • Superagent
  • Tampermonkey
    • The only script i have installed is BetterTTV

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
{
    "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
    }
}

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

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

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

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)

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.

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.

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

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)
<script id="sponsorblock-document-script" version="1.1.40">…</script>
NodeList [<script id="sponsorblock-document-script">, <div id="sponsorblock-document-script">] (2)
[Log] fetch – (e,t)=>e instanceof Request&&m.some((t=>e.url.includes(t)))?(e.url.includes("/youtubei/v1/next")&&(setTimeout((()=>f({type:"newElement",name:""})),1e3),setTimeout((()=>f({type:"newElement",name:""})),2500),setTimeout((()=>f({type:"newElement",name:""})),8e3)),new Promise(((n,o)=>i(this,void 0,void 0,(function*(){try{const i=yield c(e,t),o=yield i.json();n(new Response(JSON.stringify(o),i)),S(o)}catch(e){o(e)}}))))):c(e,t)
[Log] finished setup
< undefined
[Error] Failed to load resource: the server responded with a status of 401 (Unauthorized) (log, line 0)
[Error] Failed to load resource: the server responded with a status of 401 (Unauthorized) (log, line 0)
[Error] Failed to load resource: the server responded with a status of 401 (Unauthorized) (log, line 0)
[Error] Failed to load resource: the server responded with a status of 401 (Unauthorized) (log, line 0)
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: Object, …}
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: {type: "sb-reset-media-session-link", videoID: null}, …}
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: {type: "sb-reset-media-session-link", videoID: null}, …}
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: {source: "sponsorblock", type: "videoIDsLoaded", videoIDs: ["dOLYOSk26jQ"]}, …}
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: Object, …}
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: {source: "sponsorblock", type: "newElement", name: ""}, …}
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: Object, …}
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: Object, …}
[Log] dOLYOSk26jQ – 0.567 – "innerTube" (content.js, line 2)
[Log] BtF7mQljqyk – 0.387 – "innerTube" (content.js, line 2)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Log] QQD3yx-JF2E – 0.418 – "innerTube" (content.js, line 2)
[Log] YZ2gBai8xRA – 0.423 – "innerTube" (content.js, line 2)
[Log] eNp9-m3iCZg – 0.397 – "innerTube" (content.js, line 2)
[Log] TL4ROjzOK2E – 0.421 – "innerTube" (content.js, line 2)
[Log] 8ncsccGHX7k – 0.426 – "innerTube" (content.js, line 2)
[Log] eKVTFXQPAhs – 0.416 – "innerTube" (content.js, line 2)
[Log] iZguqSC0v1E – 0.413 – "innerTube" (content.js, line 2)
[Log] A5w-dEgIU1M – 0.398 – "innerTube" (content.js, line 2)
[Log] esNyZYTeCgY – 0.448 – "innerTube" (content.js, line 2)
[Log] Hk3zEPgSV-g – 0.468 – "innerTube" (content.js, line 2)
[Log] SVqN_FixG0M – 0.442 – "innerTube" (content.js, line 2)
[Log] zAT8frZcFAs – 0.49 – "innerTube" (content.js, line 2)
[Log] p5k_V63CAQw – 0.457 – "innerTube" (content.js, line 2)
[Log] 3Tjy5GHf1uE – 0.448 – "innerTube" (content.js, line 2)
[Log] tK6sqxT0ttQ – 0.434 – "innerTube" (content.js, line 2)
[Log] M9ZCjMtthqY – 0.464 – "innerTube" (content.js, line 2)
[Log] ovaMlxgLLi4 – 0.426 – "innerTube" (content.js, line 2)
[Log] Qu5oj9DlpX0 – 0.441 – "innerTube" (content.js, line 2)
[Log] 72sMnA9uLWM – 0.432 – "innerTube" (content.js, line 2)
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: {source: "sponsorblock", type: "newElement", name: ""}, …}
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: Object, …}
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: {source: "sponsorblock", type: "newElement", name: ""}, …}
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: Object, …}
[Log] MessageEvent {isTrusted: true, origin: "https://www.youtube.com", lastEventId: "", source: Window, data: Object, …}
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Log] ph71tLt_YUw – 1.238 – "innerTube" (content.js, line 2)
[Log] FK4RHzNHZXY – 1.232 – "innerTube" (content.js, line 2)
[Log] spiQsqHep5I – 1.228 – "innerTube" (content.js, line 2)
[Log] CxkadTTH4_0 – 1.208 – "innerTube" (content.js, line 2)
[Log] Hz6JDLMC7aw – 1.213 – "innerTube" (content.js, line 2)
[Log] midAYXO2CAo – 1.198 – "innerTube" (content.js, line 2)
[Log] jfZ8ACqsyGg – 1.225 – "innerTube" (content.js, line 2)
[Log] 7VMSEzj-CLg – 1.219 – "innerTube" (content.js, line 2)
[Log] ENI4D5PbuDw – 1.153 – "innerTube" (content.js, line 2)
[Log] W0cGX5_Kw3M – 1.194 – "innerTube" (content.js, line 2)
[Log] tbYNMZcppUg – 1.184 – "innerTube" (content.js, line 2)
[Log] eA6R82gHvLI – 1.174 – "innerTube" (content.js, line 2)
[Log] _RTiy2eLZZ4 – 1.19 – "innerTube" (content.js, line 2)
[Log] AoMQKZbS7ZI – 1.146 – "innerTube" (content.js, line 2)
[Log] JGvLntyUFjg – 1.107 – "innerTube" (content.js, line 2)
[Log] 37nLIhZYQXk – 1.127 – "innerTube" (content.js, line 2)
[Log] tAfaXFIcuvc – 1.181 – "innerTube" (content.js, line 2)
[Log] Ko3IrTe8hYY – 1.208 – "innerTube" (content.js, line 2)
[Log] H-c90t_3EC8 – 1.133 – "innerTube" (content.js, line 2)
[Log] -ziwjAO4K50 – 1.163 – "innerTube" (content.js, line 2)
[Log] GRmiOOth8tM – 1.139 – "innerTube" (content.js, line 2)
[Log] uy1WUbaeER4 – 1.125 – "innerTube" (content.js, line 2)
[Log] nZ1Oa_uHsLo – 1.121 – "innerTube" (content.js, line 2)
[Log] GOiX0-ym5lQ – 1.145 – "innerTube" (content.js, line 2)
[Log] nXDPYASqZIs – 1.093 – "innerTube" (content.js, line 2)
[Log] S7lfrpDGmwY – 1.17 – "innerTube" (content.js, line 2)
[Log] iqDcG0Iq6Pg – 1.175 – "innerTube" (content.js, line 2)
[Log] xGdK4hKo7IU – 1.108 – "innerTube" (content.js, line 2)
[Log] yYTSdlOdkn0 – 1.078 – "innerTube" (content.js, line 2)
[Log] qm7y9jlebrA – 1.104 – "innerTube" (content.js, line 2)
[Log] gBMBU9F8OKI – 1.1 – "innerTube" (content.js, line 2)
[Log] qVRqw5ir_pA – 1.06 – "innerTube" (content.js, line 2)
[Log] G9IFrPN2p3g – 1.091 – "innerTube" (content.js, line 2)
[Log] O74Qh8x8EUc – 1.085 – "innerTube" (content.js, line 2)
[Log] pJurdK6i0NY – 1.159 – "innerTube" (content.js, line 2)
[Log] rR8xzjD1dR0 – 1.067 – "innerTube" (content.js, line 2)
[Log] W2jSGUdtrZY – 1.057 – "innerTube" (content.js, line 2)
[Log] CmQzzPOR4Fo – 1.198 – "innerTube" (content.js, line 2)
[Log] gMjjNwouiPM – 1.12 – "innerTube" (content.js, line 2)
[Log] dCODWqdehWE – 1.154 – "innerTube" (content.js, line 2)
[Log] QHX-LomCb5w – 1.149 – "innerTube" (content.js, line 2)
[Log] z1mMxaYKdt0 – 1.116 – "innerTube" (content.js, line 2)
[Log] PRm9Hbz6jj0 – 1.131 – "innerTube" (content.js, line 2)
[Log] ooMCvGlbbc4 – 1.088 – "innerTube" (content.js, line 2)
[Log] 88VAovCeYO8 – 1.093 – "innerTube" (content.js, line 2)
[Log] ihvG3RgbYzE – 1.071 – "innerTube" (content.js, line 2)
[Log] ZQtRLLZkE3A – 1.128 – "innerTube" (content.js, line 2)
[Log] V9GjwkHCeNA – 1.114 – "innerTube" (content.js, line 2)
[Log] CM5vT_JSIkk – 1.109 – "innerTube" (content.js, line 2)
[Log] AWp_wgw1LyY – 1.068 – "innerTube" (content.js, line 2)
[Log] PAfwqYeljhY – 1.105 – "innerTube" (content.js, line 2)
[Log] O2nFXCwbhuI – 1.085 – "innerTube" (content.js, line 2)
[Log] TZpWmw-7THI – 1.08 – "innerTube" (content.js, line 2)
[Log] iCWn9U8HHHc – 1.053 – "innerTube" (content.js, line 2)
[Log] Q_80OQ57_24 – 1.102 – "innerTube" (content.js, line 2)
[Log] tOyDiEcLoJQ – 1.049 – "innerTube" (content.js, line 2)
[Log] gkBIGYC4pmA – 1.039 – "innerTube" (content.js, line 2)
[Log] 2DOd4RLNeT4 – 1.037 – "innerTube" (content.js, line 2)
[Log] OrpaZtt3GTg – 1.068 – "innerTube" (content.js, line 2)
[Log] yckxSGIX8UM – 1.063 – "innerTube" (content.js, line 2)
[Log] 4w2obG5fzRs – 1.029 – "innerTube" (content.js, line 2)
[Log] 5dosYWwtqXg – 1.023 – "innerTube" (content.js, line 2)
[Log] UeBz7u3kaa4 – 1.034 – "innerTube" (content.js, line 2)
[Log] bnVgwcfTztQ – 1.015 – "innerTube" (content.js, line 2)
[Log] dMpObKYu8eo – 0.995 – "innerTube" (content.js, line 2)
[Log] DbFguRIB2mI – 1.02 – "innerTube" (content.js, line 2)
[Log] YPq48Wm8y-U – 1.001 – "innerTube" (content.js, line 2)
[Log] S6rRbb0yq84 – 1.041 – "innerTube" (content.js, line 2)
[Log] 6PN13yRFtPY – 1.086 – "innerTube" (content.js, line 2)
[Log] PwDW4x6sLpY – 1.017 – "innerTube" (content.js, line 2)
[Log] 7DKv5H5Frt0 – 1.022 – "innerTube" (content.js, line 2)
[Log] Ju3JIgdYBaM – 1.028 – "innerTube" (content.js, line 2)
[Log] KI8wn9ib9nc – 0.998 – "innerTube" (content.js, line 2)
[Log] Tk684Z2IxQI – 1.013 – "innerTube" (content.js, line 2)
[Log] tnsyzbRVtxs – 1.049 – "innerTube" (content.js, line 2)
[Log] 54FChs1PtrY – 1.004 – "innerTube" (content.js, line 2)
[Log] 4skdPd3veto – 0.99 – "innerTube" (content.js, line 2)
[Log] E3p_Cv32tEo – 0.995 – "innerTube" (content.js, line 2)
[Log] 07E4iQ5z9iY – 0.985 – "innerTube" (content.js, line 2)
[Log] 5rqrOBZdFVU – 0.976 – "innerTube" (content.js, line 2)
[Log] v-vD_xZaWGg – 0.966 – "innerTube" (content.js, line 2)
[Log] F0JDK_71yDg – 0.962 – "innerTube" (content.js, line 2)
[Log] OqwSXjxqH_w – 0.974 – "innerTube" (content.js, line 2)
[Log] smyhda3m668 – 0.985 – "innerTube" (content.js, line 2)
[Log] ijeCrllTH5c – 0.946 – "innerTube" (content.js, line 2)
[Log] HouzvJGazs4 – 0.942 – "innerTube" (content.js, line 2)
[Log] 9qljpi5jiMQ – 0.927 – "innerTube" (content.js, line 2)
[Log] 32lx_B8HQbk – 0.938 – "innerTube" (content.js, line 2)
[Log] FYLkrnFVGCA – 0.933 – "innerTube" (content.js, line 2)
[Log] RBCQ1D-JAts – 0.963 – "innerTube" (content.js, line 2)
[Log] 1jxVaOY89qc – 0.957 – "innerTube" (content.js, line 2)
[Log] lDBDI35NjQg – 0.986 – "innerTube" (content.js, line 2)
[Log] xpoLtX2cLKM – 1.046 – "innerTube" (content.js, line 2)
[Log] IFA-_RKuJfg – 0.946 – "innerTube" (content.js, line 2)
[Log] d6Pcp944sRI – 0.953 – "innerTube" (content.js, line 2)
[Log] Bso6qJWb7R4 – 0.937 – "innerTube" (content.js, line 2)
[Log] 3VohJapkObs – 0.927 – "innerTube" (content.js, line 2)
[Log] _yDtLv-7xZ4 – 0.943 – "innerTube" (content.js, line 2)
[Log] pe6f5O8tKao – 0.933 – "innerTube" (content.js, line 2)
[Log] ouUyQX8Bu6A – 0.927 – "innerTube" (content.js, line 2)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
[Error] Failed to load resource: the server responded with a status of 400 (Bad Request) (getThumbnail, line 0)
Selected screenshots since the copy/pasted output didn't include the failing URLs image image image

And in this case, what was displaying? No thumbnails, only some?

  1. Loaded subscriptions page, no thumbnails visible
  2. Ran code
  3. Clicked a video - during page nav the thumbnails started appearing but then the page switched
  4. Recommendations on video page were visible
  5. Clicked back, thumbnails were visible on subscriptions page
  6. Scrolled down - upon loading a new batch of links, new thumbnails were not visible