头条搜索增强

头条搜索双列显示、自动翻译、去除重定向

目前为 2022-11-14 提交的版本。查看 最新版本

// ==UserScript==
// @name         头条搜索增强
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  头条搜索双列显示、自动翻译、去除重定向
// @author       tutu辣么可爱(greasyfork)/IcedWatermelonJuice(github)
// @require      https://gf.qytechs.cn/scripts/415581-jquery%E5%BA%93/code/jquery%E5%BA%93.js?version=866373
// @match        https://so.toutiao.com/search*
// @icon         http://toutiao.com/favicon.ico
// @grant        GM_addStyle
// @run-at     document-start
// @license      MIT License
// ==/UserScript==

(function() {
	'use strict';
	const css = `
		.s-result-list{
		    display: grid;
		    grid-template-columns: 50% 50%;
		    grid-gap: 8px;
			margin: 0 160px!important;
			max-width: 100%!important;
		}
		.s-result-list .result-content:first-child,
		.s-result-list .whole-row-item{
			grid-column-start: 1;
			grid-column-end: 3;
		}
		.s-result-list .result-content[data-i],
		.s-result-list .radius-solid-border{
			border:1px solid var(--black-6);
			border-radius:5px;
			padding:12px;
		}
		.main .s-side-list{
			display:none!important;
		}
		.result-content .nav_2v7eXx{
			padding: 16px 160px 12px!important;
			justify-content: center!important;
		}
		.result-content .searchWrap_14Gtni{
			position: absolute;
			left: 50%;
			transform: translateX(-50%);
		}
		.margin-top-24-important{
			margin-top:24px!important;
		}
	`;
	GM_addStyle(css);

	function otherCss(dom, index = 1) {
		dom = dom instanceof jQuery ? dom : $(dom);
		dom.attr("data-res-id", index);
		$(`<div class="result-content whole-row-item radius-solid-border text-center">当前页:第${index}页</div>`)
			.insertBefore(dom.children(".result-content[data-i=0]"))
		dom.children(".result-content:not([data-i])").each((i, e) => {
			e = $(e);
			if (e.children("[shared]")[0]) {
				e.addClass("whole-row-item text-center margin-top-24-important");
				if (/下一页|上一页/.test(e.text())) {
					e.find("a[data-search]").each((i, a) => {
						a = $(a);
						if (a.text() === "下一页") {
							a.data("targetID", index + 1)
						} else if (a.text() === "上一页") {
							a.data("targetID", (index - 1) < 1 ? 1 : (index - 1))
						} else {
							a.data("targetID", a.text())
						}
						a.click((e) => {
							e.preventDefault()
							navJump(a.data("targetID"));
						})
					})
				} else {
					e.hide();
				}
			}
		})
		dom.children(".result-content[data-i]:last").addClass("whole-row-item").hide();
		dom.find(".result-content[data-i] a").each((i, e) => {
			if (e.href.indexOf("/search/jump?url=") !== -1) {
				var url = new URL(e.href).searchParams.get("url");
				console.log("重定向: " + e.href + " --> " + url)
				e.href = url;
			}
		})
	}

	function navJump(id) {
		id = typeof id === "number" ? id : parseInt(id);
		if (!$(".s-result-list").is(":visible") || !id) {
			return false
		}
		if ($(".s-result-list").length < id) {
			autoNextPage(".s-result-list:last", () => {
				$("html,body").stop(true);
				$("html,body").animate({
					scrollTop: $(`.s-result-list:last`).offset().top - 85
				}, 500, () => {
					navJump(id);
				});
			})
		} else if ($(`.s-result-list[data-res-id=${id}]`).is(":visible")) {
			$("html,body").stop(true);
			$("html,body").animate({
				scrollTop: $(`.s-result-list[data-res-id=${id}]`).offset().top - 85
			}, 500);
		}
	}

	function autoNextPage(dom, fn) {
		dom = dom instanceof jQuery ? dom : $(dom);
		dom.find(".result-content:not([data-i]).whole-row-item a").each((i, e) => {
			if (e.innerText === "下一页" && /^https?:\/\//i.test(e.href)) {
				$.get(e.href, (r) => {
					r = $(r).find(".s-result-list");
					if (r.length === 1) {
						if (!$(`.s-result-list[data-res-id=${$(e).data("targetID")}]`)[0]) {
							otherCss(r, $(e).data("targetID"));
							r.css("padding-top", "0");
							r.find(".result-content:first-child").hide();
							$(".main").append(r);
							dom.animate({
								paddingBottom: 0
							}, "fast");
							//dom.css("", "0")
						}
						typeof fn === "function" && fn();
					}
				})
				return false
			}
		})
	}
	$(".s-result-list").ready(() => {
		otherCss(".s-result-list");
		var loadFlag = true;
		$(document).scroll(function() {
			if (loadFlag && $(window).scrollTop() + $(window).height() > $(document).height() -
				50) {
				loadFlag = false;
				autoNextPage(".s-result-list:last", () => {
					setTimeout(() => {
						loadFlag = true;
					}, 500)
				})
			}
		});
	})
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址