Open NL9 opened 5 years ago
Right, so the problem is that pycdlib only understands the UDF "Bridge" format, which basically combines an old-style ISO9660 structure with a new-style UDF structure.
What you are trying is a UDF-only ISO, which I don't actually have any of at the moment. In some sense I've intentionally not implemented UDF-only support, since it kind of seems like it belongs in a "pyudf" package or something like that. On the other hand, I have large swaths of UDF implemented here to handle the bridge format, so it is sort of a natural extension here. I'd have to think about this some more.
@NL9 Do you know of any convenient Linux programs to generate UDF-only ISOs? mkisofs/genisoimage only generate bridge format ones.
I think it's a good idea to support all ISO filesystems in one package.
Try mkudffs https://manpages.ubuntu.com/manpages/bionic/man8/mkudffs.8.html
Try mkudffs https://manpages.ubuntu.com/manpages/bionic/man8/mkudffs.8.html
Fantastic, thanks for that. I'll take a look at it.
This may take me some time to get done; my free time at the moment is kind of limited. I'll work on it in the background, but if you have any time to contribute, patches would definitely be welcome. The most important first step is to add a way to do automated testing for UDF filesystems; with that in place, we can confidently make changes to the library until things work.
@clalancette This is something I would be keen to be able to use in nzbToMedia. https://github.com/clinton-hall/nzbToMedia/issues/1588
I have an example bluray iso image (UDF 2.50) and am happy to provide data and test etc.
Basically, I have tried isoparser, I have tried pycdlib (and received the same output as the OP here), and I have tried 7zip which likewise doesn't support UDF 2.50/2.60.
The only method I have currently is to mount the .iso, but this required root/sudo which is not a preferred practice for an automation script.
Yeah, I've come around to agreeing that this library should include that support. I've been slowly working on it, but it is a rather large expansion of the UDF support, so it will take me some time to complete. Thanks for the comments, I'll let you know when I have something to show.
thanks @clalancette Appreciate your work on the project. As said, I am happy to test and provide examples etc. once you get to that phase.
Any update on the UDF support?
Any update on the UDF support?
I'm still working on it on this branch: https://github.com/clalancette/pycdlib/tree/udf-only . I've gotten it so that it opens more UDF disks without exceptions, but not all of the ones I have access to. It also doesn't successfully write out those UDF disks, so there is still work to be done before I can merge it. Sorry it's been slow, I haven't had a lot of time for it and it is fairly complex. Any help on that branch in the form of pull requests is welcome.
No worries, there's no hurry (though, I would be lying if I'd say I wasn't looking forward to udf support in this package haha). I wish I could help, but my knowledge about filesystems is next to nothing.
I have this blu-ray that crashes when loading into pycdlib with the error: "Partition map goes beyond end of data, ISO corrupt" at line 2179 in udf.py. When I log the offset, map_len and len(partition_maps[offset:]), they are respectively 6, 64 and 66. It's the second and last partition_map in the forloop, the first partition map goes through the whole loop succesfully.
I'm 100% certain this iso is not corrupt though.
Thanks @clalancette im glad i found your Project. I get the same result on Blu-ray isos like @Landcross did. I don't know if this could help, but there is a guy who modified the libdvdread library for BD5 ISO and Blu-ray support. http://www.lundman.net/wiki/index.php/Libdvdread.plus Edit: This c lib from vlc is even newer https://code.videolan.org/videolan/libudfread/-/tree/master
It's been a very long time since this issue was opened, so just as a quick update:
I did do a lot of work to increase the UDF support in pycdlib. It should now support a lot more of the UDF structures, and has unit tests for most of that work.
Unfortunately, it turns out that pycdlib has a deep-seated reliance on the existence of a Primary Volume Descriptor (PVD) on the ISO. For those that don't know, the PVD is sort of the anchor point that lets one know that the series of bytes you are looking is indeed formatted like a PVD. A UDF-bridge disk has a PVD, but a pure UDF (like what is on Bluray disks) does not.
I poked at this for some time, and there is no easy way to remove that reliance on a PVD from pycdlib. It is probably possible with quite a bit of work, but that's sort of where I've been stuck for the 2 years since this bug was opened. At this point, I can't promise any sort of timeframe for this feature. If you are interested in looking at what I've done and/or helping out, a good starting place are the two branches of work where I've tried to make this work:
Looks like pycdlib doesn't support UDF using on Blu-Ray ISO.
I'm using:
And got this error:
I'm using pycdlib-1.7.0