Skip to content

dvxiaofan/jsTools

Repository files navigation

jsTool - 音乐与照片管理工具集

Node.js 工具集,用于本地音乐文件管理和照片批量处理。

环境准备

npm install

目录结构

jsTool/
├── scripts/
│   ├── music/          # 音乐管理工具 (35个)
│   └── photo/          # 照片处理工具 (2个)
├── package.json
└── README.md

音乐工具 (scripts/music/)

重复检测与清理

脚本 功能 用法
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"

照片工具 (scripts/photo/)

脚本 功能 用法
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 命令行参数解析

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors