Lyz's Blog

Never Give Up

计算机教育中缺失的一课

我将针对这门课中的课后作业,和薄弱的部分做个记录,以便日后复习。

课程概览与 shell

这一部分没啥难得。

阅读全文 »

在开始学习与实践之前,需要准备相关环境。
因为Github Codespaces的免费额度用满了,所以我选择了在Ubuntu22.04.1安装Hyperledger Fabric的开发环境。

环境准备

所需工具版本

Ubuntu 22.04.1
go version go1.19.3 linux/amd64
fabric 2.4.7
docker 20.10.21
docker-compose version 1.29.2

阅读全文 »

前言

因为Django的效率问题,以及Python冷启动可能会比Node要慢。
所以把我现有的Django项目用Express重构,重构过程中遇到zlib解压缩爱奇艺弹幕数据的问题。
在网上能找到的Node解压爱奇艺数据的只有下面这篇博文。
《中国新说唱2020》不完全数据大屏
但可惜的是博主没有公开相关源码,所以我自己瞎试找到了解决方案。
核心代码如下:
稍微解释一下:promises是我用循环把用axios包装所有的弹幕地址,axios返回的是Promise。
再用Promise.all去异步请求所有的弹幕文件,就能得到二进制的压缩后的弹幕文件数据。
想要解压就要用到pako.inflate(value, {to: "string"})
我是参考了两篇stackoverflow上的回答,才找到了这个方法。具体请看文末的参考资料。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const api_url = `https://cmts.iqiyi.com/bullet/${tvid.slice(-4, -2)}/${tvid.slice(-2)}/${tvid}_300_${i + 1}.z`;
const params = {
rn: "0.0123456789123456",
business: "danmu",
is_iqiyi: "true",
is_video_page: "true",
tvid: tvid,
albumid: albumid,
categoryid: categoryid,
qypid: "01010021010000000000"
};
promises.push(axios({method: "get", url: api_url, params: params, responseType: "arraybuffer"}));
const values = await Promise.all(promises);
const pako = require("pako");
const datas = values
.map(value => value.data)
.map(value => pako.inflate(value, {to: "string"}));

参考资料

阅读全文 »
0%