
昨天视频新编号BV上线了,所有视频的编号默认都变成了BVxxx,不再是avxxx,兼容在链接和搜索中输入av号,评论区和动态av和bv都可以一键传送
显然日益增长的投稿量对于编号是个问题,int是有上限的,但一串“乱码”缺少了灵魂,还会让我们想到磁力链接或者熊掌盘的链接(手动狗头)
看到av170001,我会想到“法克儿~~”,但看到BV17x411w7KC,我?????
其实av号并没有消失,只不过它已经隐藏于大众的视野里了,av和bv本质上是可以双向转换的
方法一(电脑版推荐):
打开一个视频,会发现url是BVxxx

首先按F12,再选择console主题

接着我们在下面“>”的地方输入window.__INITIAL_STATE__.aid
会发生神奇的一幕
前面加上字母“av”即可

方法二(手机&电脑通用):
可以用一个api解决
这个可以做到av号转换成bv号
网页链接后面添加av号
同样也可以bv转av
网页链接后面添加bv号
可以看到bvid和aid两项都和视频对应

方法三(本地化&硬核):
在bv号上线不到2小时,就有知乎大佬破解了其中的的算法
https://www.zhihu.com/question/381784377/answer/1099438784
反正我也看不懂,但可以肯定的是不需要借助网络

复制一下代码,并新建py文件,即可运行
table = 'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF' tr = {} for i in range(58): tr[table[i]] = i s = [11, 10, 3, 8, 4, 6, 2, 9, 5, 7] xor = 177451812 add = 100618342136696320 def Decode(x): r = 0 for i in range(10): r += tr[x[s[i]]] * 58 ** i return (r - add) ^ xor def Encode(x): x = (x ^ xor) + add r = list('BV ') for i in range(10): r[s[i]] = table[x // 58 ** i % 58] return ''. join(r) print('Please choose the mode of this application (1 for AV2BV, 2 for BV2AV)') mode = input() if mode == '1': print('Please input the AV number (number only)') num = int(input()) print(Encode(num)) if mode == '2': print('Please input the BV number (e.g. BV17x411w7KC)') string = input() print(Decode(string)) if mode != '1' and mode != '2': print('Error!') # print(Decode('BV17x411w7KC')) # print(Decode('BV1Q541167Qg')) # print(Decode('BV1mK4y1C7Bz')) # print(Encode(170001)) # print(Encode(455017605)) # print(Encode(882584971))