Saturday 12 June 2021

BigSur の Photos.app 解決篇

いつもの Photos.app の内蔵DBの変更ですが、

Pictures/Photos Library.photoslibrary/database/Photos.sqlite

をなんとかすれば良くて、

  my $sql = $mdb->prepare('select * from ZASSET , ZADDITIONALASSETATTRIBUTES where ZASSET.Z_PK=ZADDITIONALASSETATTRIBUTES.ZASSET and ZDATECREATED >= '.$after." order by ZDATECREATED");
  $sql->execute or die("db error $sql->errstr");
  while (my $photo = $sql->fetchrow_hashref ) {
     my $filename = $photo->{'ZORIGINALFILENAME'} ;
     my $imagePath = "originals/".$photo->{'ZDIRECTORY'}."/".$photo->{'ZFILENAME'} ;

これだけでした。Z_PK ってのは表のキーに全部同じ属性名付けてるのか。まぁ、IDとかつける人いるしな。Primary Key のこと?

で、他の表のキーには表の名前をそのまま付けてるのか。普通 attr_id とかすると思うんだが。

なんか名前の重複を処理しないなと思ってデバッグしてたら、本当に同じファイルが複数DBに入ってた。

さすが、クソアプリ。写真の重複判定しないのね。もはや読み込みにしか使ってないです。

No comments: