Skip to content

Releases: itouakirai/am-hook

v0.6.2

Choose a tag to compare

@github-actions github-actions released this 25 Oct 06:27

更新内容

修复

  • 🐛 Android Chrome 上空间声场的交互控制约 1 秒后才听到:低延迟 JOC 播放的 AudioContext 改用 latencyHint: 'interactive',输出延迟从约 0.35 秒降到约 0.04 秒,也不再因输出端成块拉取而断粮、提前量一路加大,转头等控制约 0.17 秒后听到;其他播放方式仍用 'playback'

What's Changed

Fixes

  • 🐛 On Android Chrome, spatial scene controls took about 1 s to be heard: the low-latency JOC playback's AudioContext now uses latencyHint: 'interactive', cutting output latency from ~0.35 s to ~0.04 s and no longer starving (and growing the lead) as the output pulls audio in large blocks, so turning your head is heard after ~0.17 s; other playback methods keep 'playback'

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.6.1...v0.6.2

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 14:08

更新内容

新功能

  • ✨ 杜比全景声对象渲染(JOC,来自 am-hook-joc),默认关闭:在设置中心「JOC 对象渲染」选择 Speaker 2.0 或双耳后,E-AC-3(Dolby Atmos)歌曲在浏览器内用码流中的 JOC 与对象元数据重建 15 个对象与 LFE,渲染为立体声;双耳使用约克大学 SADIE II 数据库的 20 组 HRTF(默认 D2),带早期反射与房间混响。播放方式、HRTF 与输出衰减对正在播放的歌曲立即生效,全屏播放界面的音质详情里也可以切换;按当前音量削波时每首提示一次
  • ✨ 空间声场(音质详情 →「空间声场」,双耳):虚拟头部与 15 个对象的 3D 视图,对象按实时位置移动、光球大小随电平。拖动转头,各对象的 HRTF 与房间反射按新朝向重算,约 0.15 秒后听到;可在房间里走动(走近变响)、第一人称视角、点光球独奏 / 静音、「聚焦」面朝的对象、放大仰角、巡游,手机上可用陀螺仪转头
  • ⚡ 有 AudioWorklet 时(HTTPS 或 localhost)JOC 按播放进度逐帧渲染,只提前约 0.1 秒,交互控制立刻生效;否则仍按分段提前渲染

What's Changed

New

  • ✨ Dolby Atmos object rendering (JOC, from am-hook-joc), off by default: pick Speaker 2.0 or Binaural under Settings → JOC object rendering, and E-AC-3 (Dolby Atmos) songs are rendered in the browser, rebuilding 15 objects plus LFE from the stream's JOC and object metadata and rendering them to stereo; Binaural uses the 20 HRTFs of the University of York SADIE II database (D2 by default) with early reflections and a room. Mode, HRTF and output attenuation apply to the playing song at once, also switchable in the full-screen player's quality panel; the player warns once per song if the output clips at the current volume
  • ✨ Spatial scene (quality panel → "Spatial scene", binaural): a 3D view of a virtual head among the 15 objects, which move with their live positions and glow with their level. Drag to turn your head and every object's HRTF and room reflections follow the new orientation, audible about 0.15 s later; walk around the room (objects get louder as you approach), first-person view, click an orb to solo / mute it, focus on the objects you face, exaggerate the elevation, tour, or turn with the gyroscope on a phone
  • ⚡ With AudioWorklet available (HTTPS or localhost), JOC renders frame by frame along the playback position, only ~0.1 s ahead, so interactive changes take effect at once; otherwise it still renders fragments ahead

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 09:10

更新内容

新功能

  • ✨ 全屏播放界面按 AMLL react-full 重做:横向布局(左侧封面、标题与播放控件,右侧歌词,底部开关;隐藏歌词时左栏滑到中间)与竖向布局(歌词上方小封面,或大封面,封面按弹簧动画移动);播放 / 暂停、上一首 / 下一首(箭头动画)、随机、重复、歌词与待播清单开关等改用 react-full 的图标与按下动画,进度条与音量条可拉伸回弹;打开时滑入、关闭时滑出,触屏上可下拉把手关闭;点总时长切换为剩余时间;桌面端待播清单也在歌词区域打开
  • ✨ 全屏播放界面进度条下方显示音质标志,点击弹出音质详情:当前音质的规格与播放方式,以及这首歌的其他音质,可直接切换

变更

  • 💄 页面底部的播放条改用全屏播放界面的同一套图标(播放控件、随机 / 重复、歌词、待播清单、音量),随机 / 重复开启时为实心圆角方块;音质标志不再显示在播放条上
  • 💄 Dolby Atmos 音质图标换成「Dolby Atmos」一行字标,大小与其他音质图标协调

What's Changed

New

  • ✨ The full-screen player is rebuilt on AMLL react-full: a horizontal layout (cover, title and controls on the left, lyrics on the right, toggles along the bottom; the left column slides to the centre when lyrics are hidden) and a vertical layout (small cover above the lyrics, or a big cover, moving on a spring); react-full icons and press animations for play/pause, previous/next (arrow animation), shuffle, repeat and the lyrics and queue toggles, stretchy progress and volume sliders; slides in and out, drag the handle down to close on touch, click the total time for remaining time, and the queue opens in the lyrics area on desktop too
  • ✨ The full-screen player shows a quality badge under the progress bar; click it for the current quality's specs and playback method, plus the song's other qualities to switch to

Changed

  • 💄 The bottom player bar uses the full-screen player's icons (playback controls, shuffle / repeat, lyrics, queue, volume); shuffle and repeat show a filled rounded square when on. The quality badge is no longer shown on the bar
  • 💄 The Dolby Atmos quality icon is now the one-line "Dolby Atmos" wordmark, sized to match the other quality icons

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.5.9...v0.6.0

v0.5.9

Choose a tag to compare

@github-actions github-actions released this 23 Oct 14:36

更新内容

新功能

  • ✨ 设置中心「文件名」:可用变量改为跟随正在编辑的模板,只列出该模板适用的(如歌单文件夹只有歌单名、歌单作者、歌单 ID),按歌曲 / 专辑 / 音质 / 歌单 / ID 分组,ID 默认收起;预览下方提示不认识的变量与不适用于此项的变量
  • ✨ 播放出错时显示重试倒计时与「立即重试」按钮

修复

  • 🐛 分段或密钥加载失败后每 3 秒无限重试,缓冲中的音频仍在播放时还会绕过计时器反复请求:现在按 3 / 6 / 12 / 24 / 48 秒(带随机抖动)退避,最多 5 次

变更

  • ♻️ 开头几个分段使用的 FairPlay 密钥(P000000000/s1/e1)改称「预取密钥」:它不一定只覆盖第一个分段(有的歌到第三个分段才换成歌曲密钥)。解密本来就按每个分段自己的 EXT-X-KEY,只是改了名称与说明文字(含 ALAC 检测选项)

What's Changed

New

  • ✨ Settings, File names: variables now follow the template being edited and list only the ones it supports (e.g. the playlist folder has just the playlist name, curator and playlist ID), grouped by song / album / quality / playlist / ID with IDs collapsed; the preview warns about unknown variables and ones that don't apply to that template
  • ✨ Playback errors show a retry countdown and a "Retry now" button

Fixes

  • 🐛 Segment or key load failures were retried every 3 s forever, and pumps while buffered audio was still playing bypassed the timer: retries now back off 3 / 6 / 12 / 24 / 48 s with jitter and stop after 5 attempts

Changed

  • ♻️ The FairPlay key used for the leading segments (P000000000/s1/e1) is now called the prefetch key: it does not always cover only the first segment (some songs switch to the track key at the third). Decryption already followed each segment's own EXT-X-KEY; only names and wording changed (including the ALAC check option)

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.5.8...v0.5.9

v0.5.8

Choose a tag to compare

@github-actions github-actions released this 22 Oct 14:10

更新内容

新功能

  • ✨ 设置中心「没有时降级」下新增「降级顺序」:列出首选音质与之后依次尝试的音质,可上移、下移、移除或添加,「默认」恢复内置顺序;按首选音质分别保存,下载对话框中临时选的首选音质也用它自己的顺序;清空即不降级
  • ✨ 下载中心完整显示 ALAC 检测结果(不再截断,窄屏时与音质一起换行到标题下方),专辑 / 歌单任务卡片显示检测汇总

修复

  • 🐛 没有 master 的歌曲只有 /webplayback 的 Widevine AAC-LC 256(如 cn 1569279827),之前无论设置如何都会按 AAC 256 下载:现在与其他音质走同一顺序,只在首选或降级顺序中有 AAC 256 时下载,否则跳过

变更

  • ⚡ amp-api 标为 hasLyrics: false 的歌曲不再向 wrapper-lite 请求歌词;歌词获取失败(404 除外)最多尝试 3 次,间隔 1 秒、2 秒,取消下载时立即停止

What's Changed

New

  • ✨ Settings: a "Fallback order" list under "Fall back when missing" shows the preferred quality and the qualities tried after it; each can be moved up / down or removed, others added, and "Default" restores the built-in order. Orders are saved per preferred quality, so a quality picked in the download dialog uses its own; an empty order means no fallback
  • ✨ The download center shows ALAC check results in full (no truncation; on narrow screens they wrap under the title with the quality), and album / playlist cards show a check summary

Fixes

  • 🐛 Songs without a master only have the Widevine AAC-LC 256 from /webplayback (e.g. cn 1569279827) and were downloaded at AAC 256 whatever the settings: they now follow the same order as other qualities and are downloaded only when AAC 256 is preferred or in the fallback order, otherwise skipped

Changed

  • ⚡ Songs that amp-api marks hasLyrics: false no longer request lyrics from wrapper-lite; a failed lyrics fetch (other than 404) is tried up to 3 times, 1 s and 2 s apart, and stops at once when the download is cancelled

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.5.7...v0.5.8

v0.5.7

Choose a tag to compare

@github-actions github-actions released this 21 Oct 14:27

更新内容

新功能

  • ✨ 「检测 ALAC」可同时检测 wrapper-lite 给出的 master m3u8:它与网页版(amp-api enhancedHls)可能是不同的打包,有时音质更高(如 1679278167:网页版 24/48,wrapper-lite 另有 24/96)。两边最高音质 ALAC 相同时只检测一次,不同时分别列出并标明哪边更高
  • ✨ 歌单页、歌曲页头部与歌曲「更多」菜单(专辑、歌单、搜索等处)也可以检测 ALAC
  • ✨ 歌曲页同时取网页版的 master 与 wrapper-lite 的比较,只在 wrapper-lite 中有的音质标为「仅 wrapper-lite」,可复制网页版 master 地址
  • ✨ 设置中心:可关闭下载时的 ALAC END 标记修复;可在下载 ALAC 时检测并把结果写入自定义标签(默认 ALAC_CHECK),结论同时显示在下载中心;检测直接使用下载到的数据,不另发请求

变更

  • 💄 检测对话框打开后不再自动开始:可全选、全不选或勾选部分曲目;显示地区、专辑 / 歌单 / 歌曲 ID、歌曲 ID 与检测时间;选项改为一行短标签,说明收进「说明」,每个来源的结果显示为一张卡片

What's Changed

New

  • ✨ "Check ALAC" can also check the master m3u8 from wrapper-lite: it may be packaged differently from the web API's (amp-api enhancedHls) and sometimes has a better ALAC (1679278167: 24/48 on the web, also 24/96 via wrapper-lite). The same best ALAC is checked once; different ones are both listed and the better one is marked
  • ✨ ALAC check on playlist and song pages and in songs' More menu (albums, playlists, search and more)
  • ✨ The song page compares the web API's master with wrapper-lite's, tags qualities only wrapper-lite has and can copy the web master URL
  • ✨ Settings: turn off the ALAC END-tag repair of downloads; check ALAC while downloading and write the result to a custom tag (ALAC_CHECK by default), also shown in the download center; the check reads the downloaded data itself, with no extra requests

Changed

  • 💄 The check dialog no longer starts by itself: select all, none or some tracks; it shows the region, the album / playlist / song ID, song IDs and the check time; the options are one line of short labels with the explanations under "About", and each source's result is a card

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.5.6...v0.5.7

v0.5.6

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:29

更新内容

新功能

  • ✨ 专辑页「检测 ALAC」(播放、随机播放旁的波形按钮):逐首检测最高音质 ALAC 中末尾被覆盖的原样帧(AppleMusicDecrypt#136),不经过 wrapper-lite,也不请求 /key
    • master m3u8 取自 amp-api 的 extendedAssetUrls.enhancedHls;每个分段只下载开头的 moof,长度超过一帧 PCM 的 sample 再只读末尾 4 字节(cbcs 不加密的尾部),16-bit / 44.1 kHz 的一首歌约 80 KB
    • 区分「缺 END 标记」(FFmpeg 等会丢弃该帧)与「隐藏缺陷」(END 标记恰好是 111 但填充位不为零:解码不报错,最后一个样本已损坏),列出帧号、时间与末尾 4 字节,可复制文字报告
    • 显示打包日期(init 段 mvhd 的创建时间)与打包软件版本(swre)
    • 可选:用固定密钥解密第一个分段(约 15 秒)并解码,分析实际位深(低位是否全为零)与频宽(高于量化噪声的最高频率,陡降时提示疑似升频或有损来源),并画出频谱

变更

  • 📝 README 更正 ALAC 包尾修复的说明:恢复 END 标记只是让解码器不再丢弃该帧,被覆盖的最后一个样本无法还原

What's Changed

New

  • ✨ "Check ALAC" on album pages (the waveform button next to Play and Shuffle): finds the escape frames whose end was overwritten in every track's best ALAC stream (AppleMusicDecrypt#136), without wrapper-lite and without requesting /key
    • The master m3u8 comes from amp-api's extendedAssetUrls.enhancedHls; only each segment's moof is downloaded, plus the last 4 bytes (the part cbcs leaves unencrypted) of samples larger than one frame of PCM, about 80 KB for a 16-bit / 44.1 kHz track
    • Tells "END tag missing" (FFmpeg and others drop the frame) from "Hidden damage" (the END tag happens to be 111 but the padding is not zero: it decodes, but the last sample is wrong), lists frame numbers, times and the last 4 bytes, and copies a text report
    • Shows the packaging date (creation time in the init segment's mvhd) and the packager version (swre)
    • Optionally decrypts the first segment (about 15 s) with the fixed key and decodes it to measure the real bit depth (low bits always zero?) and bandwidth (highest frequency above the quantization noise; a steep drop suggests upsampling or a lossy source), with a spectrum chart

Changed

  • 📝 The README now describes the ALAC end-tag repair accurately: restoring the END tag only stops decoders from dropping the frame; the overwritten last sample cannot be restored

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.5.5...v0.5.6

v0.5.5

Choose a tag to compare

@github-actions github-actions released this 19 Oct 18:35

更新内容

变更

  • 💄 播放栏仿照 music.apple.com 重做为悬浮的玻璃胶囊(高 56px,最宽 720px):左侧播放控制、中间 LCD、右侧操作
    • LCD 带 34px 封面、两行滚动标题与 2px 进度线,悬停或拖动时展开为 7px 并显示时间
    • 音量改为喇叭按钮加滑出的滑块,点击静音
    • 播放提示(FLAC 转码、多声道 PCM)移入模式徽标后的弹出框,只在第一次自动显示;播放错误浮在播放栏上方
    • 760px 及以下改用紧凑的迷你播放器布局
  • 💄 歌曲页仿照 music.apple.com 重做
    • 页头:208px 封面(1260px 以上 300px)带光晕,手机上居中;标题、可点击的艺人、专辑 · 年份 · 流派与音频特性徽标;页面按封面颜色着色,与专辑页一致
    • 播放按钮在歌曲播放时变为暂停;收藏按钮与「更多」菜单(资料库、播放列表、下载、复制链接、在 Apple Music 中打开)取代原来的一排按钮
    • 音质列表按格式分组为圆角卡片,行样式与专辑曲目行一致;每行有下载按钮,进度环点击即取消;「更多」菜单新增「复制 m3u8 链接」;加载时显示骨架行
    • 新增制作人员、信息、音乐视频与「更多作品」栏目

What's Changed

Changed

  • 💄 The player bar is rebuilt after music.apple.com as a floating glass pill (56px tall, at most 720px wide): playback controls, an LCD, and actions
    • The LCD has 34px artwork, a two-line marquee and a 2px progress line that expands to 7px with times on hover or drag
    • Volume becomes a speaker button with a slide-out slider; click to mute
    • Playback notices (FLAC transcoding, multichannel PCM) move into a popover behind the mode badge, shown automatically only the first time; playback errors float above the bar
    • Compact mini-player layout at 760px and below
  • 💄 The song page is rebuilt after music.apple.com
    • Header: 208px artwork (300px at 1260px and up) with a glow, centred on phones; title, linked artists, album · year · genre and audio-trait badges; the page is tinted with the artwork colour like the album page
    • The Play button turns into Pause while the song plays; a favourite button and a More menu (library, playlists, download, copy links, open in Apple Music) replace the row of buttons
    • The quality list is grouped by format in rounded cards, with rows styled like album track rows; each row has a download button whose progress ring cancels on click; the More menu adds "Copy m3u8 link"; skeleton rows while loading
    • New Credits, Information, Music Videos and More By sections

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.5.4...v0.5.5

v0.5.4

Choose a tag to compare

@github-actions github-actions released this 19 Oct 15:31

更新内容

新功能

  • ✨ 首选音质新增 AAC 128 kbps、AAC 双耳 128 kbps、HE-AAC 双耳 64 kbps、AAC 缩混 128 kbps、HE-AAC 缩混 64 kbps(Apple 的 master 本来就有这些版本,之前同类中总是取最高码率),共 11 项;设置中心与下载对话框的下拉框按「无损与全景声 / AAC 立体声 / AAC 双耳 / AAC 缩混」分组,说明中给出每分钟的大致文件大小。新选项各有降级顺序,例如普通歌曲没有双耳 128 时依次改用 HE 双耳、立体声 128(#4)
  • 📝 README 加入 Telegram 交流群 @apple_music_alac

修复

  • 🐛 部分较早的 MV(如 1175186184)的 media playlist 没有 EXT-X-KEY,之前报错 “No PlayReady media found”,现在可以播放与下载

What's Changed

New

  • ✨ Preferred quality adds AAC 128 kbps, AAC Binaural 128 kbps, HE-AAC Binaural 64 kbps, AAC Downmix 128 kbps and HE-AAC Downmix 64 kbps (Apple's masters already carry them; previously the highest bitrate of a kind was always taken), 11 choices in all. The menu in Settings and the download dialog is grouped as Lossless & Dolby Atmos / AAC Stereo / AAC Binaural / AAC Downmix, and the description gives rough file sizes per minute. Each new choice has its own fallback order, e.g. a stereo-only song asked for Binaural 128 gets HE Binaural, then Stereo 128 (#4)
  • 📝 README links the Telegram group @apple_music_alac

Fixes

  • 🐛 Some older music videos (e.g. 1175186184) have media playlists without EXT-X-KEY and failed with "No PlayReady media found"; they now play and download

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.5.3...v0.5.4

v0.5.3

Choose a tag to compare

@github-actions github-actions released this 19 Oct 13:18

更新内容

新功能

  • ✨ --client-concurrency:每个客户端 IP 同时转发 wrapper-lite 的请求上限(不含 /status),超出的排队等待而不是失败;与按分钟计的 --client-rate 配合,单个访客突发时不会占满 --wrapper-concurrency 的名额、堵住其他用户。排队的请求在日志中标出 QUEUED … by client concurrency

修复

  • 🐛 /status 不计入 --client-rate,客户端却可以一直刷它、每次都请求 wrapper-lite,占用 --wrapper-rate 与并发名额:现在所有客户端共用同一结果 10 秒,同时到达的请求合并为一次,wrapper-lite 每 10 秒最多收到一次 /status;上游 /status 另设 10 秒超时

What's Changed

New

  • ✨ --client-concurrency: max wrapper-lite requests relayed at once per client IP (/status not counted); further requests wait instead of failing. Together with the per-minute --client-rate, one visitor's burst can no longer hold every --wrapper-concurrency permit and stall everyone else. Waiting requests are logged as QUEUED … by client concurrency

Fixes

  • 🐛 /status is not counted by --client-rate, yet a client could keep requesting it and every request reached wrapper-lite, using up --wrapper-rate and concurrency permits: all clients now share one result for 10 s and simultaneous requests are merged, so wrapper-lite gets at most one /status per 10 s; the upstream /status also has a 10 s timeout

下载 / Download

根据你的操作系统选择对应的文件:

  • Windows: am-hook-windows-x86_64.exe
  • Linux: am-hook-linux-x86_64
  • macOS Intel: am-hook-macos-x86_64
  • macOS Apple Silicon: am-hook-macos-aarch64

Full Changelog: v0.5.2...v0.5.3