const path = require("path");
const templateDir = path.resolve(`${process.cwd()}${path.sep}html`);
var express = require("express");
var app = express();
app.engine("html", require("ejs").renderFile);
app.set("view engine", "html");

const renderTemplate = async (res, req, template, data = {}) => {
  res.render(
    path.resolve(`${templateDir}${path.sep}${template}`),
    Object.assign(data)
  );
};
 
const search = require('youtube-search');
const fetch = require('node-fetch');

app.get("/watch", function(req, res) {
  var url = req.query.v;
  var uu = `https://www.youtube.com/watch?v=${url}`;

  var opts = {
    maxResults: 1,
    key: process.env.yt
  };
  
  search(uu, opts, function(err, results) {
    var i = results[0].id;
    fetch(`https://yt-proxy-api.herokuapp.com/get_player_info?v=${i}`)
      .then(res => res.json())
      .then(json => {
        var video = results[0];
        if (!video) return;
        if (err) console.log(err);
        const tarih = json.upload_date
        var h = json.formats[1].url;
        renderTemplate(res, req, "youtube.ejs", { url: h, title: video,video:json,date:tarih });
      });
  });
});
  app.get("/", function(req, res) {
        var url = req.query.url;
    var search = require("youtube-search");

 if(url){
    var opts = {
      maxResults: 1,
      key: process.env.yt
    };

    search(url, opts, function(err, results) {
      var h = results[0].id;
     var lmao = results[0];
if(err) return
      res.redirect(`/watch?v=${h}&title=${lmao.title}&channel=${lmao.channelTitle}&searchquery=${url}`);
    });
 }
    if(!url){
     renderTemplate(res, req, "ytmain.ejs")
    }
 });
  
 
app.get('/youtube/ara', async (req, res) => {
   var url = req.query.query;

  if (!req.query.query) {
    return res.redirect(`/`);
  }

  var opts = {
    maxResults: 1,
    key: process.env.yt
  };

  search(req.query.query, opts, function(err, results) {
    var h = results[0].id;
    res.redirect(`/watch?v=${h}`);
  });
});

const listener = app.listen(3000);