summaryrefslogtreecommitdiff
path: root/public/js/lib/parser.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-08-05 12:53:38 -0400
committerJules Laplace <jules@okfoc.us>2015-08-05 12:53:38 -0400
commitb9aaeaf616ed0a46a81e313bede00f1598d245ca (patch)
tree0d2256c9332b6d0ef97bb56e1c771a976f3497db /public/js/lib/parser.js
parent21e31e46ff167ede7cb5ad4452cbd406236bc83d (diff)
parent3b7da491072e5c366738ff549e8958d97948076a (diff)
mergez
Diffstat (limited to 'public/js/lib/parser.js')
-rw-r--r--public/js/lib/parser.js286
1 files changed, 0 insertions, 286 deletions
diff --git a/public/js/lib/parser.js b/public/js/lib/parser.js
deleted file mode 100644
index 20c5306..0000000
--- a/public/js/lib/parser.js
+++ /dev/null
@@ -1,286 +0,0 @@
-var Parser = (function(){
- var Parser = {}
- Parser.integrations = [{
- type: 'image',
- regex: /\.(jpeg|jpg|gif|png|svg)(\?.*)?$/i,
- fetch: function(url, done) {
- var img = new Image ()
- img.onload = function(){
- if (!img) return
- var width = img.naturalWidth, height = img.naturalHeight
- img = null
- done({
- url: url,
- type: "image",
- token: "",
- thumbnail: "",
- title: "",
- width: width,
- height: height,
- })
- }
- img.src = url
- if (img.complete) {
- img.onload()
- }
- },
- tag: function (media) {
- return '<img src="' + media.url + '">';
- }
- }, {
- type: 'video',
- regex: /\.(mp4|webm)(\?.*)?$/i,
- fetch: function(url, done) {
- var video = document.createElement("video")
- video.addEventListener("loadedmetadata", function(){
- var width = video.videoWidth, height = video.videoHeight
- video = null
- done({
- url: url,
- type: "video",
- token: "",
- thumbnail: "",
- title: "",
- width: width,
- height: height,
- })
- })
- video.src = url
- video.load()
- },
- tag: function (media) {
- return '<video src="' + media.url + '">';
- }
- }, {
- type: 'youtube',
- regex: /(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i,
- fetch: function(url, done) {
- var id = (url.match(/v=([-_a-zA-Z0-9]{11})/i) || url.match(/youtu.be\/([-_a-zA-Z0-9]{11})/i) || url.match(/embed\/([-_a-zA-Z0-9]{11})/i))[1].split('&')[0];
- var thumb = "http://i.ytimg.com/vi/" + id + "/hqdefault.jpg"
- $.ajax({
- type: 'GET',
- url: 'https://www.googleapis.com/youtube/v3/videos',
- dataType: "jsonp",
- data: {
- id: id,
- key: "AIzaSyDYPKGD0-_VRBWpUYRmX8Qg6BtWmcPU_cM",
- part: "id,contentDetails,snippet,status",
- },
- success: function(result){
- var res = result.items[0]
- done({
- url: url,
- type: "youtube",
- token: id,
- thumbnail: thumb,
- title: res.snippet.title,
- width: 640,
- height: 360,
- })
- }
- })
- },
- tag: function (media) {
- // return '<img class="video" type="youtube" vid="'+media.token+'" src="'+media.thumbnail+'"><span class="playvid">&#9654;</span>';
- return '<div class="video" style="width: ' + media.width + 'px; height: ' + media.height + 'px; overflow: hidden; position: relative;"><iframe frameborder="0" scrolling="no" seamless="seamless" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen" id="okplayer" width="' + media.width + '" height="' + media.height + '" src="http://youtube.com/embed/' + media.token + '?showinfo=0" style="position: absolute; top: 0px; left: 0px; width: ' + media.width + 'px; height: ' + media.height + 'px;"></iframe></div>'
- }
- }, {
- type: 'vimeo',
- regex: /vimeo.com\/\d+$/i,
- fetch: function(url, done) {
- var id = url.match(/\d+$/i)[0];
- $.ajax({
- type: 'GET',
- url: 'http://vimeo.com/api/v2/video/' + id + '.json',
- success: function(result){
- if (result.length == 0) { return done(id, "", 640, 360) }
- var res = result[0]
- if (res.embed_privacy != "anywhere") {
- AlertModal.alert("Sorry, the author of this video has marked it private, preventing it from being embedded.", function(){})
- return
- }
- done({
- url: url,
- type: "vimeo",
- token: id,
- thumbnail: res.thumbnail_large,
- title: res.title,
- width: res.width,
- height: res.height,
- })
- }
- })
- },
- tag: function (media) {
- // return '<img class="video" type="vimeo" vid="'+media.token+'" src="'+media.thumbnail+'"><span class="playvid">&#9654;</span>';
- return '<div class="video" style="width: ' + media.width + 'px; height: ' + media.height + 'px; overflow: hidden; position: relative;"><iframe frameborder="0" scrolling="no" seamless="seamless" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen" id="okplayer" src="http://player.vimeo.com/video/' + media.token + '?api=1&title=0&byline=0&portrait=0&playbar=0&player_id=okplayer&loop=0&autoplay=0" width="' + media.width + '" height="' + media.height + '" style="position: absolute; top: 0px; left: 0px; width: ' + media.width + 'px; height: ' + media.height + 'px;"></iframe></div>'
- }
- },
- {
- type: 'soundcloud',
- regex: /soundcloud.com\/[-a-zA-Z0-9]+\/[-a-zA-Z0-9]+\/?$/i,
- fetch: function (url, done) {
- $.ajax({
- type: 'GET',
- url: 'http://api.soundcloud.com/resolve.json?url='
- + url
- + '&client_id='
- + '0673fbe6fc794a7750f680747e863b10',
- success: function(result) {
- // console.log(result)
- done({
- url: url,
- type: "soundcloud",
- token: result.id,
- thumbnail: result.artwork_url || result.user.avatar_url,
- title: result.user.username + " - " + result.title,
- width: 166,
- height: 166,
- })
- }
- });
- },
- tag: function (media) {
- return '<iframe width="166" height="166" scrolling="no" frameborder="no"' +
- 'src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/' + media.token +
- '&amp;color=ff6600&amp;auto_play=false&amp;show_artwork=true"></iframe>'
- }
- },
- /*
- {
- type: 'link',
- regex: /^http.+/i,
- fetch: function(url, done) {
- done({
- url: url,
- type: "link",
- token: "",
- thumbnail: "",
- title: "",
- width: 100,
- height: 100,
- })
- },
- tag: function (media) {
- return '<a href="' + media.url + '" target="_blank">' + media.url + '</a>'
- }
- }
- */
- ]
-
- Parser.tumblr = function(url, cb){
- var domain = url.replace(/^https?:\/\//,"").split("/")[0]
- if (domain.indexOf(".") == -1) {
- domain += ".tumblr.com"
- }
- $.ajax({
- type: 'GET',
- url: "http://" + domain + "/api/read",
- dataType: "jsonp",
- data: {
- format: "json",
- },
- success: function(data){
- var media_list = []
- var blog = data.tumblelog
-
- data.posts.forEach(parse)
- cb(media_list)
-
- function parse(post){
- var media, caption, url
- switch (post.type) {
- case 'photo':
- caption = stripHTML(post['photo-caption'])
- if (post.photos.length) {
- post.photos.forEach(function(photo){
- var media = {
- url: photo['photo-url-1280'],
- type: "image",
- token: "",
- thumbnail: photo['photo-url-500'],
- description: caption,
- width: parseInt(photo.width),
- height: parseInt(photo.height),
- }
- media_list.push(media)
- })
- }
- else {
- media = {
- url: post['photo-url-1280'],
- type: "image",
- token: "",
- thumbnail: post['photo-url-500'],
- description: caption,
- width: parseInt(post.width),
- height: parseInt(post.height),
- }
- media_list.push(media)
- }
- break
- case 'video':
- url = post['video-source']
- if (url.indexOf("http") !== 0) { break }
- if (Parser.lookup.youtube.regex.test(url)) {
- var id = (url.match(/v=([-_a-zA-Z0-9]{11})/i) || url.match(/youtu.be\/([-_a-zA-Z0-9]{11})/i) || url.match(/embed\/([-_a-zA-Z0-9]{11})/i))[1].split('&')[0];
- var thumb = "http://i.ytimg.com/vi/" + id + "/hqdefault.jpg"
- media = {
- url: post['video-source'],
- type: "youtube",
- token: id,
- thumbnail: thumb,
- title: stripHTML(post['video-caption']),
- width: 640,
- height: 360,
- }
- media_list.push(media)
- }
- break
- }
- }
-// console.log(post)
- }
- })
- }
-
- Parser.parse = function (url, cb) {
- var matched = Parser.integrations.some(function(integration){
- if (integration.regex.test(url)) {
- integration.fetch(url, function(res){
- cb(res)
- })
- return true
- }
- return false
- })
- if (! matched) {
- cb(null)
- }
- }
-
- Parser.tag = function (media){
- if (media.type in Parser.lookup) {
- return Parser.lookup[media.type].tag(media)
- }
- return ""
- }
-
- Parser.loadImage = function(url, cb, error){
- if (Parser.lookup.image.regex.test(url)) {
- Parser.lookup.image.fetch(url, function(media){
- cb(media)
- })
- }
- else error && error()
- }
-
- Parser.thumbnail = function (media) {
- return '<img src="' + (media.thumbnail || media.url) + '" class="thumb">';
- }
-
- Parser.lookup = _.indexBy(Parser.integrations, 'type');
-
- return Parser
-})()
-