josephw / titl

Tools for iTunes Libraries
60 stars 12 forks source link

10.6.3 library fails unzipping #20

Open josephw opened 9 years ago

josephw commented 9 years ago

Original issue 20 created by josephw on 2012-10-12T15:24:55.000Z:

What steps will reproduce the problem?

  1. start with a library of version 10.6.3
  2. run one of the routines on it (such as export ratings)
  3. get stack trace from java

What is the expected output? What do you see instead? the proper export rating functionality (i'm not sure what that looks like since i haven't been able to complete it with my library)

What version of the product are you using? On what operating system? titl-core-0.3-SNAPSHOT.jar

Please provide any additional information below. I have a project that involves trying to update the date added fields (which are otherwise read-only) to the file timestamps (i started using itunes in 2006 but i'v ehad files as far back as 1996 and would really like to have that data preserved, what songs i've had longest etc).. So i have been trying to re-implement what titl is doing, but in python. so i can glue the matching/stating of a backup of files..

I've gotten so far as doing the parsing of the hdfm properly, but when it's time to decrypt/inflate the rest of the file to get access at the individual hxxx tags, i have been running up into problems trying to get it to decrypt properly. Now, encryption seems to go smoothly always (and my first byte is 0x78 just like ParseHdfm tells me it should be), but when i tried to inflate using zlib, i get various errors (invalid code lengths is one). I've tried with just the first 100k decrypted, i tried the entire file decrypted, heck i even tried 16 byte block increments from 0 bytes decrypted to the entire file size.. and nothing will let the inflating complete properly w/o errors!

Sooo... i figure let me just see what titl makes of this since i'm probably coding something wrong.. and lo and behold, titl also has an exception and gives me the following stack trace:

$ java -jar titl-core/target/titl-core-0.3-SNAPSHOT.jar ExportRatings /var/tmp/test.itl Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.kafsemo.titl.tools.Main.main(Main.java:42) Caused by: java.util.zip.ZipException: oversubscribed dynamic bit lengths tree at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:147) at org.kafsemo.titl.Hdfm.inflate(Hdfm.java:221) at org.kafsemo.titl.Hdfm.read(Hdfm.java:107) at org.kafsemo.titl.ParseLibrary.parse(ParseLibrary.java:90) at org.kafsemo.titl.ParseLibrary.parse(ParseLibrary.java:80) at org.kafsemo.titl.tools.ExportRatings.main(ExportRatings.java:44)

So i guess titl does not work right on 10.6.3 ? What is the latest version people have had success using titl on? I've uploaded my titl file in case anyone wnats to duplicate what i'm seeing..

josephw commented 9 years ago

Comment #1 originally posted by josephw on 2012-10-12T15:26:54.000Z:

The sentence:

i have been running up into problems trying to get it to decrypt properly

should read:

i have been running up into problems trying to get it to decompress (inflate) properly

josephw commented 9 years ago

Comment #2 originally posted by josephw on 2012-10-12T15:27:52.000Z:

Also the sentence:

Now, encryption seems to go smoothly always

should read:

Now, the decryption stage seems to go smoothly always

josephw commented 9 years ago

Comment #3 originally posted by josephw on 2012-10-12T18:01:57.000Z:

As an update, seems I've finally been able to get my python code working for the inflating/decompressing..

Can't say i'm certain why i'm seeing that stack trace from titl tough, since my itl file decompresses fine afterall, Did notice that was only if i run the entire thing through the aes decryption (not just the first 100k). Guess this is a confirmation of bug # 15 ?

NJRoadfan commented 6 years ago

You wouldn't happen to have that python code handy? I have a ton of files with the wrong "date added" on them from moving to a new machine using the XML file method and would like to correct them to the original date added programmatically. I have the .itl library file from the old machine with the original dates.