@mestela said
-the album has videos in there too, can pythonista display videos via the ui module?
Yes it you should need ObjectiveC, try this quick and dirty script
Note that my album is named Pastels, replace that by your own album
import photos import time import ui import random import threading from objc_util import * class my_thread(threading.Thread): def __init__(self,asset, vo): threading.Thread.__init__(self) self.asset = asset self.vo = vo def run(self): asseturl = ObjCClass('AVURLAsset').alloc().initWithURL_options_(self.asset.ALAssetURL(),None) i=AVPlayerItem.playerItemWithAsset_(asseturl) p=AVPlayer.playerWithPlayerItem_(i) videolayer=AVPlayerLayer.playerLayerWithPlayer_(p) videolayer.frame=self.vo.bounds() self.vo.layer().addSublayer_(videolayer) p.play() AVPlayerItem=ObjCClass('AVPlayerItem') AVPlayer=ObjCClass('AVPlayer') AVPlayerLayer=ObjCClass('AVPlayerLayer') albums = photos.get_albums() album = [x for x in albums if x.title=='Pastels'][0] photos = album.assets random.shuffle(photos) iv = ui.ImageView() iv.content_mode=ui.CONTENT_SCALE_ASPECT_FIT iv.present('fullscreen', hide_title_bar=True) v = ui.View() v.frame = iv.frame v.hidden = True iv.add_subview(v) vo = ObjCInstance(v) dt = 0 for photo in photos: #print(photo) if photo.media_type == 'image': iv.image = photo.get_ui_image() time.sleep(0.2) elif photo.media_type == 'video': phasset = ObjCInstance(photo) v.hidden = False mythread = my_thread(phasset, vo) mythread.start() time.sleep(photo.duration) v.hidden = True