Difference between revisions of "Syndication"
(human-visible <copyright> element) |
(→Licensed Content Discovery) |
||
| Line 21: | Line 21: | ||
== Licensed Content Discovery == | == Licensed Content Discovery == | ||
| − | Not all feeds include license metadata. | + | Not all feeds include license metadata. In psuedocode, here are heuristics for discovering licensed content via feeds, perhaps useful in particular for aggregators. |
| − | + | <pre> | |
| − | + | function feedItemLicense(feedItem) { | |
| − | + | # license found for feed item URL (e.g., rel="license")? | |
| − | + | if (feedItem.license() != null) { | |
| − | + | return feedItem.license(); | |
| − | + | } | |
| − | + | # license found at feed top level? | |
| − | + | if (feedItem.feed().license() != null) { | |
| − | + | return feedItem.feed().license(); | |
| + | } | ||
| + | # no explicit license in feed, fetch feed item URL | ||
| + | feedItemContent = httpGet(feedItem.itemURL()); | ||
| + | if (parseLicenseFromHTML(feedItemContent) != null) { | ||
| + | return parseLicenseFromHTML(feedItemContent); | ||
| + | } | ||
| + | # no license found in content at feed item URL, fetch | ||
| + | # item referred to in enclosure if there is one, | ||
| + | # look for embedded metadata | ||
| + | if (feedItem.enclosure() != null) { | ||
| + | enclosureContent = httpGet(feedItem.enclosure()); | ||
| + | return parseLicenseFromMedia(enclosureContent); | ||
| + | } | ||
| + | </pre> | ||
| − | This is obviously just a sketch. Aggregators may wish to use different heuristics for different feeds. See [[Content Curators]] for some sites with feeds of CC licensed content. | + | This is obviously just a sketch. Aggregators may wish to use different heuristics for different feeds. Different aggregators will want to be more or less aggressive -- e.g., many will not want to go through the step of downloading and attempting to parse enclosure content. See [[Content Curators]] for some sites with feeds of CC licensed content. |
[[Category:Developer]] | [[Category:Developer]] | ||
[[Category:Metadata]] | [[Category:Metadata]] | ||
{{stub}} | {{stub}} | ||
Revision as of 21:48, 16 May 2006
License statements may be included in various synication formats, generally at the feed and item level, where the latter overrides the former.
RSS 1.0
http://web.resource.org/rss/1.0/modules/cc/
RSS 2.0
http://backend.userland.com/creativeCommonsRssModule
Atom 1.0
http://ietfreport.isoc.org/idref/draft-snell-atompub-feed-license/
Human-visible notice
Some podcast players display the contents of a copyright element found in a feed. Example usage, not really intended to be machine-parsable, customize for communication with human readers, but do include URL of the relevant CC license and most importantly URL where users can get back to your site:
- <copyright>All the songs in this podcast, and the podcast itself, are licensed to the public under http://creativecommons.org/licenses/by-nc-sa/1.0/ verify at http://magnatune.com/info/openmusic</copyright>
Licensed Content Discovery
Not all feeds include license metadata. In psuedocode, here are heuristics for discovering licensed content via feeds, perhaps useful in particular for aggregators.
function feedItemLicense(feedItem) {
# license found for feed item URL (e.g., rel="license")?
if (feedItem.license() != null) {
return feedItem.license();
}
# license found at feed top level?
if (feedItem.feed().license() != null) {
return feedItem.feed().license();
}
# no explicit license in feed, fetch feed item URL
feedItemContent = httpGet(feedItem.itemURL());
if (parseLicenseFromHTML(feedItemContent) != null) {
return parseLicenseFromHTML(feedItemContent);
}
# no license found in content at feed item URL, fetch
# item referred to in enclosure if there is one,
# look for embedded metadata
if (feedItem.enclosure() != null) {
enclosureContent = httpGet(feedItem.enclosure());
return parseLicenseFromMedia(enclosureContent);
}
This is obviously just a sketch. Aggregators may wish to use different heuristics for different feeds. Different aggregators will want to be more or less aggressive -- e.g., many will not want to go through the step of downloading and attempting to parse enclosure content. See Content Curators for some sites with feeds of CC licensed content.