fix channel button selector, better handle extraction

This commit is contained in:
Simon 2025-01-28 16:07:00 +07:00
parent b28efc7960
commit cb4082362b
No known key found for this signature in database
GPG Key ID: 2C15AA5E89985DD4

View File

@ -106,11 +106,11 @@ function getBrowser() {
}
function getChannelContainers() {
const elements = document.querySelectorAll('#inner-header-container, #owner');
const elements = document.querySelectorAll('.page-header-view-model-wiz__page-header-flexible-actions, #owner');
const channelContainerNodes = [];
elements.forEach(element => {
if (isElementVisible(element)) {
if (isElementVisible(element) && window.location.pathname !== '/playlist') {
channelContainerNodes.push(element);
}
});
@ -194,20 +194,40 @@ function buildChannelButton(channelContainer) {
}
function getChannelHandle(channelContainer) {
let channelHandle;
const videoOwnerRenderer = channelContainer.querySelector('.ytd-video-owner-renderer');
if (!videoOwnerRenderer) {
const channelHandleContainer = document.querySelector('#channel-handle');
channelHandle = channelHandleContainer ? channelHandleContainer.innerText : null;
} else {
const href = videoOwnerRenderer.href;
if (href) {
const urlObj = new URL(href);
channelHandle = urlObj.pathname.split('/')[1];
function findeHandleString(container) {
let result = null;
function recursiveTraversal(element) {
for (let child of element.children) {
if (child.tagName === "A" && child.hasAttribute("href")) {
const href = child.getAttribute("href");
const match = href.match(/\/@[^/]+/); // Match the path starting with "@"
if (match) {
// handle is in channel link
result = match[0].substring(1);
return;
}
}
if (child.children.length === 0 && child.textContent.trim().startsWith("@")) {
// handle is in channel description text
result = child.textContent.trim();
return;
}
recursiveTraversal(child);
if (result) return;
}
}
recursiveTraversal(container);
return result;
}
let channelHandle = findeHandleString(channelContainer.parentElement);
return channelHandle;
}