UserScript.js: 支持查询分p对应的 IA item

fix: #1
This commit is contained in:
yzqzss 2023-07-21 00:09:45 +08:00
parent 52c8d23ecc
commit a09775af36

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name Bilibili Archive Checker
// @version 1.0
// @version 1.1
// @description 多 p 视频只检查 p1 是否存在。
// @author yzqzss
// @match https://www.bilibili.com/video/*
@ -16,11 +16,25 @@
var bvRegex = /\/video\/(BV\w+)/;
var matches = url.match(bvRegex);
if (matches && matches.length > 1) {
console.log("BV:", matches[1]);
return matches[1];
}
console.log("No BV number found.");
return null;
}
function getPageNumber() {
var url = window.location.href;
var pageRegex = /p=(\d+)/;
var matches = url.match(pageRegex);
if (matches && matches.length > 1) {
console.log("PageNumber:", matches[1]);
return matches[1];
}
console.log("No PageNumber found, use 1.");
return '1';
}
function humanReadableUpperPartMap(string, backward) {
// 找到字符串中所有的 ASCII 大写字母,并返回一个能表示他们绝对位置的字符串。
// 其中每个非相邻的大写字母之间用数字表示相隔的字符数。
@ -38,14 +52,13 @@
if (backward) {
string = string.split('').reverse().join('');
}
console.log(string);
let result = '';
let steps = 0;
let char_ = '';
for (let i = 0; i < string.length; i++) {
char_ = string[i];
console.log('char_:', char_);
// console.log('char_:', char_);
if (char_ >= 'A' && char_ <= 'Z') {
if (steps === 0) {
result += char_;
@ -58,14 +71,14 @@
steps++;
}
}
console.log("upperPart:", result);
return result;
}
// 查 archive.org
function queryInternetArchive(bvNumber) {
var iaUrl = "https://archive.org/services/check_identifier.php?output=json&identifier=BiliBili-" + bvNumber + "_p1" + "-" + humanReadableUpperPartMap(bvNumber, true);
console.log(iaUrl);
function queryInternetArchive(bvNumber, pageNumber) {
var iaUrl = "https://archive.org/services/check_identifier.php?output=json&identifier=BiliBili-" + bvNumber + "_p" + pageNumber + "-" + humanReadableUpperPartMap(bvNumber, true);
console.log("Querying:", iaUrl);
GM_xmlhttpRequest({
method: "GET",
url: iaUrl,
@ -151,8 +164,9 @@
function main() {
var bvNumber = getBVNumber();
var pageNumber = getPageNumber();
if (bvNumber) {
queryInternetArchive(bvNumber);
queryInternetArchive(bvNumber, pageNumber);
}
}