用户:StarHeartHunt/bv av互转

1.https://www.zhihu.com/question/381784377/answer/1099438784

2.TG:PinTG

/*
方案一:
来自 https://www.zhihu.com/question/381784377/answer/1099438784
*/
var table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF",
  tr = new Object();
for (var i = 0; i < 58; i++) {
  tr[table[i]] = i;
}
var s = [11, 10, 3, 8, 4, 6],
  xor = 177451812,
  add = 8728348608;

function dec(x) {
  var r = 0;
  for (var i = 0; i < 6; i++) {
    r += tr[x[s[i]]] * 58 ** i;
  }
  return (r - add) ^ xor;
}

function enc(x) {
  x = (x ^ xor) + add;
  r = "BV1  4 1 7  ".split("");
  for (var i = 0; i < 6; i++) {
    r[s[i]] = table[Math.floor(x / 58 ** i) % 58];
  }
  return r.join("");
}

console.log(dec("BV17x411w7KC"));
console.log(enc(170001));

/*
方案二
*/
function hget(type, id) {
  $http.get({
    url: `http://api.bilibili.com/x/web-interface/archive/stat?${type}id=${id}`,
    handler: resp => {
      var data = resp.data.data;
      console.log({
        bvid: data.bvid,
        aid: data.aid
      });
    }
  });
}

hget("a", "170001");
hget("bv", "BV17x411w7KC");