
reference
我确实从上面的链接获得了有关如何设置iTunes的一些信息.但这篇文章已经过时,并不是100%正确到今天的iTunes版本(v11).
谢谢,
Throdne
可以通过以下方式从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 = BEAE1DB35624CB18Track 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中:
Test.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,'-',$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> 总结 以上是内存溢出为你收集整理的链接iTunes的ITC2文件和“iTunesLibrary.XML”全部内容,希望文章能够帮你解决链接iTunes的ITC2文件和“iTunesLibrary.XML”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)