// ========================================================================================
// SERVER
// ========================================================================================
var require = __meteor_bootstrap__.require
var dirname = __meteor_bootstrap__.__dirname;
// On server startup, create some players if the database is empty.
Meteor.startup(function () {
var fs = require("fs")
var path = require("path")
var xmlFile = path.resolve(dirname, "iTunes Library.xml")
// Remove all previous data
Songs.remove({})
fs.readFile(xmlFile, Meteor.bindEnvironment(function (er, d) {
var sax = require("sax")
var xmlstr = d.toString("utf8")
var parser = sax.parser(true)
var songs = [];
var song = null
var currentTag = null
console.log("Reading XML file.");
parser.onclosetag = function (tagName) {
if (tagName === "dict") {
Songs.insert(song)
console.log("Inserting song.");
currentTag = song = null
return
}
if (currentTag && currentTag.parent) {
var p = currentTag.parent
delete currentTag.parent
currentTag = p
}
}
parser.onopentag = function (tag) {
if (tag.name !== "dict" && !song) return
if (tag.name === "dict") {
song = tag
}
tag.parent = currentTag
tag.children = []
tag.parent && tag.parent.children.push(tag)
currentTag = tag
}
parser.ontext = function (text) {
if (currentTag) currentTag.children.push(text)
}
parser.onend = function () {
console.log("Done parsing!");
}
parser.write(xmlstr).end()
}, logException))
// Songs.remove({})
//
// if (Songs.find().count() === 0) {
// var songs = [{
// name:"Holiday",
// artist: "Madonna",
// price: 500,
// genres: ["pop"],
// previewURL: "http://www.youtube.com/watch?v=0X7RyGBq2E8"
// },
// {
// name:"Take Five",
// artist: "Dave Bruebek",
// price: 500,
// genres: ["jazz", "instrumental"],
// previewURL: "http://www.youtube.com/watch?v=nzpnWuk3RjU"
// },
// {
// name:"Take a Minute",
// artist: "K'naan",
// price: 500,
// genres: ["hip hop"],
// previewURL: "http://www.youtube.com/watch?v=APw9ES0JpZo"
// },
// {
// name:"Video Games",
// artist: "Lana del Ray",
// price: 500,
// genres: ["pop"],
// previewURL: "http://www.youtube.com/watch?v=cE6wxDqdOV0"
// },
// {
// name:"Harvest Moon",
// artist: "Neil Young",
// price: 500,
// genres: ["folk"],
// previewURL: "http://www.youtube.com/watch?v=qVi0UvFu8Yo"
// },
// {
// name:"This is the way",
// artist: "Devandra Banhardt",
// price: 500,
// genres: ["folk"],
// previewURL: "http://www.youtube.com/watch?v=w74UVnCZ_QA"
// },
// {
// name:"Symphony No. 32 in G major",
// artist: "Wolfgang Amadeus Mozart",
// price: 500,
// genres: ["classical"],
// previewURL: "http://www.youtube.com/watch?v=W1bR6UJlThQ"
// },
// {
// name:"Madagascar",
// artist: "Art of Trance",
// price: 500,
// genres: ["electronic", "trance"],
// previewURL: "http://www.youtube.com/watch?v=bXFwOjm0_MU"
// },
// {
// name:"I Shall Be Released",
// artist: "Sting",
// price: 500,
// genres: ["pop", "ska"],
// previewURL: "http://www.youtube.com/watch?v=z3MDO3xS584"
// },
// {
// name:"At My Mother's",
// artist: "Warsaw Village Band",
// price: 500,
// genres: ["world","folk"],
// previewURL: "http://www.youtube.com/watch?v=5kc0re5Hcyc"
// },
// {
// name:"Had Me a Girl",
// artist: "Tom Waits",
// price: 500,
// genres: ["blues","folk"],
// previewURL: "http://www.youtube.com/watch?v=b2eGoCcEiIA"
// },
// {
// name:"Alive",
// artist: "Daft Punk",
// price: 500,
// genres: ["electronic","house"],
// previewURL: "http://www.youtube.com/watch?v=Rzt3BCpFj48"
// },
// {
// name:"Goldberg Variations",
// artist: "JS Bach",
// price: 500,
// genres: ["classical"],
// previewURL: "http://www.youtube.com/watch?v=g7LWANJFHEs"
// },
// {
// name:"I Shall Be Released",
// artist: "Bob Dylan",
// price: 500,
// genres: ["folk","rock"],
// previewURL: "http://www.youtube.com/watch?v=nAlMdhZRVXc"
// },
// {
// name:"I Shall Be Released",
// artist: "Nina Simone",
// price: 500,
// genres: ["blues","gospel"],
// previewURL: "http://www.youtube.com/watch?v=XyCn8IC5RpE"
// },
// {
// name:"Helpess",
// artist: "Neil Young",
// price: 500,
// genres: ["folk"],
// previewURL: "http://www.youtube.com/watch?v=7JTy-GCfmvw"
// },
// {
// name:"Hostile Territory",
// artist: "AnJ",
// price: 500,
// genres: ["Soundtrack"],
// previewURL: "http://media.songlily.com/AnJ/Unknown%20Album/Hostile%20Territory.mp3"
// },
// {
// name:"Agent vs Agent",
// artist: "AnJ",
// price: 500,
// genres: ["Soundtrack"],
// previewURL: "http://media.songlily.com/AnJ/Unknown%20Album/Agent%20vs%20Agent.mp3"
// },
// {
// name:"Honey ",
// artist: "AnJ",
// price: 500,
// genres: ["Soundtrack"],
// previewURL: "http://media.songlily.com/AnJ/Unknown%20Album/Agent%20vs%20Agent.mp3"
// },
//
// ]
// for (var i = 0; i < songs.length; i++)
// Songs.insert(songs[i])
// }
setupAppInfo()
})
function logException(e) {
console.log("Exception: " + e);
}
function setupAppInfo() {
Application.remove({})
var sys = require('util')
var exec = require('child_process').exec
exec("git describe --abbrev=0 --tags", Meteor.bindEnvironment(function(error, stdout, stderr) {
var version = stdout
version = version.trim()
version = version.replace(/^v/, "")
Application.insert({version: version})
}, logException))
}
String.prototype.trim = function() {
return this.replace(/^(\s*)((\S+\s*?)*)(\s*)$/,"$2")
}