-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 0cb1af2
Showing
47 changed files
with
3,053 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
node_modules | ||
npm-debug.log | ||
.DS_Store | ||
/json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#!/usr/bin/env node | ||
|
||
"use strict"; | ||
|
||
require("../build/server/cli"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.Item = exports.Playlist = exports.Storage = exports.Server = exports.Station = exports.Stream = undefined; | ||
|
||
var _stream = require("./stream"); | ||
|
||
var _stream2 = _interopRequireDefault(_stream); | ||
|
||
var _station = require("./station"); | ||
|
||
var _station2 = _interopRequireDefault(_station); | ||
|
||
var _server = require("./server"); | ||
|
||
var _server2 = _interopRequireDefault(_server); | ||
|
||
var _storage = require("./storage"); | ||
|
||
var _storage2 = _interopRequireDefault(_storage); | ||
|
||
var _playlist = require("./playlist"); | ||
|
||
var _playlist2 = _interopRequireDefault(_playlist); | ||
|
||
var _item = require("./item"); | ||
|
||
var _item2 = _interopRequireDefault(_item); | ||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|
||
exports.Stream = _stream2.default; | ||
exports.Station = _station2.default; | ||
exports.Server = _server2.default; | ||
exports.Storage = _storage2.default; | ||
exports.Playlist = _playlist2.default; | ||
exports.Item = _item2.default; | ||
exports.default = _server2.default; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
|
||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
|
||
var _shortid = require("shortid"); | ||
|
||
var _shortid2 = _interopRequireDefault(_shortid); | ||
|
||
var _file = require("./types/file"); | ||
|
||
var _file2 = _interopRequireDefault(_file); | ||
|
||
var _stream = require("./types/stream"); | ||
|
||
var _stream2 = _interopRequireDefault(_stream); | ||
|
||
var _youtube = require("./types/youtube"); | ||
|
||
var _youtube2 = _interopRequireDefault(_youtube); | ||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|
||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
|
||
var typePluginMap = {}; | ||
|
||
var Item = function () { | ||
function Item(options) { | ||
_classCallCheck(this, Item); | ||
|
||
this._id = _shortid2.default.generate(); | ||
this.type = options.type; | ||
this.options = options.options; | ||
this.typePlugin = Item.getType(this.type); | ||
} | ||
|
||
_createClass(Item, [{ | ||
key: "load", | ||
value: function load(done) { | ||
var _this = this; | ||
|
||
this.typePlugin.getStream(this, function (err, stream) { | ||
if (err) return done(err); | ||
stream.once("error", function () {}); | ||
|
||
_this.typePlugin.getMetadata(_this, function (err, metadata) { | ||
if (err) { | ||
stream.destroy(); | ||
return done(err); | ||
} | ||
|
||
done(null, stream, metadata, { | ||
streamNeedsPostProcessing: _this.typePlugin.streamNeedsPostProcessing | ||
}); | ||
}); | ||
}); | ||
} | ||
}, { | ||
key: "toJSON", | ||
value: function toJSON() { | ||
return { | ||
_id: this._id, | ||
type: this.type, | ||
options: this.options | ||
}; | ||
} | ||
}], [{ | ||
key: "registerType", | ||
value: function registerType(type, typePlugin) { | ||
typePluginMap[type] = typePlugin; | ||
} | ||
}, { | ||
key: "getType", | ||
value: function getType(type) { | ||
var typePlugin = typePluginMap[type]; | ||
if (!typePlugin) throw new Error("Unknown item type"); | ||
return typePlugin; | ||
} | ||
}]); | ||
|
||
return Item; | ||
}(); | ||
|
||
exports.default = Item; | ||
|
||
|
||
Item.registerType("File", new _file2.default()); | ||
Item.registerType("Stream", new _stream2.default()); | ||
Item.registerType("YouTube", new _youtube2.default()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
|
||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
|
||
var _fs = require("fs"); | ||
|
||
var _fs2 = _interopRequireDefault(_fs); | ||
|
||
var _path = require("path"); | ||
|
||
var _path2 = _interopRequireDefault(_path); | ||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|
||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
|
||
var FileType = function () { | ||
function FileType() { | ||
_classCallCheck(this, FileType); | ||
|
||
this.streamNeedsPostProcessing = true; | ||
} | ||
|
||
_createClass(FileType, [{ | ||
key: "getStream", | ||
value: function getStream(item, done) { | ||
done(null, _fs2.default.createReadStream(item.options.filename)); | ||
} | ||
}, { | ||
key: "getMetadata", | ||
value: function getMetadata(item, done) { | ||
done(null, { | ||
StreamTitle: item.options.title || _path2.default.basename(item.options.filename, _path2.default.extname(item.options.filename)) | ||
}); | ||
} | ||
}]); | ||
|
||
return FileType; | ||
}(); | ||
|
||
exports.default = FileType; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
|
||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
|
||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
|
||
var StreamType = function () { | ||
function StreamType() { | ||
_classCallCheck(this, StreamType); | ||
|
||
this.streamNeedsPostProcessing = true; | ||
} | ||
|
||
_createClass(StreamType, [{ | ||
key: "getStream", | ||
value: function getStream(item, done) { | ||
done(null, item.options.stream); | ||
} | ||
}, { | ||
key: "getMetadata", | ||
value: function getMetadata(item, done) { | ||
done(null, { | ||
StreamTitle: item.options.title || "" | ||
}); | ||
} | ||
}]); | ||
|
||
return StreamType; | ||
}(); | ||
|
||
exports.default = StreamType; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
|
||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
|
||
var _ytdlCore = require("ytdl-core"); | ||
|
||
var _ytdlCore2 = _interopRequireDefault(_ytdlCore); | ||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|
||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
|
||
var YouTubeType = function () { | ||
function YouTubeType() { | ||
_classCallCheck(this, YouTubeType); | ||
|
||
this.streamNeedsPostProcessing = true; | ||
} | ||
|
||
_createClass(YouTubeType, [{ | ||
key: "getStream", | ||
value: function getStream(item, done) { | ||
done(null, (0, _ytdlCore2.default)(item.options.url)); | ||
} | ||
}, { | ||
key: "getMetadata", | ||
value: function getMetadata(item, done) { | ||
_ytdlCore2.default.getInfo(item.options.url, function (err, info) { | ||
if (err) return done(err); | ||
done(null, { | ||
StreamTitle: info.author + " - " + info.title | ||
}); | ||
}); | ||
} | ||
}]); | ||
|
||
return YouTubeType; | ||
}(); | ||
|
||
exports.default = YouTubeType; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
|
||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
|
||
var _events = require("events"); | ||
|
||
var _shortid = require("shortid"); | ||
|
||
var _shortid2 = _interopRequireDefault(_shortid); | ||
|
||
var _item = require("../item"); | ||
|
||
var _item2 = _interopRequireDefault(_item); | ||
|
||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|
||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
|
||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
|
||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } | ||
|
||
var Playlist = function (_EventEmitter) { | ||
_inherits(Playlist, _EventEmitter); | ||
|
||
function Playlist(options) { | ||
_classCallCheck(this, Playlist); | ||
|
||
var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Playlist).call(this)); | ||
|
||
_this._id = options._id || _shortid2.default.generate(); | ||
_this.items = options.items || []; | ||
_this.items = _this.items.map(function (options) { | ||
return new _item2.default(options); | ||
}); | ||
_this.index = typeof options.index === "number" ? options.index : -1; | ||
return _this; | ||
} | ||
|
||
_createClass(Playlist, [{ | ||
key: "addItem", | ||
value: function addItem(options) { | ||
var item = new _item2.default(options); | ||
this.items.push(item); | ||
return item; | ||
} | ||
}, { | ||
key: "playNext", | ||
value: function playNext() { | ||
return this.next("play"); | ||
} | ||
}, { | ||
key: "replaceNext", | ||
value: function replaceNext() { | ||
return this.next("replace"); | ||
} | ||
}, { | ||
key: "next", | ||
value: function next(eventName) { | ||
var _this2 = this; | ||
|
||
this.setNextIndex(); | ||
var item = this.items[this.index]; | ||
if (!item) return false; | ||
item.load(function (err, stream, metadata, options) { | ||
_this2.emit(eventName, err, stream, metadata, item, options); | ||
}); | ||
return true; | ||
} | ||
}, { | ||
key: "setNextIndex", | ||
value: function setNextIndex() { | ||
if (this.index + 1 >= this.items.length) { | ||
this.index = 0; | ||
return this.index; | ||
} else { | ||
return ++this.index; | ||
} | ||
} | ||
}, { | ||
key: "toJSON", | ||
value: function toJSON() { | ||
return { | ||
_id: this._id, | ||
items: this.items | ||
}; | ||
} | ||
}]); | ||
|
||
return Playlist; | ||
}(_events.EventEmitter); | ||
|
||
exports.default = Playlist; |
Oops, something went wrong.