Node.js 工具集,用于本地音乐文件管理和照片批量处理。
jsTool/
├── scripts/
│ ├── music/ # 音乐管理工具 (35个)
│ └── photo/ # 照片处理工具 (2个)
├── package.json
└── README.md
| 脚本 |
功能 |
用法 |
check_duplicates_enhanced.js |
重复检测 (MD5精确 + Levenshtein模糊匹配) |
node check_duplicates_enhanced.js "/path/to/music" |
check_chinese_duplicates.js |
华语歌曲专用重复检测,内置华语艺人库 |
node check_chinese_duplicates.js "/path/to/music" |
generate_chinese_cleanup_script.js |
读取华语重复检测报告,交互式生成清理脚本 |
node generate_chinese_cleanup_script.js |
find_special_versions.js |
检测 Live/伴奏/序曲等特殊版本 |
node find_special_versions.js "/path/to/music" |
check_japanese.js |
通过假名识别日语歌曲 |
node check_japanese.js "/path/to/music" |
find_empty_dirs.js |
空目录和无歌曲目录检测 |
node find_empty_dirs.js "/path/to/music" |
find_orphan_lrcs.js |
检测没有对应音频的孤立歌词文件 |
node find_orphan_lrcs.js "/path/to/music" |
| 脚本 |
功能 |
用法 |
hot_songs.js |
查询歌手热门歌曲 / 地区榜单 |
node hot_songs.js --artist "周杰伦" -n 20 |
search_artist_hot_songs.js |
从多个音乐 API 查询热门歌曲并排序 |
node search_artist_hot_songs.js "张韶涵" 30 |
search_artist_hot_songs_save.js |
同上,额外保存为 M3U 和 TXT |
node search_artist_hot_songs_save.js "张韶涵" 30 "/tmp" |
batch_query_artists.js |
批量扫描歌手目录,逐个查询热门歌曲 |
node batch_query_artists.js "/path/to/artists" -n 30 |
organize_hot_songs.js |
根据 hot_songs.txt 将歌曲移动到 hot_songs 子目录 |
node organize_hot_songs.js "/path/to/artists" |
find_and_move_hot_songs.js |
根据硬编码名单查找并移动热门歌曲 |
node find_and_move_hot_songs.js "<源目录>" "<输出目录>" |
move_top_songs.js |
根据 artist_top_songs.txt 模糊匹配移动歌曲 |
node move_top_songs.js "/path/to/artists" |
rename_hot_songs.js |
热门歌曲文件重新编号 (从 801 起) |
node rename_hot_songs.js "/path/to/hot" |
| 脚本 |
功能 |
用法 |
download_lyrics.js |
自动下载缺失的 .lrc 歌词 (QQ音乐/网易云) |
node download_lyrics.js "/path/to/music" -y |
download_covers.js |
下载同名 .jpg 封面 (QQ音乐/网易云/iTunes) |
node download_covers.js "/path/to/music" -y |
embed_lyrics.js |
将 .lrc 歌词嵌入 WAV 文件 (ID3v2.4) |
node embed_lyrics.js "/path/to/music" -y |
embed_covers.js |
将 .jpg 封面嵌入 WAV 文件 (ID3v2.4) |
node embed_covers.js "/path/to/music" -y |
update_cover_art.js |
从 API 查找并嵌入封面 (MP3/FLAC) |
node update_cover_art.js "/path/to/music" [--dry-run] |
batch_update_covers.js |
批量对多个子目录执行封面更新 |
node batch_update_covers.js "/path/to/root" [--dry-run] |
| 脚本 |
功能 |
用法 |
fix_audio_tags.js |
检测并补全缺失标签 (QQ音乐/网易云/iTunes) |
node fix_audio_tags.js "/path/to/music" |
update_metadata.js |
更新音频文件元数据 |
node update_metadata.js "/path/to/music" |
batch_update_metadata.js |
批量对多个子目录执行元数据更新 |
node batch_update_metadata.js "/path/to/root" |
force_update_album_artist.js |
从 API 强制更新专辑名和专辑艺术家 |
node force_update_album_artist.js "/path/to/music" [--apply] |
force_update_year.js |
从 API 强制更新发行年份 |
node force_update_year.js "/path/to/music" |
| 脚本 |
功能 |
用法 |
playlist_generator.js |
生成 Navidrome 智能播放列表 (.nsp) |
node playlist_generator.js --name "周杰伦精选" --artist "周杰伦" |
playlist_from_dir.js |
根据源目录歌曲匹配生成播放列表 (.m3u) |
node playlist_from_dir.js -s "/源目录" -l "/音乐库" -n "歌单名" |
| 脚本 |
功能 |
用法 |
migrate_artists.js |
生成歌手目录迁移脚本 (跨磁盘) |
node migrate_artists.js |
move_wav_files.js |
将 WAV 文件及歌词移到单独目录 |
node move_wav_files.js "/path/to/music" |
reorganize_wav_files.js |
按指定数量将 WAV 分组到子目录 |
node reorganize_wav_files.js "/path/to/wav" 50 "前缀" |
split_cd.js |
按文件数量将大目录拆分为 CD 子目录 |
node split_cd.js "/path/to/music" |
| 脚本 |
功能 |
用法 |
rename_photos.js |
基于 EXIF 拍摄日期批量重命名,RAW+JPG 自动分组 |
node rename_photos.js "/path/to/photos" |
fix_dates.js |
从文件名提取日期写入 EXIF 并修正文件系统时间 |
node fix_dates.js "/path/to/photos" |
- 支持命令行参数指定目标目录
- 跳过
. 隐藏文件和 _ 临时目录
- 生成清理脚本而非直接删除(安全优先)
- 统一的输出格式(报告 + 统计)
| 包名 |
用途 |
music-metadata |
读取音频文件元数据 |
node-id3 |
读写 ID3 标签 (MP3/WAV) |
exifr |
读取照片 EXIF 信息 |
piexifjs |
读写 JPG 文件 EXIF 数据 |
axios |
HTTP 请求 (API 调用) |
opencc-js |
繁体转简体 |
image-size |
获取图片尺寸 |
minimist |
命令行参数解析 |