From d0ce052bc42fdae25f894db3e477e75fe70fe7a7 Mon Sep 17 00:00:00 2001 From: Gregorio Date: Mon, 11 Feb 2019 18:27:21 +0100 Subject: [PATCH] finito fvitali --- src/VideoPlayer.js | 5 ++ src/areainfo/Suggestion.js | 7 ++- src/index.js | 3 + src/reccomenders/Random.js | 14 ++--- src/reccomenders/Recent.js | 0 src/reccomenders/Related.js | 11 ++-- src/reccomenders/fvitali.js | 114 ++++++++++++++++++------------------ 7 files changed, 79 insertions(+), 75 deletions(-) create mode 100644 src/reccomenders/Recent.js diff --git a/src/VideoPlayer.js b/src/VideoPlayer.js index ed00972..c7b9aec 100644 --- a/src/VideoPlayer.js +++ b/src/VideoPlayer.js @@ -91,11 +91,16 @@ class VideoPlayer extends React.Component { error => console.info(error, videoIdWatched.toString()) ); // local storage logic for recent reccomender + // let temp=localStorage.getItem('lastWatched'); + // temp.push({id: videoIdWatched.toString(), date: new Date}) + + //.finally(()=>{}) clearInterval(timerId1); }, error => console.error(error) ) + .finally(() => this.setState({ promise1: null, outsideReject1: null })); break; case 5: diff --git a/src/areainfo/Suggestion.js b/src/areainfo/Suggestion.js index 66c6216..e828cfd 100644 --- a/src/areainfo/Suggestion.js +++ b/src/areainfo/Suggestion.js @@ -5,6 +5,7 @@ import { Switch, Route } from 'react-router'; import Random from '../reccomenders/Random'; import Related from '../reccomenders/Related'; import Search from '../reccomenders/Search'; +import fvitali from '../reccomenders/fvitali'; // and so on.. @@ -43,15 +44,15 @@ class Suggestion extends Component { {a.map((x,i) => i)} ?? box utile o superfluo? */} - + - + {/* lasciare questo per ultimo */} - + ); } diff --git a/src/index.js b/src/index.js index 4fcaf5d..c48288e 100644 --- a/src/index.js +++ b/src/index.js @@ -6,5 +6,8 @@ import App from './App'; import registerServiceWorker from './registerServiceWorker'; import { HashRouter, BrowserRouter } from 'react-router-dom'; // eslint-disable-line +let lastWatchedList=[]; +localStorage.setItem('lastWatched', lastWatchedList) + ReactDOM.render(, document.getElementById('root')); registerServiceWorker(); diff --git a/src/reccomenders/Random.js b/src/reccomenders/Random.js index 6b763de..46989cb 100644 --- a/src/reccomenders/Random.js +++ b/src/reccomenders/Random.js @@ -1,8 +1,7 @@ import React, { Component } from 'react'; -import 'bootstrap/dist/css/bootstrap.css'; import axios from "axios"; import createpageToken from 'youtube-page-token'; -import {Card} from "react-bootstrap"; +import {Card,Col} from "react-bootstrap"; import {Link} from "react-router-dom"; import moment from "moment"; @@ -48,11 +47,10 @@ class RecommenderRandom extends Component{ render(){ const ISO_8601parse = this.ISO_8601parse; - return ( -
+ return ( {this.state.items.map(function (item,index) { return( -
+ @@ -72,11 +69,10 @@ class RecommenderRandom extends Component{ -
+ ) })} -
- ); + ); } } export default RecommenderRandom; \ No newline at end of file diff --git a/src/reccomenders/Recent.js b/src/reccomenders/Recent.js new file mode 100644 index 0000000..e69de29 diff --git a/src/reccomenders/Related.js b/src/reccomenders/Related.js index e816eb9..17305cf 100644 --- a/src/reccomenders/Related.js +++ b/src/reccomenders/Related.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import axios from 'axios'; import {Link} from "react-router-dom"; -import {Card} from "react-bootstrap"; +import {Card,Col} from "react-bootstrap"; import moment from "moment"; @@ -58,10 +58,10 @@ class Related extends Component { render() { const ISO_8601parse = this.ISO_8601parse; return ( -
+ {this.state.items.map(function (item,index) { return( -
+ @@ -82,10 +81,10 @@ class Related extends Component { -
+ ) })} -
+ ); } } diff --git a/src/reccomenders/fvitali.js b/src/reccomenders/fvitali.js index 168f2c3..09fa81e 100644 --- a/src/reccomenders/fvitali.js +++ b/src/reccomenders/fvitali.js @@ -6,19 +6,20 @@ import { Col, ListGroup, Card, CardDeck } from 'react-bootstrap'; // eslint-disa import axios from 'axios'; // eslint-disable-line no-unused-vars import { Link } from 'react-router-dom'; // eslint-disable-line no-unused-vars /*eslint no-console: ["error", { allow: ["warn", "error", "info"] }] */ +import moment from "moment"; class fvitali extends React.Component { - constructor(props) { - super(props); - this.state = { + state = { error: null, isLoaded: false, items: [], headers: null }; - this.getThumbnails = this.getThumbnails.bind(this); - } + ISO_8601parse(a) { + return moment(a, moment.ISO_8601).format('ddd, DD/MM/YYYY hh:mm:ss'); + } + componentDidMount() { axios.get('http://site1825.tw.cs.unibo.it/TW/globpop', { 'params':{ @@ -26,13 +27,15 @@ class fvitali extends React.Component { } }).then( response => { - //this.shuffleArray(response.data); - //this.getThumbnails(response.data); + //this.shuffleArray(response.data); console.info ('a',response.data); - this.setState({ - isLoaded: true, - items:response.data, - }); + this.getThumbnailsNames(response.data.recommended); + console.info(response.data.recommended); + // this.setState({ + // isLoaded: true, + // items:response.data.recommended, + // }); + }, // Note: it's important to handle errors here // instead of a catch() block so that we don't swallow @@ -48,73 +51,51 @@ class fvitali extends React.Component { } // METODI - getThumbnails(videoItems) { - let idToLookFor = videoItems.map(item => item.videoID); - let finalChunk = (videoItems.length % 50) + 100; - axios - .all([ - // chain 3 parallel get + getThumbnailsNames(reccomended) { + let idToLookFor = reccomended.map(item => item.videoID); axios.get('https://www.googleapis.com/youtube/v3/videos', { params: { part: 'snippet', - id: idToLookFor.slice(0, 50).toString(), + id: idToLookFor.toString(), key: 'AIzaSyA21Odw9UdfiOJnxvA_eDfOW0OxuUfHKig', - fields: 'items(id,snippet/thumbnails/medium)' - } - }), - axios.get('https://www.googleapis.com/youtube/v3/videos', { - //chain multiple get into promises - params: { - part: 'snippet', - id: idToLookFor.slice(50, 100).toString(), - key: 'AIzaSyA21Odw9UdfiOJnxvA_eDfOW0OxuUfHKig', - fields: 'items(id,snippet/thumbnails/medium)' - } - }), - axios.get('https://www.googleapis.com/youtube/v3/videos', { - //chain multiple get into promises - params: { - part: 'snippet', - id: idToLookFor.slice(100, finalChunk).toString(), - key: 'AIzaSyA21Odw9UdfiOJnxvA_eDfOW0OxuUfHKig', - fields: 'items(id,snippet/thumbnails/medium)' + fields: 'items(id,snippet/thumbnails/medium,snippet/title)' } }) - ]) + .then( - axios.spread((res1, res2, res3) => { - let allres = [].concat( - res1.data.items, - res2.data.items, - res3.data.items - ); - allres.map(resCurrentValue => { - Object.defineProperty( - videoItems.find(videoItem => { + res1 => { + res1.data.items.map(resCurrentValue => { + Object.defineProperties( + reccomended.find(videoItem => { return videoItem.videoID === resCurrentValue.id; }), - 'thumbnail', - { value: resCurrentValue.snippet.thumbnails.medium.url } - ); + { + 'thumbnail': + { value: resCurrentValue.snippet.thumbnails.medium.url }, + 'name': + {value: resCurrentValue.snippet.title} + }); }); this.setState({ isLoaded: true, - items: videoItems + items: reccomended }); }) - ); } - shuffleArray(videoarray) { + + + /*shuffleArray(videoarray) { for (let i = videoarray.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [videoarray[i], videoarray[j]] = [videoarray[j], videoarray[i]]; // eslint-disable-line no-param-reassign } // Durstenfeld shuffle. // https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm - } + }*/ render() { + const ISO_8601parse = this.ISO_8601parse; const { error, isLoaded, items, headers } = this.state; if (error) { return ( @@ -133,8 +114,26 @@ class fvitali extends React.Component { } else { return ( - {items.reccomender}{items.site}{items.lastWatched} - {items.recommended.map(raccomandato=>(
  • {raccomandato.videoID.toString()}
  • ))} + {items.map(item=>( + + + + + + {item.name}
    + {item.lastSelected} +
    +
    + +
    + ))}
    ); @@ -142,5 +141,6 @@ class fvitali extends React.Component { } } -export default fvitali; + +export default fvitali; \ No newline at end of file