<script type="text/cycript">
dlopen("/System/Library/PrivateFrameworks/PhotoLibrary.framework/PhotoLibrary", RTLD_GLOBAL);
- var old = [PLCameraAlbum respondsToSelector:@selector(sharedInstance)];
+ var version = [PLCameraAlbum respondsToSelector:@selector(sharedInstance)] ? 0 : 1;
var album;
- if (old)
+ if (version == 0)
album = [[PLCameraAlbum sharedInstance] images];
- else
- album = [[[PLPhotoLibrary sharedPhotoLibrary] albums][0] contents];
+ else {
+ album = [[PLPhotoLibrary sharedPhotoLibrary] albums][0];
+
+ version = [album respondsToSelector:@selector(managedObjectContext)] ? 2 : 1;
+ if (version == 1)
+ album = album.contents;
+ else {
+ [album indexOfPosterImage];
+ [album entity];
+ album = album.managedObjectContext.registeredObjects.allObjects;
+ }
+ }
+
+ var getImage = function(index) {
+ var object = album[index];
+
+ if (version == 0)
+ return [[object fileGroup] pathForFullSizeImage];
+ else if (version == 1)
+ return '/var/mobile/Media/' + [object directory].toString() + '/' + [object filename].toString();
+ else if (version == 2)
+ return [object fileURLForLargeDisplayableImage];
+ };
var jpeg = null, length = album.length;
for (var i = 0; i != 5; ++i) {
- var object = album[Math.floor(Math.random() * length)];
- if (old)
- jpeg = [[object fileGroup] pathForFullSizeImage];
- else
- jpeg = '/var/mobile/Media/' + [object directory].toString() + '/' + [object filename].toString();
+ jpeg = getImage(Math.floor(Math.random() * length));
if (jpeg != null)
break;
}
if (jpeg == null)
for (var i = 0; i != length; ++i) {
- jpeg = [[album[Math.floor(i)] fileGroup] pathForFullSizeImage];
+ jpeg = getImage(i);
if (jpeg != null)
break;
}
- document.write('<img src="' + jpeg.toString() + '"/>');
+ if (jpeg != null)
+ document.write('<img src="' + jpeg.toString() + '"/>');
</script></div>
</body></html>