}, function(notFound, pleerData) {
     if (notFound) {
         ytSearch(notFound.songTitle, config.youtube, function(err, results) {
             if (err || results.length === 0) {
                 console.log('Song not found on YouTube either:'.yellow, err);
             } else if (results.length > 0) {
                 dl.getMP3({
                     videoId: results[0].id,
                     name: notFound.filename
                 }, function(err, res) {
                     if (err) {
                         throw err;
                     } else {
                         console.log('YouTube: ' + results[0].title
                           + ' was downloaded: ' + res.file);
                         updatePlaylistDataAfterDownload(notFound.spotifyId);
                     }
                 });
             }
         });
     } else {
         downloadFromPleer(pleerData, function(err, pleerData) {
             if (err) {
                 console.log('Error on downloading from Pleer', err);
             }
             console.log('Downloaded from Pleer:'.magenta, pleerData.filename);
             updatePlaylistDataAfterDownload(pleerData.spotifyId);
         });
     }
 });
Example #2
0
 'url:youtube.com': function (bot, url, nick, to) {
   var query = url.query
   if (typeof query === 'string') {
     // docs say it could already be an object
     var params = url.query.split('&')
     query = {}
     // this is dumb:
     for (var i = 0; i < params.length; i++) {
       var curr = params[i].split('=')
       curr.push(null) // to prevent ?foo breaking things
       query[curr[0]] = curr[1]
     }
   }
   if (query.v) {
     // TODO: remove this code duplication
     var opts = bot.config.get('youtube') || {}
     opts.maxResults = 1
     opts.type = 'video,channel'
     // this is particularly dumb:
     yt(query.v, opts, function (err, results) {
       if (err) {
         console.log('YouTube error', err, err.stack)
         return
       }
       if (results.length !== 0) {
         console.log(results[0])
         bot.say(to, results[0].title)
       }
     })
   }
 }
Example #3
0
sources.youtube = function (terms, done) {
    youtube(terms.artist + ' ' + terms.title, {
        maxResults: 1,
        startIndex: 1
    }, function (err, video) {
        if (err) {
            return done(err);
        }

        try {
            video = video[0].url;
        } catch (e) {
            return done(new Error('No song found.'));
        }

        video = ytdl(video, {
            filter: function (format) {
                return format.container === 'mp4';
            }
        });

        video = ffmpeg(video).format('mp3').pipe();

        done(null, video);
    });
};
Example #4
0
router.get('/search', function(req, res) {
    var query = req.query.q;
    yt(query + " review", {maxResults:10,startIndex:1}, function(err, results){
        if(err){
            res.send("Couldn't execute query:" + err).end();
        }
        res.json(results);
    });
});
Example #5
0
File: api.js Project: dwjoss/6.170
router.post('/search', function(req, res) {
	var search = require('youtube-search');
	var opts = {
	  maxResults: 10,
	  startIndex: 1
	};
	search(req.body.query, opts, function(err, results) {
	  if(err) return res.status(500).json({message:'Unable to fetch results from YouTube.'});
	  res.json({"search-results":results});
	});
});
Example #6
0
app.post('/searchVideoId', jsonParser, function(req, res) {
  var opts = {
    maxResults: 1,
    textFormat: 'plainText',
    key: key
  };

  search(req.body.dataId, opts, function(err, results) {
    if(err) res.send(err);
    res.send(results);
  });
});
Example #7
0
app.post('/search', jsonParser, function(req, res) {
  var opts = {
    maxResults: 12,
    regionID: 'US',
    type: 'video',
    textFormat: 'plainText',
    key: key,
  };

  search(req.body.term, opts, function(err, results) {
    if(err) res.send(err);
    res.send(results);
  });
});
Example #8
0
 command: function (bot, msg) {
   var opts = bot.config.get('youtube') || {}
   opts.maxResults = 1
   opts.type = 'video,channel'
   yt(msg.body, opts, function (err, results) {
     if (err) {
       bot.say(msg.to, msg.nick + ': ' + err)
     } else if (results.length < 1) {
       bot.say(msg.to, msg.nick + ': no results found')
     } else {
       var result = results[0]
       bot.say(msg.to, msg.nick + ': ' + result.link + ' ' + result.title)
     }
   })
 }
Example #9
0
var search = function(val) {
    ytSearch(val, { maxResults: 10 }, function(err, results) {
        if(err) return console.error(err);

        list.clear();

        results.forEach(function(result) {
            list.addItem({
                text: result.title,
                url: result.url,
                thumbnail: result.thumbnails.shift().url
            });
        });
    });
}
Example #10
0
File: api.js Project: hackur/toby
  router.post("/videos/search", (req, res, next) => {
    let searchTerm = req.body.searchTerm;

    if (searchTerm.startsWith("/yt")) {
      searchTerm = searchTerm.replace("/yt", "");

      youtubeSearch(searchTerm, youtubeSearchOpts, function(err, results) {
        if (err) return console.log(err);

        db.getVideosWhereTitleLikeFromDB(searchTerm, function(localData) {
          var finalResults = [];

          //console.log(localData);

          _.forEach(results, function(r) {
            let found = _.find(localData, { "ytid": r.id });

            finalResults.push({
              title: r.title,
              ytid: r.id,
              group: r.group,
              isArchived: (found !== undefined) ? true : false
            });
          });

          res.json(finalResults);
        });
      });
    } else if (searchTerm.startsWith("/g")) {
      searchTerm = searchTerm.replace("/g", "").trim();

      if (searchTerm === "all") {
        db.getAllVideosFromDB(function(data) {
          res.json(data);
        });
      } else {
        db.getAllVideosForGroupFromDB(searchTerm, function(data) {
          res.json(data);
        });
      }
    } else {
      db.getVideosWhereTitleLikeFromDB(searchTerm, function(data) {
        res.json(data);
      });
    }
  });
Example #11
0
  Youtubedl.search = function(req, res, query, cb) {

    switch (query.target) {
      case "youtube":
        var search = require('youtube-search');
        search(query.text, { maxResults: 10, startIndex: 1 }, function(err, results) {
          if(err) return cb(err);
          var result = [];
          for (var i in results) {
            result.push({
              title: results[i].title,
              url: results[i].url
            });
          }
          cb(null, result);
        });
        break;
      default:
        // enforce
        var whereArray = [];
        if (query.text) {
          whereArray.push({slug: {like: '.*'+query.text.toLowerCase()+'.*'}});
        }
        if (query.persist) {
          for (var i=0; i<query.persist.length; i++) {
            whereArray.push({youtubedl_id: query.persist[i].youtubedl_id});
          }
        }
        Youtubedl.find({where: (_.isEmpty(whereArray)?{}:{or: whereArray}), limit: 10, order: "time DESC"}, function(err, objects) {
          if (err) {
            return cb(err);
          }
          var result = [];
          for (var i=0; i<objects.length; i++) {
            result.push({
              title: objects[i].title,
              state: objects[i].state,
              youtubedl_id: objects[i].youtubedl_id,
              url: objects[i].url
            });
          }
          cb(null, result);
        });
    }
  };
Example #12
0
youtubeBestVideo.findBestMusicVideo = function(title, opts, cb) {
  var duration = opts.duration || null
  apiKey = opts.apiKey

  if (!apiKey) {
    throw new Error('no api key specified')
  }

  var filters = [_videoTitleFilter, _whitelistWordsFilter, _blacklistWordsFilter];

  if (duration) {
    filters.push(_videoDurationFilter);
  }

  youtubeSearch(title, { key: apiKey }, function(err, results) {
    if(err) cb(err);
    var bestOne = null;
    var bestRating = 0;
    // If there are results
    if (results !== undefined && results.length>0) {
      results.forEach(function(result, index) {
        var rating = 0;

        for(var i = 0; i < filters.length; i++) {
          rating += filters[i].call(this, result, title, duration);
        }

        if(rating > bestRating) {
          bestOne = result;
          bestRating = rating;
        }

        if(index === results.length - 1) {
          cb(null, bestOne);
        }
      });
    }
    // If there are no results
    else {
      cb("error no results found");
    }
  });
};
router.get('/video/:name', apicache('1 day'), function(req, res){
    req.apicacheGroup = req.params.name;
    let name = req.params.name;

    let opt = {
        maxResults: 5,
        key: youtubeKey
    };

    youtubeSearch(name, opt, (err, results) => {
        if(err){
            console.error(err);
            res.status(400).send('Ooops something went wrong');
            return;
        }

        res.send(results);
    });
});
Example #14
0
				}, function(d) {
					if(d.err) return say(d, 2);

					var title = [];
					if(d.artist !== '') {
						info.last_artist = d.artist;
						title.push(d.artist);
					}

					if(d.name !== '') title.push(d.name);

					yt_search(title.join(' '), yt_opts, function(err, results) 
					{
						if(err)
						{
							CHAN.log.error(err.stack)
							say({err: 'an error has occured'}, 2);
							b.users.owner(false, function(owner_nicks)
							{
								if(owner_nick !== null)
								{
									owner_nicks.forEach(function(owner_nick)
									{
									   say({err: err.stack}, 3, {skip_verify: true, to: owner_nick}); 
								   });
								}
							});

							return;
						}
					 
						if(!results || results.length === 0){
							say({err: 'no youtube video found for last played song'}, 2)
							return;
						}

						var str = CHAN.t.highlight(x.no_highlight(args.irc_nick)) + ' ';
						str += d.now_playing ? 'is now playing: ' + CHAN.t.success(results[0].title || '') : 'last played: ' + CHAN.t.null(results[0].title || '');
						str += ' ' + results[0].link; 

						say(str, 1, {skip_verify: true});
					});
				});
Example #15
0
 return new Promise((resolve, reject) => {
   youTubeSearch(`${term} acoustic cover`, youtubeOpts, (err, results) => {
     let validResults = results.filter((result) => {
       let title = result.title
       let predicate = (
          title.match(/cover/i) &&
          title.match(/acoustic/i) &&
          !title.match(/live/i) &&
          !title.match(/lyrics/i)
        )
       return predicate
     })
     if (err) {
       reject(err)
     } else if (validResults.length < 2) {
       reject('noJams')
     } else {
       resolve(validResults.splice(0, 5).map((result) => result.id))
     }
   })
 })
Example #16
0
var search = function (message, cb) {
    var messageSplit = message.content.split(' ');
    var messageClean = "";
    if (typeof(messageSplit[1]) !== 'undefined' && messageSplit[1]) {
        for (var i = 1; i < messageSplit.length; i++) {
            messageClean = messageClean + " " + messageSplit[i];
        }
        youtubesearch(messageClean, opts, function (err, results) {
            if (err) {
                winston.info(err);
                return cb(':x: ');
            }
            if (results.length > 0) {
                cb(null, results[0]);
            } else {
                cb(':x: ');
            }
        });
    } else {
        cb(t('qa.empty-search', {lngs: message.lang}));
    }
};
Example #17
0
module.exports = function(track, callback)
{

    var opts = {
      maxResults: 1,
      key: 'AIzaSyCbJ0IAbAa_lBZkwGlIIvO6N8v4WwKxI8I',
      type: 'video'
    }

    search(toString(track), opts, function(err, results) {
      if (err)
      {
          callback(err, null)
      }else {
          callback(null, results[0])
      }
    })

    function toString(track)
    {
        return track.artists.join(" ") + " - " + track.name
    }
}
Example #18
0
    youtube: function(args, callback) {
        // This command requires arguments.
        if (!args) {
            return callback();
        }

        if (!process.env.GOOGLE_API_KEY) {
            console.warn('GOOGLE_API_KEY environment variable is not set');
            return callback();
        }

        youtubeSearch(args, { key: process.env.GOOGLE_API_KEY, type: 'video' }, function(err, results) {
            if (err) {
                return callback();
            }

            if (!results || !results.length) {
                return callback();
            }

            callback(null, `/youtube ${args}\n${results[0].link}`);
        });
    }