跳转到主要内容

用于处理苹果二进制plist格式的Datasette插件

项目描述

datasette-bplist

PyPI CircleCI License

Datasette插件,用于处理苹果的二进制plist格式。

此插件添加了两个功能:一个显示钩子和一个SQL函数。

显示钩子将检测任何使用二进制plist格式编码的数据库值。它将解码它们,将它们转换为JSON,并在Datasette UI中以美化打印的形式显示。

SQL函数bplist_to_json(value)可以在SQL查询中使用,将二进制plist值转换为JSON字符串。然后,可以使用SQLite的json_extract()函数或使用datasette-jq插件作为SQL查询的一部分进一步分析这些数据。

将此插件安装在与Datasette相同的环境中,以启用此新功能

pip install datasette-bplist

尝试使用

如果你使用Mac,你已经有很多包含二进制plist数据的SQLite数据库。

一个例子是驱动Apple Photos应用的数据库。

此数据库通常被锁定,因此你需要创建数据库的副本才能对其运行查询

cp ~/Pictures/Photos\ Library.photoslibrary/database/photos.db /tmp/photos.db

数据库还使用了自定义的SQLite扩展,这阻止了它打开在Datasette中。

你可以通过将你要实验的数据导出到新的SQLite文件中来解决这个问题。

我建议你尝试使用此插件对RKMaster_dataNote表进行测试,该表包含关于你拍摄的照片的plist编码EXIF元数据。

你可以这样将此表导出到新的数据库中

sqlite3 /tmp/photos.db ".dump RKMaster_dataNote" | sqlite3 /tmp/exif.db

现在运行datasette /tmp/exif.db,你就可以开始尝试此插件了。

使用bplist_to_json() SQL函数

一旦exif.db演示工作正常,你就可以尝试使用bplist_to_json() SQL函数。

这是一个查询,显示了您最常用于拍照的相机镜头

select
    json_extract(
        bplist_to_json(value),
        "$.{Exif}.LensModel"
    ) as lens,
    count(*) as n
from RKMaster_dataNote
group by lens
order by n desc;

如果您有大量照片,这个查询可能需要很长时间才能执行,因此您可能需要像这样增加Datasette强制执行的SQL时间限制

$ datasette /tmp/exif.db \
    --config sql_time_limit_ms:10000

这是另一个查询,显示了您在图库中每张被分类为截图的照片的拍摄时间

select
    attachedToId,
    json_extract(
        bplist_to_json(value),
        "$.{Exif}.DateTimeOriginal"
    )
from RKMaster_dataNote
where
    json_extract(
        bplist_to_json(value),
        "$.{Exif}.UserComment"
    ) = "Screenshot"

如果您安装了datasette-cluster-map插件,这个查询将显示您最近1000张照片的地图

select
    *, 
    json_extract(
        bplist_to_json(value),
        "$.{GPS}.Latitude"
    ) as latitude,
    -json_extract(
        bplist_to_json(value),
        "$.{GPS}.Longitude"
    ) as longitude,
    json_extract(
        bplist_to_json(value),
        "$.{Exif}.DateTimeOriginal"
    ) as datetime
from
    RKMaster_dataNote
where
    latitude is not null
order by
    attachedToId desc

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

此版本没有提供源分布文件。请参阅生成分发存档的教程。

构建分布

datasette_bplist-0.1-py3-none-any.whl (7.6 kB 查看哈希值)

上传时间 Python 3

由以下机构支持