Some more Nepomuk, please
By einar
- CommentsRecently 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):
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)
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!