dennogumi/content/post/2012-02-12-some-more-nepomuk-please.markdown
Luca Beltrame 64b24842b8
All checks were successful
continuous-integration/drone/push Build is passing
Update all posts to not show the header text
2021-01-13 00:05:30 +01:00

2.4 KiB

author categories comments date slug tags title omit_header_text disable_share wordpress_id
einar
KDE
Linux
true 2012-02-12T19:57:06Z some-more-nepomuk-please
danbooru
KDE
python
Some more Nepomuk, please true true 949

Recently we've seen several blog posts on Planet KDE related to Nepomuk. Reading those I thought that I could add some (little) semantic features to [Danbooru Client]({{ site.url }}/projects/danbooru-client).

Danbooru Client already makes use of Nepomuk: if enabled, tags extracted from Danbooru items are added as Nepomuk tags. But since at least some Danbooru boards are specialized in certain types of images (e.g., wallpapers only, for examples) I found it would be nice to have Nepomuk show me only the images that come from a specific Danbooru board.

After a quick talk on IRC, the task proved to be easier than expected. What I did was to create a new Nepomuk.Resource using the image board URL. Then I set it type as NFO::Website and added it as a related property to the resource pointing to the file. In code, this translates to (excerpt from the main file):

{{< highlight python >}} resource = Nepomuk.File(KUrl(absolute_path))

for tag in tags:

    if blacklist is not None and tag in blacklist:
        continue

    nepomuk_tag = Nepomuk.Tag(tag)
    nepomuk_tag.setLabel(tag)
    resource.addTag(nepomuk_tag)
    
if board_url is not None:
    website_resource = Nepomuk.Resource(board_url)
    website_resource.addType(Nepomuk.Vocabulary.NFO.Website())
    website_resource.setLabel(board_url.prettyUrl())
    resource.setDescription(
                i18n("Retrieved from %1").arg(board_url.prettyUrl()))
    resource.addIsRelated(website_resource)

{{< / highlight >}}

Lo and behold, this is what happens after downloading one such image from Danbooru Client, in Dolphin (notice the "is related to"):

![]({{ site.url }}/images/2012/02/danbooru_semantic_add.png)

Clicking on the link will open in Dolphin all items related to the board in question. Neat, isn't it? Of course, I'm very willing to add other features like that if there's interest. Also, critiques on the approach are most welcome!