- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试从 iTunes 的 .ITC2 文件中转储专辑插图。我能做的女巫。但在我尝试转储图像之前,我需要记下它对应的专辑/轨道/艺术家(三者中的任何一个)。有没有人发现他们是否改变了缓存文件的命名方式?因为,文件名为“2100F8A77FA24601-F2E26C349A9AB861.itc2”的“2100F8A77FA24601”实际上是我的图书馆 ID,但在我图书馆的 XML 文件中找不到“F2E26C349A9AB861”。有人可以向我解释如何将 itc2 文件与位于 XML 文件中的轨道相关联。
我确实从上面的链接中获得了一些关于如何设置 iTunes 的信息。但是这篇文章已经过时,并且不是 100% 正确于今天的 iTunes 版本 (v11)。
谢谢,色氨酸
最佳答案
嗯,实际上,.itc2 文件名的第二部分应该是 iTunes Library.xml 文件中的轨道持久 ID。也许您有已删除轨道的插图缓存?
可以根据从 XML 库中检索到的信息以这种方式计算出艺术作品的路径:
[itunes library folder]/Album Artwork/Cache/[Library Persistent ID]/XX/YY/ZZ/[Library Persistent ID - Track Persistent ID].itc2
地点:
XX: First hex digit from the end in the track persistent id in decimal form
YY: Second hex digit from the end in the track persistent id in decimal form
ZZ: Third hex digit from the end in the track persistent id in decimal form
如果:
Library Persistent ID = BEAE1DB35624CB18
Track Persistent ID = 2488665ADBC5420F
那么文件夹是:
[itunes library folder]/Album Artwork/Cache/BEAE1DB35624CB18/15/00/02/BEAE1DB35624CB18-2488665ADBC5420F.itc2
iTunes XML 库使用 plist xml format ,这是完成的 XML wrong .尽管如此,您还是可以通过一些 XSLT 魔法找到自己的出路。
检查下面的 java 代码,它将转换 iTunes Library.xml 并将计算出的艺术作品路径与艺术家和轨道名称放在 output.xml 中:
测试.java:
import java.io.File;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class Test {
public static void main(String[] args) throws Exception {
String libraryFolder = "/Path/To/iTunes/";
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("convert.xsl"));
Transformer transformer = factory.newTransformer(xslt);
transformer.setParameter("library_folder", libraryFolder);
Source text = new StreamSource(new File(libraryFolder + "iTunes Library.xml"));
transformer.transform(text, new StreamResult(new File(libraryFolder + "output.xml")));
}
}
和 convert.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:param name="library_folder"/>
<xsl:template match="plist">
<xsl:variable name="libid">
<xsl:value-of select="dict/key[. = 'Library Persistent ID']/following-sibling::string[1]"/>
</xsl:variable>
<tracks>
<xsl:apply-templates select="dict/key[. = 'Tracks']/following-sibling::dict[1]/dict" mode="track">
<xsl:with-param name="libid"><xsl:value-of select="$libid"/></xsl:with-param>
</xsl:apply-templates>
</tracks>
</xsl:template>
<xsl:template match="dict" mode="track">
<xsl:param name="libid" />
<entry>
<xsl:variable name="trackid">
<xsl:value-of select="key[. = 'Persistent ID']/following-sibling::string[1]"/>
</xsl:variable>
<xsl:variable name="dig1">
<xsl:call-template name="HexToDecimal">
<xsl:with-param name="hexNumber" select="substring($trackid, string-length($trackid))"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="dig2">
<xsl:call-template name="HexToDecimal">
<xsl:with-param name="hexNumber" select="substring($trackid, string-length($trackid) - 1, 1)"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="dig3">
<xsl:call-template name="HexToDecimal">
<xsl:with-param name="hexNumber" select="substring($trackid, string-length($trackid) - 2, 1)"/>
</xsl:call-template>
</xsl:variable>
<artist><xsl:value-of select="key[. = 'Artist']/following-sibling::string[1]"/></artist>
<name><xsl:value-of select="key[. = 'Name']/following-sibling::string[1]"/></name>
<track_id><xsl:value-of select="$trackid"/></track_id>
<artwork><xsl:value-of select="concat($library_folder, 'Album Artwork/Cache/',$libid,'/',$dig1,'/',$dig2,'/',$dig3,'/',$libid,'-',$trackid,'.itc2')"/></artwork>
</entry>
</xsl:template>
<!-- Very simple hex to decimal, only one digit -->
<xsl:template name="HexToDecimal">
<xsl:param name="hexNumber" />
<xsl:value-of select="format-number(number(substring-before(substring-after('00/11/22/33/44/55/66/77/88/99/A10/B11/C12/D13/E14/F15/a10/b11/c12/d13/e14/f15/', $hexNumber), '/')),'00')" />
</xsl:template>
</xsl:stylesheet>
关于xml - 链接 iTunes 的 ITC2 文件和 "iTunesLibrary.XML",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13795842/
我的问题是,在将项目迁移到 XCode6 后,我无法提交我的应用程序 - 它永久变为“无效” - 在 10-30 分钟后获得“无效二进制文件”状态。 迁移前没有任何问题 自旧 XCode 版本 (5.
iTunes Connect Analytics 是否应该显示 TestFlight beta 版本的数据?我认为应该如此,但我最近的 2 个版本没有出现在 ITC 分析中(也没有出现在 Google
我将许多版本上传到App Store,但面临两个问题。 1. Build is invalid 2. ITC.app.preReleaseBuild.errors.invalidBinary 这些是什
任何人都可以提供“eras light ITC”字体的 css 编码。我无法得到它。编码是 .para-quote { padding-right: 30px; font-family
在试飞审查期间,我遇到了以下问题: From Apple 2. 3 PERFORMANCE: ACCURATE METADATA Performance - 2.3 We were unable to
我在将我的 iOS 应用程序提交到审核队列时遇到问题。它不断加载并向我抛出这样的错误。 ITC.apps.assetvalidation.BITCODE_IMBALANCE_ERROR.error.m
我正在尝试从 App Bundle 添加和删除应用程序。如果我在应用程序包上线时查看它,我没有看到 Edit按钮(取而代之的是一个 Arrange 按钮)。 如果我从销售中删除 App Bundle(
我通过 Application Loader 将我的应用程序上传到 iTunesConnect,然后我点击了“提交审核”按钮,我收到了这个错误:“ITC.apps.validation.pre rel
我为我的 h2 部分更改了字体系列是 ITC Avant Garde Gothic,但它在 firefox 中工作但在 firefox 中不支持。 我的代码, section.about-sectio
我遇到了 brandley 手写字体的问题,它在 safari 中看起来很完美,但在称为 mozilla 和 chrome 的巨型浏览器中都存在问题。这是代码。 @font-face {
我已将我的应用构建从 Xcode 5.1.1 上传到 itunes connect...我目前不支持 iPhone 6。当我提交审核时出现错误,我必须先上传 iPhone 6 的截图。 ITC.app
我提交的应用程序版本为 1.2.1,构建版本为 1.0。该应用程序已成功上传到 iTunes connect,但它显示处理已久,之后显示红色标记并出现一些错误:ITC.apps.preReleaseB
我已提交应用程序进行试飞。当我向该构建添加信息时,出现错误“抱歉,出了点问题”。 ITC.apps.tf.build.test.info.missing.feedback testflight 有人遇
我正在尝试为我的 ios 应用程序首次部署到 itc,该应用程序现在包含一个 react-native View 。我使用 创建了包 react-native bundle --entry-file
iTunes Connect显示此错误: itc.olympus.partnermessage.lockey.contentprovider.contract.expiresoon.messagebo
我的应用程序在设备和模拟器上运行良好,但是当我提交它时,我得到了无效的 bundle - 一个或多个您的应用程序引用的动态库不存在于 dylib 搜索路径中上传成功完成约半小时后,错误通过电子邮件发送
我是 iOS 开发新手。我开发了一个应用程序。我有开发者帐户,但是当我想在 iTunes 上发布我的应用程序时。我的凭据不起作用。 当我尝试登录 iTunes Connect 时出现错误: "Your
我是一名优秀的程序员,十分优秀!