#geek

曲淡歌
曲淡歌@admin

2024 年 7 月 13 日

如何下载网易云音乐的普通歌词与双语歌词 

下载网易云歌词的办法

参考资料:无需下载软件!网易云歌词下载&网站生成SRT字幕方法_哔哩哔哩_bilibili

简要总结:

F12 打开控制台,搜索 lrc 能找到 lyric?csrf_token=29d51bc21214a2b0039928c8dc704967 这种格式的网址,然后右键复制响应,把包含歌词的json文件粘贴到一个word文档内,搜索替换换行符 \n 为手动分页符(替换的高级功能中手动选择)

然后把格式化完成的歌词放到 .lrc 文件中

下载双语歌词

原文地址:[下载网易云音乐的双语歌词](https://umi.im/cloud-music-lrc/

==网易云音乐==是国内最好的音乐平台,歌曲丰富,而且很多外语歌都有双语歌词。但是==网易云音乐==不提供歌词下载,用手机客户端可以一键获取,但是获取到的歌词并非 LRC 格式的,而且文件名是纯数字,不方便用。

在 PC 端,可以通过一段 JS 脚本直接获取到双语的歌词。

使用方法:

  • 打开需要下载歌词的歌曲==网易云音乐==链接,通过地址栏 URL 获取到歌曲 ID 。

cloud-music-lrc-1

  • 按 F12 打开审查元素(Chrome浏览器),点击 Console 。

cloud-music-lrc-3

  • 把下面代码最后一行里面的歌曲 ID 替换成自己需要下载歌词的歌曲 ID ,复制粘贴并回车运行。
(function(songID){
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://music.163.com/api/song/lyric?lv=-1&tv=-1&id=' + songID, true);
    xhr.send();
    xhr.onload = function() {
        var data = JSON.parse(xhr.responseText);
        var lrc = data.lrc.lyric.match(/\[\d+:\d+\.\d+[^\[]+/g);
        var tLrc = data.tlyric.lyric.match(/\[\d+:\d+\.\d+[^\[]+/g);
        var newLrc = [];
        lrc.map(function() {
            newLrc.push(lrc[arguments[1]]);
            newLrc.push(tLrc[arguments[1]]);
        });
        window.open('', "_blank", '').document.write(newLrc.join('<br>'));
    };
}('28870317')); // 歌曲 ID
  • 弹出阻止运行窗口请允许。

cloud-music-lrc-2

  • 完美得到带时间轴的双语歌词,自行保存为 LRC 格式就好了,或者直接嵌入歌曲标签里面。

cloud-music-lrc-4

感谢 V2EX 用户 demo 贡献此脚本。

GitHub地址:anonymous/concat_163_music_lrc.js

本文永久更新地址:

https://blogs.qudange.top/p/2024-07-13-how-to-download-the-lyrics/

#geek #[2]
2024 年 7 月 13 日 26 68

回复

曲淡歌
曲淡歌@admin

2024 年 7 月 13 日

安卓端用tasker实现ai总结b站 

前言

本文的实现方式受到chrome拓展ChatGPTBox的启发,原理是通过b站的api和cookie获得自动ai字幕,然后用大语言模型(LLM)来总结字幕,从而获得视频的总结。

此工具的功能是帮助用户快速总结视频内容,以提高信息获取的速度。诚然,b站自己也推出了ai总结功能,但是那个功能很不稳定,有时候对一个视频有详细而结构化的总结,有时却只能得到一句话的概括,即便LLM已经火了两三年了,b站仍没有在这块投入过多,因此只能自己动手,丰衣足食。

本工具的缺点:
1. 无法总结没有字幕的视频(但是像bibigpt和b站官方的ai总结有时候能总结没有字幕的视频,我怀疑是有其他途径获取字幕)
2. 对视频内容和音频内容非强相关的视频无效(例如一个ASMR催眠视频,如果只用声音来判断,可能整个视频都是没有意义的。我们期待在未来多模态的ai能解决这个问题)
3. 需要使用b站的cookie才能获取视频字幕,而cookie是动态变化的,因此需要cookie刷新机制,我的处理办法是使用cookiecloud(需要自己的服务器/托管在别人的服务器上)

安卓端利用tasker实现ai总结b站

工作原理

  1. 如果视频是手机分享的短链接形式(https://b23.tv/xxxxx ),则通过域名重定向获取bid(BVxxxxxx)
  2. 已知bid后,获取cid https://api.bilibili.com/x/web-interface/view?bvid=%bid
  3. 已知bid和cid后,获取包含字幕链接subtitle_url的信息https://api.bilibili.com/x/player/v2?cid=%cid&bvid=%bid
  4. 将字幕发送通过api发送给ai,让ai总结

案例:

以视频【游戏试玩】杀戮尖塔+娃娃机=抓抓地牢?游戏实况 为例,如果采用安卓端国内版bilibili应用分享链接,得到的链接为【【游戏试玩】杀戮尖塔+娃娃机=抓抓地牢?-哔哩哔哩】 https://b23.tv/jpcq7rz

(隐藏的第一步为获取最新的cookie,因为实现方法不唯一,在下一章节介绍)

因此第一步是要从文字中提取出链接,一般采用正则

(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

得到结果为https://b23.tv/jpcq7rz,然后我们需要将短链接转为长链接,最简单的办法就是使用浏览器的重定向功能,最终将得到https://www.bilibili.com/video/BV1DC411J7Wy/

然后使用正则提取出bid,正则如下:

BV([^/?]+)

即得到BV1DC411J7Wy

然后执行http get https://api.bilibili.com/x/web-interface/view?bvid=BV1DC411J7Wy 可以获取一个json文件,需要从中提取cid,因此执行两次正则

正则1(先匹配cid):

"cid":(\d+)

得到:"cid":1524209082

正则2(提取cid的值):

(\d+)

得到1524209082

然后获取字幕url,执行http get https://api.bilibili.com/x/player/v2?cid=1524209082&bvid=BV1DC411J7Wy
注意,header中需要加入cookie,如

User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Cookie:%cookieString

然后会获得一个包含键为subtitle_url的json文件(前提是视频有字幕),因此这里为了避免不存在字幕产生的误会,需要做一个有无的判断

用正则进行匹配

//[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

如果不匹配,则提示此视频无字幕,若满足则进行下一步

subtitle_url执行http get,获得json,提取键content

然后把content的内容http post给LLM

headers:

Authorization: Bearer %api_key

body:

{
    "model": "%llm_model",
    "messages": [
        {
            "role": "user",
            "content": "用尽量简练的语言,采用markdown语法书写(不要用代码块包裹),联系视频标题,对视频进行内容摘要,同时仍要保留重要细节和标题信息,视频标题为:%bili_name,字幕内容为:%subtitle"
        }
    ],
    "use_search": true,
    "stream": false
}

然后就能获得ai总结的内容了

同步cookie

我选择使用开源项目CookieCloud实现cookie的同步

变量解释:
%cookiecloud_urlcookiecloud服务器域名,例如:https://cookiecloud.25wz.cn/,注意,结尾没有/
%cookiecloud_uuid:见cookiecloud插件文档
%cookiecloud_key:见cookiecloud插件文档

步骤详解:

执行http get %cookiecloud_url/get/%cookiecloud_uuid
请求的body如下:

password%cookiecloud_key

这一步会获得解码后的json,包括cookie和localdata

然后通过JavaScriptlet来格式化cookie

var jsonData = JSON.parse(local('%http_data'));
var cookies = jsonData.cookie_data[".bilibili.com"];
var result = [];

for (var i = 0; i < cookies.length; i++) {
    var name = cookies[i].name;
    var value = cookies[i].value;
    result.push(name + "=" + value);
}

// 将结果存储在Tasker的全局变量中
setGlobal('cookieString', result.join(';'));

注:其实这一步理论上只需要SESSDATA,我为了省事这么写了。
格式化得到a=1,b=2,c=3格式的cookie信息,然后参见上一章完成目标即可。

本文永久更新地址:

https://blogs.qudange.top/p/2024-07-13-android_tasker_ai_summary/

#Ai #[5] #geek #gpt #LLM
2024 年 7 月 13 日 66 59
曲淡歌
曲淡歌@admin

2024 年 4 月 23 日

wordpress导入rss以同步全平台 

使用Feedzy插件,注意两点:
1. rss链接最后跟上/?feed_author=1,最后的数字是wordpress user ID,这样可以指定这个rss的作者是谁,1就是我的admin账号。如果不加的话,所有rss搬运过来会变成空用户,还得手动修改作者。
2. 发布时间选择item_date,这样rss的搬运内容会和原平台的发布时间同步,比如2024-04-23在wp搬运了一条2024-02-02的,就会变成在wp的2-2发布,而不是4-23,这样可以防止时间乱序。

本文永久更新地址:

https://blogs.qudange.top/p/2024-04-23-wordpress%e5%af%bc%e5%85%a5rss%e4%bb%a5%e5%90%8c%e6%ad%a5%e5%85%a8%e5%b9%b3%e5%8f%b0/

#geek #wordpress #[3]
2024 年 4 月 23 日 57 14
曲淡歌
曲淡歌@admin

2024 年 4 月 1 日

三星浏览器调教记录 

切换搜索引擎为bing

应用商店自带的国行三星浏览器只能用百度,360和神马搜索,下面给出解决办法:
1. google play下载三星浏览器beta
2. 在beta版中输入网址:internet://debug/
3. 保持这个网页,打开浏览器设置页面,最下方会出现【Debug settings】
4. 选择【Feature variation test】
5. 修改【Sales code】为【ACG】(其实不是中国的就行)
6. 修改【Country code】为【USA】
7. 修改【Country iso code】为【US】
8. 前往设置中修改搜索引擎,此时应该有google bing等选项

启用三星浏览器的广告拦截

国行商店下架了拦截插件,需要去google play手动下载

Magisk模块ChromeXt给浏览器提供脚本和控制台支持

我是一个重度沉浸式翻译使用者,最近因为三星浏览器更新了AI总结功能,为了吃上AI换用了三星浏览器。但是三星浏览器原生是不支持油猴脚本的,因此我们需要用到一个面具模块——chromext

chromext项目地址:https://github.com/JingMatrix/ChromeXt

使用方法:刷入模块后可打开这个网址来检测是否正常工作:https://jingmatrix.github.io/ChromeXt/

注意事项:在类似kiwi这种魔改较少的浏览器中,可以直接打开js文件来安装脚本,而三星浏览器不能打开js文件,所以需要先随便找个网页单击长按,然后选中【Eruda console】,进入【info】栏,在【UserScripts】中点击加号,手动选择js文件

如何调用第三方下载器?

本文永久更新地址:

https://blogs.qudange.top/p/2024-04-01-samsung/

#[5] #geek #[4]
2024 年 4 月 1 日 206
曲淡歌
曲淡歌@admin

2023 年 8 月 23 日

安卓透明代理,上手 box for magisk 

前言

在使用安卓设备的时候也有科学上网的需求,而直接使用app层级的代理会遇见以下几种问题:
1. 部分app会检测代理:比如soul微调,检测代理的主要原因都是为了防破解/防抓包
2. vpn app不稳定,容易被杀后台
3. 在使用命令行时无法通过app代理
综上所述,需要实现透明代理。目前有两个项目是比较符合的我的需求,同时又有着比较低的上手门槛的:
1. 神秘盒子:基于singbox的代理模块,无法使用自定义的分流配置,但是上手简单,有app作为图形化界面
2. box for magisk:支持诸如v2ray和clash等核心,支持自定义配置,~~目前没有图形化界面~~ 可以用app管理,但是不能在app里设置订阅。

项目实践

安装记录

  1. 下载并刷入模块
  2. 在刷入时用音量+选择下载内核,或者刷入后使用命令行
    su -c /data/adb/box/scripts/box.tool upcore(此命令为更新指定的内核,需要先确认配置文件)
   # 更新 Clash 管理面板
su -c /data/adb/box/scripts/box.tool upyacd
  1. 配置/data/adb/box/settings.ini
interva_update="@daily"  #更新频率
run_crontab="true"  #开启定时更新
subscription_url_clash="<订阅地址>"  #配置clash订阅地址,如果handshake报错可以把https改为http
renew=true  #采用订阅文件中的分流规则
  1. 终端中运行命令su -c /data/adb/box/scripts/box.tool subs
  2. 如果有需要更新Geo数据库,可以采用su -c /data/adb/box/scripts/box.tool geox
  3. 如果需要同时更新订阅与Geo,可以使用su -c /data/adb/box/scripts/box.tool subs

本文永久更新地址:

https://blogs.qudange.top/p/%e4%b8%8a%e6%89%8b%20box%20for%20magisk/

#[5] #geek #[4] #[2]
2023 年 8 月 23 日 2.2K
曲淡歌
曲淡歌@admin

2023 年 7 月 7 日

安卓使用 Thanox 实现安装新应用自动加入 Magisk 的 Denylist(Shamiko 实现) 

如果你想在安卓设备上得到最佳体验的话,Root 是必须的,而在现在 Magisk 仍然是最优的 Root 选择,但是目前很多 app 都会对 Root 进行检测,尤其是不少应用在第一次检测到设备上有 Root 的痕迹后便会把设备列入一个名单,因此在安装应用后的第一时间就做好反检测措施是很有必要的。

下面我介绍如何便捷的实现安装新应用后,自动把新应用加入 Magisk 的 Denylist中(Shamiko 实现)。

使用 Thanox 的情景模式,添加如下代码:

[
{
"name": "AutoMagiskHide",
"description": "新应用安装时,自动MagiskHide(shamiko)",
"priority": 2,
"condition": "pkgAdded == true",
"actions": [
"ui.showShortToast(\"已添加新应用:\"+pkgName+\",已加入Magisk Denylist:\" + su.exe(\"magisk --denylist add \"+pkgName));"
]
}
]

如果是使用的早期的 Magisk,那就是 Magiskhide,原理类似。
贴一下新老两个版本的 Magisk 文档,tools 那节就有具体的用法。

Magisk Denylist:Magisk Tools | Magisk (topjohnwu.github.io)
Magiskhide: Magisk Tools — Magisk documentation

本文永久更新地址:

https://blogs.qudange.top/p/2023-07-07-magisk/

#[5] #geek #[4] #root #搞机
2023 年 7 月 7 日 442
曲淡歌
曲淡歌@admin

2023 年 7 月 6 日

测试github2wordpress 

怎样写博客才能又轻松又好用?

我设计了两个仓库,一个用jekyll部署了静态博客,另一个作为文章的收集中心。第二个仓库还会把我的文章同步到我的wordpress和静态博客上,起到备份和引流的作用。

把github与wordpress打通 👋

用到了github actions与wordpress的xmlrpc服务,把_posts目录下的.md文件发送到wordpress,解析为文章。

github静态博客

本文永久更新地址:

https://blogs.qudange.top/p/2023-07-06-test/

#geek
2023 年 7 月 6 日 58

Loading...
载入中

已到底部

没有可加载的页面

C
写微博
S
搜索
J
下一篇微博/评论
K
上一篇微博/评论
R
回复
E
编辑
O
显示隐藏评论
T
回顶部
L
登录
H
显示隐藏帮助
Ctrl+Enter
提交发布
ESC
取消并清除内容