Quiero agregar esta cadena:
&sp=CAASAhAB
Cada vez que se realiza una consulta de búsqueda en YouTube para eliminar esa estúpida sección "La gente también vio".
He creado un script de Tampermonkey que funciona bastante bien pero no funciona cuando la búsqueda se realiza mediante el propio cuadro de búsqueda del sitio web.
¿Alguien podría ayudar? Resolver esto sería fantástico por el bien de la posteridad.
Aquí está el script de TamperMonkey:
// ==UserScript==
// @name Youtube - Remove "People Also Watched" section from search results.
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Add "&sp=CAASAhAB" to YouTube search results URL if not already present. Recommended to also use https://github.com/Vulpelo/hide-youtube-shorts
// @author MattFor | @mattfor | https://github.com/MattFor
// @match www.youtube.com/results?search_query=*
// @grant none
// ==/UserScript==
(function () {
"use strict";
function containsString(mainString, subString) {
return mainString.indexOf(subString) !== -1;
}
function updateURL() {
var currentURL = window.location.href;
var queryString = "&sp=CAASAhAB";
if (!containsString(currentURL, queryString)) {
window.location.href += queryString;
}
}
updateURL();
window.addEventListener("beforeunload", updateURL);
window.addEventListener("DOMContentLoaded", updateURL);
})();
Edición #1: Actualicé mi código según los comentarios a la pregunta, pero no hay actualizaciones significativas, parece que la solicitud POST de YouTube solo se envíauna veza juzgar por la pestaña de red.
// ==UserScript==
// @name Youtube - Modify search request
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Add "&sp=CAASAhAB" to YouTube search results URL if not already present.
// @author MattFor | @mattfor | https://github.com/MattFor
// @match www.youtube.com/results?search_query=*
// @grant none
// ==/UserScript==
(function () {
"use strict";
function containsString(mainString, subString) {
return mainString.indexOf(subString) !== -1;
}
function updateURL() {
var currentURL = window.location.href;
var queryString = "&sp=CAASAhAB";
if (!containsString(currentURL, queryString)) {
window.location.href += queryString;
}
}
function modifySearchForm() {
var searchForm = document.getElementById("search-form");
if (searchForm) {
searchForm.addEventListener("submit", function (event) {
event.preventDefault();
var formAction = searchForm.action;
var modifiedAction = formAction + "&sp=CAASAhAB";
searchForm.action = modifiedAction;
searchForm.submit();
});
}
}
updateURL();
modifySearchForm();
window.addEventListener("beforeunload", updateURL);
window.addEventListener("DOMContentLoaded", function () {
updateURL();
modifySearchForm();
});
})();
Respuesta1
Nunca antes usé Tampermonkey, pero intentaré modificar su script para manejar esto.
El problema, según veo, es que la funcionalidad de búsqueda está controlada por una <form action=""></form>
etiqueta. Sabiendo esto, el objetivo debería ser modificar ese action
parámetro en la URL para que agregue el sp=CAASAhAB
parámetro de URL.
Estedeberíahazlo:
// ==UserScript==
// @name Youtube - Remove "People Also Watched" section from search results.
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Add "&sp=CAASAhAB" to YouTube search results URL if not already present. Recommended to also use https://github.com/Vulpelo/hide-youtube-shorts
// @author MattFor | @mattfor | https://github.com/MattFor
// @match www.youtube.com/results?search_query=*
// @grant none
// ==/UserScript==
(function () {
"use strict";
function containsString(mainString, subString) {
return mainString.indexOf(subString) !== -1;
}
function updateURL() {
////////////////////////////////////////////////
// Append the URL parameter to the URL.
var currentURL = window.location.href;
var queryString = "&sp=CAASAhAB";
if (!containsString(currentURL, queryString)) {
window.location.href += queryString;
}
////////////////////////////////////////////////
// Append the URL parameter to the form action.
var formAction = document.getElementById("search-form").action;
var queryParam = "?sp=CAASAhAB";
if (!containsString(formAction, queryParam)) {
document.getElementById("search-form").action += queryParam;
}
}
updateURL();
window.addEventListener("beforeunload", updateURL);
window.addEventListener("DOMContentLoaded", updateURL);
})();
Si no funciona, es posible que haya interceptado el envío del formulario de esta manera; pseudocódigo basado en estoRespuesta de desbordamiento de pila:
document.querySelector("#search-form").addEventListener("submit", function(e) {
e.preventDefault()
e.submitter.formAction += "&sp=CAASAhAB";
this.submit();
})
O una ligera variante basada en esta otraRespuesta de desbordamiento de pila
document.querySelector("#search-form").addEventListener("submit", function(e) {
e.preventDefault();
button.setAttribute("action", this.getAttribute("action") += "&sp=CAASAhAB");
// Or try this instead of the above.
// this.action += "&sp=CAASAhAB";
this.submit();
});