IScript
各种脚本 -- 关于 虾米 xiami.com, 百度网盘 pan.baidu.com, 115网盘 115.com, 网易音乐 music.163.com, 百度音乐 music.baidu.com, 360网盘/云盘 yunpan.cn, 视频解析 flvxz.com, bt torrent ↔ magnet, ed2k 搜索, tumblr 图片下载, unzip
Install / Use
/learn @PeterDing/IScriptREADME
iScript
pan.baidu.com.py 已经重构,不再维护
BaiduPCS-Py 是 pan.baidu.com.py 的重构版,运行在 Python >= 3.6
[L] [W] [LW] 分别表示,在linux, windows, linux和windows 下通过测试。
windows用户可在babun (https://github.com/babun/babun) 下运行。
[L] - leetcode_problems.py - 下载Leetcode的算法题
[L] - xiami.py - 下载或播放高品质虾米音乐(xiami.com)
[L] - pan.baidu.com.py - 百度网盘的下载、离线下载、上传、播放、转存、文件操作
[L] - bt.py - magnet torrent 互转、及 过滤敏.感.词
[L] - 115.py - 115网盘的下载和播放
[L] - yunpan.360.cn.py - 360网盘的下载
[L] - music.baidu.com.py - 下载或播放高品质百度音乐(music.baidu.com)
[L] - music.163.com.py - 下载或播放高品质网易音乐(music.163.com)
[L] - flv_cmd.py - 基于在线服务的视频解析 client - 支持下载、播放
[L] - tumblr.py - 下载某个tumblr.com的所有图片、视频、音频
[L] - unzip.py - 解决linux下unzip乱码的问题
[L] - ed2k_search.py - 基于 donkey4u.com 的emule搜索
[L] - 91porn.py - 下载或播放91porn
[L] - ThunderLixianExporter.user.js - A fork of https://github.com/binux/ThunderLixianExporter - 增加了mpv和mplayer的导出。
<a name="leetcode_problems.py"></a>
leetcode_problems.py - 下载Leetcode的算法题
依赖
python2-requests (https://github.com/kennethreitz/requests)
python2-lxml
参数:
--index sort by index
--level sort by level
--tag sort by tag
--title sort by title
--rm_blank 移除题中的空行
--line LINE 两题之间的空行
-r, --redownload 重新下载数据
下载的数据保持在 ./leecode_problems.pk 转成的txt在 './leecode problems.txt'
<a name="xiami.py"></a>
xiami.py - 下载或播放高品质虾米音乐(xiami.com)
1. 依赖
wget
python2-requests (https://github.com/kennethreitz/requests)
python2-mutagen (https://code.google.com/p/mutagen/)
mpv (http://mpv.io)
2. 使用说明
xiami.py 是一个虾米音乐的命令行(CLI)客户端。提供登录、下载、播放、收藏的功能。
提供对落网 luoo.net的分析
初次使用需要登录 xm login (原xiami账号)
~~支持淘宝账户 xm logintaobao~~
~~对于淘宝账户,登录后只保存有关虾米的cookies,删除了有关淘宝的cookies~~
淘宝登录加密算法无法破解,需要手动获取cookies (方法见下 手动添加cookie登录)
vip账户支持高品质音乐的下载和播放。
原虾米vip用户如果不能获得高品质音乐,请用关联的淘宝帐号登录。
下载的MP3默认添加id3 tags,保存在当前目录下。
cookies保存在 ~/.Xiami.cookies。
关于播放操作:
在运行脚本的终端,输入1次Enter,关闭当前播放并播放下一个文件,连续输入2次Enter,关闭当前播放并退出。
命令:
# 虾米账号登录
g
login
login username
login username password
signout # 退出登录
d 或 download url1 url2 # 下载
p 或 play url1 url2 # 播放
s 或 save url1 url2 # 收藏
参数:
-p, --play 按顺序播放
-pp 按歌曲被播放的次数,从高到低播放
-l, --low 低品质mp3
-d, --undescription 不加入disk的描述
-f num, --from_ num 从第num个开始
-t TAGS, --tags TAGS 收藏用的tags,用英文逗号分开, eg: -t piano,cello,guitar
-n, --undownload 不下载,用于修改已存在的MP3的id3 tags
3. 用法
xm 是xiami.py的马甲 (alias xm='python2 /path/to/xiami.py')
# 登录
xm g
xm login
xm login username
xm login username password
# 手动添加cookie登录
1. 用浏览器登录后,按F12,然后访问 https://www.xiami.com/album/123456
2. 选择‘网络’或network,找到 123456,在其中找到 Cookie: xxx
3. 然后在终端运行 xm g "xxx"
# 退出登录
xm signout
# 下载专辑
xm d http://www.xiami.com/album/168709?spm=a1z1s.6928801.1561534521.114.ShN6mD
# 下载单曲
xm d http://www.xiami.com/song/2082998?spm=a1z1s.6659513.0.0.DT2j7T
# 下载精选集
xm d http://www.xiami.com/song/showcollect/id/30374035?spm=a1z1s.3061701.6856305.16.fvh75t
# 下载该艺术家所有专辑, Top 20 歌曲, radio
xm d http://www.xiami.com/artist/23460?spm=a1z1s.6928801.1561534521.115.ShW08b
# 下载用户的收藏, 虾米推荐, radio, 推荐
xm d http://www.xiami.com/u/141825?spm=a1z1s.3521917.0.0.zI0APP
# 下载排行榜
xm d http://www.xiami.com/chart/index/c/2?spm=a1z1s.2943549.6827465.6.VrEAoY
# 下载 风格 genre, radio
xm d http://www.xiami.com/genre/detail/gid/2?spm=a1z1s.3057857.6850221.1.g9ySan
xm d http://www.xiami.com/genre/detail/sid/2970?spm=a1z1s.3057857.6850221.4.pkepgt
# 下载 widget (虾米播播)
xm d http://www.xiami.com/widget/player-multi?uid=4350663&sid=1774531852,378713,3294421,1771778464,378728,378717,378727,1773346501,&width=990&height=346&mainColor=e29833&backColor=60362a&widget_from=4350663
# 下载落网期刊
# 分析落网期刊的音乐后,在虾米上搜索并下载
xm d http://www.luoo.net/music/706
播放:
# url 是上面的
xm p url
收藏:
xm s http://www.xiami.com/album/168709?spm=a1z1s.6928801.1561534521.114.ShN6mD
xm s -t 'tag1,tag 2,tag 3' http://www.xiami.com/song/2082998?spm=a1z1s.6659513.0.0.DT2j7T
xm s http://www.xiami.com/song/showcollect/id/30374035?spm=a1z1s.3061701.6856305.16.fvh75t
xm s http://www.xiami.com/artist/23460?spm=a1z1s.6928801.1561534521.115.ShW08b
4. 参考:
http://kanoha.org/2011/08/30/xiami-absolute-address/
http://www.blackglory.me/xiami-vip-audition-with-no-quality-difference-between-downloading/
https://gist.github.com/lepture/1014329
淘宝登录代码: https://github.com/ly0/xiami-tools
<a name="pan.baidu.com.py"></a>
pan.baidu.com.py - 百度网盘的下载、离线下载、上传、播放、转存、文件操作
pan.baidu.com.py 已经重构,不再维护
BaiduPCS-Py 是 pan.baidu.com.py 的重构版,运行在 Python >= 3.6
1. 依赖
wget
aria2 (~ 1.18)
aget-rs (https://github.com/PeterDing/aget-rs/releases)
pip2 install rsa pyasn1 requests requests-toolbelt
mpv (http://mpv.io)
# 可选依赖
shadowsocks # 用于加密上传。
# 用 python2 的 pip 安装
pip2 install shadowsocks
# 除了用pip安装包,还可以手动:
https://github.com/PeterDing/iScript/wiki/%E6%89%8B%E5%8A%A8%E8%A7%A3%E5%86%B3pan.baidu.com.py%E4%BE%9D%E8%B5%96%E5%8C%85
other
2. 使用说明
pan.baidu.com.py 是一个百度网盘的命令行客户端。
初次使用需要登录 bp login
支持多帐号登录
现在只支持用cookie登录
支持cookie登录
支持加密上传, 需要 shadowsocks
cd, ls 功能完全支持
所有路径可以是 相对路径 或 绝对路径
他人分享的网盘连接,只支持单个的下载。
下载工具默认为wget, 可用参数-a num选用aria2
支持用 aget 加速下载, 用法见下
下载的文件,保存在当前目录下。
下载默认为非递归,递归下载加 -R
搜索时,默认在 cwd
搜索支持高亮
上传模式默认是 c (续传)。
开启证实(verification) 用参数 -V
理论上,上传的单个文件最大支持 2T
cookies保存在 ~/.bp.cookies
上传数据保存在 ~/.bp.pickle
关于播放操作:
在运行脚本的终端,输入1次Enter,关闭当前播放并播放下一个文件,连续输入2次Enter,关闭当前播放并退出。
<a name="cmd"></a>
命令:
!!注意: 命令参数中,所有网盘的路径和本地路径可以是 相对路径 或 绝对路径
# 登录
g
login
login username
login username password
login username cookie
# 删除帐号
userdelete 或 ud
# 切换帐号
userchange 或 uc
# 帐号信息
user
# 显示当前工作目录
cwd
# 切换当前工作目录
cd path # 支持 ./../...
# 播放
p 或 play url1 url2 path1 path2
# 上传
u 或 upload localpath remotepath
# 加密上传
u localpath remotepath [-P password] -t ec -R
# 转存
s 或 save url remotepath [-s secret]
# 下载
d 或 download url1 url2 path1 path2 非递归下载 到当前本地目录
d 或 download url1 url2 path1 path2 -R 递归下载 到当前本地目录
# !! 注意:
# d /path/to/download -R 递归下载 *download文件夹* 到当前本地目录
# d /path/to/download/ -R 递归下载 *download文件夹中的文件* 到当前本地目录
# 下载并解密
d /path/to/download -R -t dc [-P password] [-m aes-256-cfb]
# 解密已下载的文件
dc path1 path2 -R [-P password] [-m aes-256-cfb]
# 文件操作
md 或 mkdir path1 path2 创建文件夹
rn 或 rename path new_path 重命名
rm 或 remove path1 path2 删除
mv 或 move path1 path2 /path/to/directory 移动
cp 或 copy path /path/to/directory_or_file 复制
cp 或 copy path1 path2 /path/to/directory 复制
# 使用正则表达式进行文件操作
rnr 或 rnre foo bar dir1 dir2 -I re1 re2 重命名文件夹中的文件名
rmr 或 rmre dir1 dir2 -E re1 re2 删除文件夹下匹配到的文件
mvr 或 mvre dir1 dir2 /path/to/dir -H head1 head2 移动文件夹下匹配到的文件
cpr 或 cpre dir1 dir2 /path/to/dir -T tail1 tail2 复制文件夹下匹配到的文件
# 递归加 -R
# rmr, mvr, cpr 中 -t, -I, -E, -H, -T 至少要有一个,放在命令行末尾
# -I, -E, -H, -T 后可跟多个匹配式
# 可以用 -t 指定操作的文件类型
-t f # 文件
-t d # 文件夹
# rnr 中 foo bar 都是 regex
# -y, --yes # 不显示警示,直接进行。 !!注意,除非你知道你做什么,否则请不要使用。
rmr / -I '.*' -y # !! 删除网盘中的所有文件
# 回复用bt.py做base64加密的文件
rnr /path/to/decode1 /path/to/decode2 -t f,bd64
# 搜索
# directory 必须是绝对路径, 默认是 cwd
f 或 find keyword1 keyword2 [directory] 非递归搜索
ff keyword1 keyword2 [directory] 非递归搜索 反序
ft keyword1 keyword2 [directory] 非递归搜索 by time
ftt keyword1 keyword2 [directory] 非递归搜索 by time 反序
fs keyword1 keyword2 [directory] 非递归搜索 by size
fss keyword1 keyword2 [directory] 非递归搜索 by size 反序
fn keyword1 keyword2 [directory] 非递归搜索 by name
fnn keyword1 keyword2 [directory] 非递归搜索 by name 反序
# 递归搜索加 -R
f 'ice and fire' /doc -R
# 搜索所有的账户加 -t all
f keyword1 keyword2 [directory] -t all -R
f keyword1 keyword2 [directory] -t f,all -R
# directory 默认为 /
# 关于-H, -T, -I, -E
# -I, -E, -H, -T 后可跟多个匹配式, 需要放在命令行末尾
f keyword1 keyword2 [directory] -H head -T tail -I "re(gul.*) ex(p|g)ress$"
f keyword1 keyword2 [directory] -H head -T tail -E "re(gul.*) ex(p|g)ress$"
# 搜索 加 通道(只支持 donwload, play, rnre, rm, mv)
f keyword1 keyword2 [directory] \| d -R 递归搜索后递归下载
ftt keyword1 keyword2 [directory] \| p -R 递归搜索(by time 反序)后递归播放
f keyword1 keyword2 [directory] \| rnr foo bar -R 递归搜索后rename by regex
f keyword1 keyword2 [directory] \| rm -R -T tail 递归搜索后删除
f keyword1 keyword2 [directory] \| mv /path/to -R 递归搜索后移动
# 列出文件
l path1 path2 ls by name
ll path1 path2 ls by name 反序
ln path1 path2 ls by name
lnn path1 path2 ls by name 反序
lt path1 path2 ls by time
ltt path1 path2 ls by time 反序
ls path1 path2 ls by size
lss path1 path2 ls by size 反序
l /doc/books /videos
# 以下是只列出文件或文件夹
l path1 path2 -t f
Related Skills
node-connect
340.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
340.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.2kCommit, push, and open a PR
