VideoController.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. 'use strict'
  2. const Video = use('App/Models/Video')
  3. const axios = require('axios')
  4. async function getVinfo(id){
  5. const res = await axios.get(`https://www.googleapis.com/youtube/v3/videos?part=snippet%2Cstatistics&id=${id}&key=apikey`);
  6. if (res.length == 0) {
  7. return false;
  8. } else {
  9. return res.data.items[0];
  10. }
  11. }
  12. class VideoController {
  13. async index ({ view }){
  14. var vids = []
  15. const videos = await Video.query().orderByRaw('RAND()').limit(6).fetch()
  16. for (var i = 0; i < videos.rows.length; i++) {
  17. await getVinfo(videos.rows[i].vid).then(async (item) => {
  18. var addo = {}
  19. if(!item){
  20. var delvid = await Video.search('vid', videos.rows[i].vid)
  21. await delvid.delete()
  22. addo["vid"] = null
  23. vids.push(addo)
  24. return
  25. }
  26. addo["title"] = item.snippet.title
  27. addo["vid"] = item.id
  28. addo["artist"] = item.snippet.channelTitle.toString()
  29. vids.push(addo)
  30. })
  31. if(videos.rows.length - 1 === i){
  32. return view.render('main', { videos: vids })
  33. }
  34. }
  35. }
  36. async watch ({ view, params, response }){
  37. const video = await Video.search('vid', params.id)
  38. if(!video) return response.redirect('back')
  39. var vid = {}
  40. await getVinfo(video.vid).then((item) => {
  41. vid["title"] = item.snippet.title
  42. vid["vid"] = item.id
  43. vid["artist"] = item.snippet.channelTitle
  44. })
  45. return view.render('watch', { video: vid })
  46. }
  47. }
  48. module.exports = VideoController