Sharing

RSS is the basis

RSS is the basis of our content sharing. With the NewsAggregator you can define RSS feeds to be read and have the items in the feed imported in the database. The import can be either automatic or manually by selecting interesting items from the list of available items.

The NewsAggregator can periodically re-read the RSS feed and check for new items in the feed. When the feed is set to automatic import then all items in the feed automatically appear in the database, and with that on your site.

AnyMeta can create a RSS feed of any stored search question (listpublish or listedit) and set of things, so we can use this mechanism to syndicate content from one site to another site. And, as the system is based on RSS feeds, we can import information from any other site as well.

Separating imported content from your content

It is handy to be able to keep imported content separate from your own content. In this way it is always possible to delete imported content and keep your own content. For this we introduce the concept of a source. Every feed is a source, and the locally created content is also attributed to a source, the local source. It is possible to delete a source, whenever you do that then all content of that source and its feed are deleted as well. A quick way to clean up the mess created by an unwanted feed.

Recognising special feeds

When a feed is imported, all modules that are interested can have a go at trying to import any item of the feed. For this we defined the interface iImport.

This recognition can be done on a feed basis or on a item by item basis. For example, a Flickr module could recognise Flickr items in a feed and use the Flickr API to fetch the original image and import it in your anyMeta system. In this way you can keep your anyMeta system in sync with your Flickr photo stream.

The primary usage for the feed/ item recognition is to share content between to anyMeta systems. This is handled by the Share module, which implements the iImport interface to recognise anyMeta RSS feeds.

Importing content with the Share module

The Share module can recognise an anyMeta RSS feed. For every to be imported item in the RSS feed it will:

1. Fetch the uuid of the item
2. Check if the item has been imported before
3. When it has been imported before, check the modification date of the item against the previously imported version
4. When the item has been modified or is new the item will be imported.

A difference in importing of an anyMeta item and a normal RSS feed item is that the Sharing module will use XML-RPC to directly fetch the newest and complete version of the item from the other system.

When the item is imported, then the Share module will optionally try to fetch the things that are refered to by the imported object. Examples are the author and images of an article.

Keywords, tags, types and predicates are special

When the Share module imports a thing then it has special handling for keywords, tags, types and predicates.

The reason is that those are metadata and should be handled by the local system. You don't want to have any duplicates of the same types or keywords in your system!

The Share module will try to match these kinds with the locally available data, using the symbolic name and titles of the things in your database. When found it will perform the mapping, when not found then it will dismiss the data and not add it to the copy in your database. For example: a type can be dropped from an imported thing, because you don't have that type in your system.

Tags are always added, making new local tags for missing ones.


back | top