大佬教程收集整理的这篇文章主要介绍了链接iTunes的ITC2文件和“iTunesLibrary.XML”,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我确实从上面的链接获得了有关如何设置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 = 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中:
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”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。