Skip to content

Instantly share code, notes, and snippets.

@alvaromuir
Last active December 11, 2015 22:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alvaromuir/4669703 to your computer and use it in GitHub Desktop.
Save alvaromuir/4669703 to your computer and use it in GitHub Desktop.
Grabs large thumbnail from current YouTube or Vimeo links
// helper function
function parseVideoId(link) {
// parses youtube or vimeo links.. but not vimeo shar
var urlComesAfter = {
'\\.be/': function() { return link.split('.be/')[1].replace('/','')},
'v=': function() { return link.split('v=')[1].replace('/','')},
'vimeo.com/': function() {
if (isNaN(parseInt(link.split('/').slice(-1)[0]))) {
var rawLink = link.split('/');
return [rawLink[3],rawLink[4]];
} else {
return link.split('vimeo.com/')[1].replace('/', '');
}
}
};
for (var k in urlComesAfter) {
if ((new RegExp(k).test(link))) {
return urlComesAfter[k]();
}
}
}
// Here is the real function
function getVideoThumb(link, cb) {
var id = '';
var imgUrl = {
'youtube' : function() {
id = parseVideoId(link);
if (id) {
cb('http://img.youtube.com/vi/'+id+'/0.jpg');
}
},
'youtu.be': function() {
id = parseVideoId(link);
if (id) {
cb('http://img.youtube.com/vi/'+id+'/0.jpg');
}
},
'vimeo.com': function() {
id = parseVideoId(link);
function getData(reqUrl, cb){
$.ajax({
url: reqUrl,
crossDomain: true,
dataType: 'jsonp',
success: function(data){
cb(data);
},
error: function(data){
cb('error');
}
});
};
if (id) {
var usrUrl = 'http://vimeo.com/api/v2/_id0_/videos.json';
var vidUrl = 'http://vimeo.com/api/v2/video/_id_.json';
var qryStr = '';
if (typeof id === "object") {
var reqUrl = usrUrl.replace('_id0_', id[0]);
qryStr = id[1];
} else {
var reqUrl = vidUrl.replace('_id_', id);
}
getData(reqUrl, function(res) {
// there's gots to be a better way to knock this out?
// todo: fix it
if (res.length > 1) {
for (var x in res) {
var title = res[x].title.replace(/\s+/g, '').replace(/\//g,'').toLowerCase();
if (new RegExp(qryStr).test(title)) {
var reqUrl = vidUrl.replace('_id_', res[x].id);
getData(reqUrl, function() {
cb(res[0].thumbnail_large);
return;
});
return;
}
}
} else {
cb(res[0].thumbnail_large);
}
});
}
}
};
for (var k in imgUrl) {
if ((new RegExp(k).test(link))) {
return imgUrl[k]();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment