ruby-on-rails - iTunes 将 "trackid"通过匹配保存在 iCloud 上的文件的位置

标签 ruby-on-rails macos audio metadata itunes

目标是使用 iTunes 商店为仅驻留在 iCloud 上的文件更新音频元数据。
我找到了一个方便的 Ruby 脚本,如果在本地重新下载文件 http://cl.ly/C3kK 将执行该任务

该脚本使我了解了 iTunes 商店 api,但是,我仍然需要 iTunes 商店 trackId,不要将其与本地/内部 trackId 或 persistentId 混淆。上面的脚本读取物理音频文件的第一个 MB 以查找魔数(Magic Number)并存储后续整数。我偷看了 itunes 音乐 library.xml 没有运气。 Itunes 将这些信息存储在我认为的某个地方。或者至少可以使用另一个 ID 从 iCloud 中检索元数据。
最后,我会简单地使用来自 iTunes Store api 的结果更新 iTunes 音乐 library.xml。

我意识到有 iCloud iTunes api 调用,但在我深入研究该主题之前,我宁愿向专家发布一个问题。

任何关于这个主题的帮助都会很棒。

最佳答案

我知道你发布这个问题已经有一段时间了,但我遇到了同样的问题并且能够解决这个问题。 iTunes 商店 trackId 存储在 iTunes 匹配文件的下载版本中。如果从文件中获取前 1024 个字节的数据,则 rails id 是字符串 'song' 之后的前 4 个字节的数据。您需要将其从带符号的 32 位整数转换为十进制。

示例:没有汽车走(街机火灾)

file_string = File.open(path, 'r').read(1024)
index = file_string.index('song')
@iTunes_id = file_string[index+4,4].unpack('N')[0]
print "Song ID: #{@iTunes_id}"

结果是:
Song ID: 81607936

现在,您可以使用该 ID 并从 iTunes 中查找轨道数据:
https://itunes.apple.com/lookup?id=81607936&country=US

结果是:
{
 "resultCount":1,
 "results": [
{"wrapperType":"track", "kind":"song", "artistId":23203991, "collectionId":81607965, "trackId":81607936, "artistName":"Arcade Fire", "collectionName":"Arcade Fire EP", "trackName":"No Cars Go", "collectionCensoredName":"Arcade Fire EP", "trackCensoredName":"No Cars Go", "artistViewUrl":"https://itunes.apple.com/us/artist/arcade-fire/id23203991?uo=4", "collectionViewUrl":"https://itunes.apple.com/us/album/no-cars-go/id81607965?i=81607936&uo=4", "trackViewUrl":"https://itunes.apple.com/us/album/no-cars-go/id81607965?i=81607936&uo=4", "previewUrl":"http://a644.phobos.apple.com/us/r1000/060/Music2/v4/ba/95/be/ba95be41-4a03-4dea-2965-57dd5f0b66c0/mzaf_6092501386391248238.m4a", "artworkUrl30":"http://a5.mzstatic.com/us/r30/Music/y2005/m10/d01/h10/mzi.yfrupnuj.30x30-50.jpg", "artworkUrl60":"http://a2.mzstatic.com/us/r30/Music/y2005/m10/d01/h10/mzi.yfrupnuj.60x60-50.jpg", "artworkUrl100":"http://a5.mzstatic.com/us/r30/Music/y2005/m10/d01/h10/mzi.yfrupnuj.100x100-75.jpg", "collectionPrice":6.93, "trackPrice":0.99, "releaseDate":"2005-01-10T08:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":7, "trackNumber":3, "trackTimeMillis":364071, "country":"USA", "currency":"USD", "primaryGenreName":"Alternative", "radioStationUrl":"https://itunes.apple.com/station/idra.81607936"}]
}

我希望这对 OP 或其他任何人有所帮助,我无法在其他任何地方找到此信息。

关于ruby-on-rails - iTunes 将 "trackid"通过匹配保存在 iCloud 上的文件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14143232/

相关文章:

ruby-on-rails - 多个子域不断重定向到根路径

ruby-on-rails - 为什么 Heroku 的运行速度比 localhost 慢很多?

python - 皮林特 : "Problem importing module ....: cannot import name ' Type'"

php - ffmpeg/PHP - 将任何视频格式转换为 ogg 时出现问题 - 断断续续的视频/无音频 - win64

ruby-on-rails - HABTM 关系和 accepts_nested_attributes_for

ruby-on-rails - 自身具有多个条件和嵌套属性的 Rails Scope

python - Homebrew 软件:无法链接 python

macos - 如何在 OS X 上的旧版 Safari 中测试我的网站?

audio - 用 J2ME 播放音频

android - 使用AudioManager后,音频流会留在听筒上