1. 视频类小工具1.1 BV号AV号互转工具1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677<div class="kratos-post-content"> <div class="container"> <div class="content"> <div class="title"> <center> BV号AV号互转工具 </center> </div> </div> <div class="row"></div> <div class="for-group"> <div class="goo"> <center> <form action="/index.php"> <input type="text" id="x" name="BV" class="form-control2" placeholder="输入AV/BV号(英文开头)" value="" "="" style="text-align:center"> <button type="button" onclick="return exchange() && false">转换</button> </form> </center> </div> </div><p id="result"></p><script> 'use strict'; const table = [...'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF']; const s = [11, 10, 3, 8, 4, 6]; const xor = 177451812; const add = 8728348608; const av2bv = (av) => { let num = NaN; if (Object.prototype.toString.call(av) === '[object Number]') {num = av;} else if (Object.prototype.toString.call(av) === '[object String]') { num = parseInt(av.replace(/[^0-9]/gu, '')); }; if (isNaN(num) || num <= 0) { return '你在想桃子?'; }; num = (num ^ xor) + add; let result = [...'bv1 4 1 7 ']; let i = 0; while (i < 6) { result[s[i]] = table[Math.floor(num / 58 ** i) % 58]; i += 1; }; return result.join(''); }; const bv2av = (bv) => { let str = ''; if (bv.length === 12) { str = bv; } else if (bv.length === 10) { str = `BV${bv}`; } else if (bv.length === 9) { str = `BV1${bv}`; } else { return '你在想桃子'; }; if (!str.match(/[Bb][Vv][fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF]{10}/gu)) { return '你在想桃子'; }; let result = 0; let i = 0; while (i < 6) { result += table.indexOf(str[s[i]]) * 58 ** i; i += 1; }; return `av${result - add ^ xor}`; }; const exchange = () => { var x = document.getElementById('x').value; if(x.substring(0,2).toLowerCase()=='bv'){ document.getElementById('x').value = `${bv2av(x)}`; }else if(x.substring(0,2).toLowerCase()=='av'){ document.getElementById('x').value = `${av2bv(x)}`; } };</script></div>