Sharing content between anyMeta sites

We are finishing the latest version of our sharing system. A good opportunity to write about the system, what it can do for you, how it works and when to use it. In a later article I will dig deeper and explain the more technical details, enabling you to make full use of the module system.

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.

technical php code protocol opensource gpl oauth implementation ruby openci

OAuth Server And Consumer in PHP

Here is the full implementation of OAuth for anyMeta. For now we...

Atom Syndication Format Spec

This document specifies an Internet standards track protocol for the Internet community, and requ...

LinkSleeve : SLV : Spam Link Verification

Spam Link Verification system: an XML-RPC implementation to filter user input with spam links. ...

Facebook Developers | Thrift

Thrift is a software framework for scalable cross-language services development. It combines a po...

atom protocol web xml technical syndication content standard anymeta develop

FeedSync

The creation of FeedSync was catalyzed by the observation that RSS and Atom feeds were exploding ...

OAuth Server And Consumer in PHP

Here is the full implementation of OAuth for anyMeta. For now we...

XML.com: Catching Up with the Atom Publishing Protocol

Joe Gregorio's latest Restful Web column brings us up to date with Atom Publishing Protocol. Fast...

Atom Syndication Format Spec

This document specifies an Internet standards track protocol for the Internet community, and requ...

anymeta googleanalytics log code rating bugfixes release sharing rss modules

anyMeta 3.2.1 released

We are finalising the anyMeta 3.2.1 release. Yes, there was an intermediate 3.2.0 release. The 3...

OAuth Server And Consumer in PHP

Here is the full implementation of OAuth for anyMeta. For now we...

download quicksilver application launcher freeware macosx apple interface software scripting

OAuth Server And Consumer in PHP

Here is the full implementation of OAuth for anyMeta. For now we...

quicksilver: access granted

A unified, extensible interface for working with applications, contacts, music, and other data....

share shows slide powerpoint online slideshare presentations weblog movabletype api

SlideShare (share powerpoint presentations online)

SlideShare is the best way to share your presentations with the world. Let your ideas reach a bro...

PROGRAMMATIC INTERFACES

Movable Type features a full implementation of the Blogger XML-RPC API (where applicable). The on...

MarcWorrell.com/ created on 2006-06-21 10:56:35/ modified on 2007-08-31 16:49:05/ mail me at