Merge pull request #2853 from nikeee/master

Add node-podcast
This commit is contained in:
Masahiro Wakame
2014-10-29 12:27:07 +09:00
3 changed files with 137 additions and 0 deletions
+1
View File
@@ -330,6 +330,7 @@ All definitions files include a header with the author and editors, so at some p
* [Pickadate.js](https://github.com/amsul/pickadate.js) (by [Adi Dahiya](https://github.com/adidahiya))
* [PixiJS](https://github.com/GoodBoyDigital/pixi.js) (by [Pedro Casaubon](https://github.com/xperiments))
* [Platform](https://github.com/bestiejs/platform.js) (by [Jake Hickman](https://github.com/JakeH))
* [podcast](http://github.com/maxnowack/node-podcast) (by [Niklas Mollenhauer](https://github.com/nikeee))
* [PouchDB](http://pouchdb.com) (by [Bill Sears](https://github.com/MrBigDog2U/))
* [PreloadJS](http://www.createjs.com/#!/PreloadJS) (by [Pedro Ferreira](https://bitbucket.org/drk4))
* [ProgressJs](http://usablica.github.io/progress.js/) (by [Shunsuke Ohtani](https://github.com/zaneli))
+56
View File
@@ -0,0 +1,56 @@
///<reference path="podcast.d.ts" />
import Podcast = require('podcast');
/* lets create an rss feed */
var feed = new Podcast({
title: 'title',
description: 'description',
feed_url: 'http://example.com/rss.xml',
site_url: 'http://example.com',
image_url: 'http://example.com/icon.png',
docs: 'http://example.com/rss/docs.html',
author: 'Dylan Greene',
managingEditor: 'Dylan Greene',
webMaster: 'Dylan Greene',
copyright: '2013 Dylan Greene',
language: 'en',
categories: ['Category 1','Category 2','Category 3'],
pubDate: new Date('May 20, 2012 04:00:00 GMT'),
ttl: 60,
itunesAuthor: 'Max Nowack',
itunesSubtitle: 'I am a sub title',
itunesSummary: 'I am a summary',
itunesOwner: { name: 'Max Nowack', email:'max@unsou.de' },
itunesExplicit: false,
itunesCategory: {
"name": "Entertainment",
"subcats": null
},
itunesImage: 'http://link.to/image.png'
});
/* loop over data and add to feed */
feed.item({
title: 'item title',
description: 'use this for the content. It can include html.',
url: 'http://example.com/article4?this&that', // link to the item
guid: '1123', // optional - defaults to url
categories: ['Category 1','Category 2','Category 3','Category 4'], // optional - array of item categories
author: 'Guest Author', // optional - defaults to feed author property
date: new Date('May 27, 2012'),
lat: 33.417974, //optional latitude field for GeoRSS
long: -111.933231, //optional longitude field for GeoRSS
enclosure : {url:'...', file:'path-to-file'}, // optional enclosure
itunesAuthor: 'Max Nowack',
itunesExplicit: false,
itunesSubtitle: 'I am a sub title',
itunesSummary: 'I am a summary',
itunesDuration: 12345,
itunesKeywords: ['javascript','podcast']
});
// cache the xml to send to clients
var xml = feed.xml();
console.log(xml);
+80
View File
@@ -0,0 +1,80 @@
// Type definitions for podcast v0.1.0
// Project: http://github.com/maxnowack/node-podcast
// Definitions by: Niklas Mollenhauer <https://github.com/nikeee>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
interface PodcastStatic
{
new(options: IFeedOptions): PodcastStatic;
item(options: IItemOptions): void;
xml(indent?: string): string;
}
interface IFeedOptions
{
title: string;
description?: string;
generator?: string;
feed_url: string;
site_url: string;
image_url?: string;
docs?: string;
author: string;
managingEditor?: string;
webMaster?: string;
copyright?: string;
language?: string;
categories?: string[];
pubDate?: Date;
ttl?: number;
itunesAuthor?: string;
itunesSubtitle?: string;
itunesSummary?: string;
itunesOwner?: IItunesOwner;
itunesExplicit?: boolean;
itunesCategory?: IItunesCategory;
itunesImage?: string;
}
interface IItunesOwner
{
name: string;
email: string;
}
interface IItunesCategory
{
name: string;
subcats: IItunesSubCategory[]
}
interface IItunesSubCategory
{
name: string;
subcat: string[] /* ? */
}
interface IItemOptions
{
title: string;
description: string;
url: string;
guid: string;
categories?: string[];
author?: string;
date: Date;
lat?: number;
long?: number;
itunesAuthor?: string;
itunesExplicit?: boolean;
itunesSubtitle?: string;
itunesSummary?: string;
itunesDuration?: number;
itunesKeywords?: string[];
}
declare var Podcast: PodcastStatic;
declare module "podcast"
{
export = Podcast;
}