diff --git a/public/assets/person-1.jpg b/public/assets/person-1.jpg new file mode 100644 index 0000000..1105563 Binary files /dev/null and b/public/assets/person-1.jpg differ diff --git a/public/assets/person-2.jpg b/public/assets/person-2.jpg new file mode 100644 index 0000000..d61a1a7 Binary files /dev/null and b/public/assets/person-2.jpg differ diff --git a/public/assets/person-3.jpg b/public/assets/person-3.jpg new file mode 100644 index 0000000..761217e Binary files /dev/null and b/public/assets/person-3.jpg differ diff --git a/src/AboutUs.js b/src/AboutUs.js new file mode 100644 index 0000000..c01711b --- /dev/null +++ b/src/AboutUs.js @@ -0,0 +1,29 @@ +import React, { Component } from 'react' +import { Container, Row, Col, Image } from 'react-bootstrap'; +import './css/AboutUs.css'; + +export default class AboutUs extends Component { + render() { + return ( + + + + +

Matteo Scorzafava

+

That's a crooked tree. We'll send him to Washington. These little son of a guns hide in your brush and you just have to push them out.

+ + + +

Simone Ferrari

+

That's a crooked tree. We'll send him to Washington. These little son of a guns hide in your brush and you just have to push them out.

+ + + +

Gregorio Giacchetti

+

That's a crooked tree. We'll send him to Washington. These little son of a guns hide in your brush and you just have to push them out.

+ +
+
+ ) + } +} diff --git a/src/Suggestion.js b/src/Suggestion.js new file mode 100644 index 0000000..8d17c39 --- /dev/null +++ b/src/Suggestion.js @@ -0,0 +1,55 @@ +import React, { Component } from 'react'; +import { Row } from 'react-bootstrap'; +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'; +import popGlobaleAssoluta from './reccomenders/popGlobaleAssoluta'; +import Recent from './reccomenders/Recent'; + +// and so on.. + +class Suggestion extends Component { + + // static getDerivedStateFromProps(nextProps, prevState) { + + // } + + // componentDidMount() { + + // } + + // shouldComponentUpdate(nextProps, nextState) { + + // } + + // componentDidUpdate(prevProps, prevState) { + + // } + + // componentWillUnmount() { + + // } + + render() { + return ( + + + + + + + + + + {/* lasciare questo per ultimo */} + + + + + ); + } +} + +export default Suggestion; \ No newline at end of file diff --git a/src/css/AboutUs.css b/src/css/AboutUs.css new file mode 100644 index 0000000..72e67db --- /dev/null +++ b/src/css/AboutUs.css @@ -0,0 +1,18 @@ +.person-wrapper { + margin-bottom: 2em; +} + +.profile-pic { + width: 50%; +} + +.btn-primary { + background-image: none; + border: none; + border-radius: 0; + background-color: #2892D7; +} + +h3 { + margin-bottom: 1em; +} \ No newline at end of file diff --git a/src/reccomenders/genreSimilarity.js b/src/reccomenders/genreSimilarity.js new file mode 100644 index 0000000..b9b5e4e --- /dev/null +++ b/src/reccomenders/genreSimilarity.js @@ -0,0 +1,43 @@ +import React, { Component } from 'react'; +import axios from 'axios'; + +class genreSimilarity extends Component { + state={ + videoId : localStorage['lastId'], + videoTopic : localStorage['lastTopic'], + items : [] + } + + componentDidMount() { + axios.get("https://www.googleapis.com/youtube/v3/search", { + params: { + 'part': 'snippet', + 'topicId': this.videoTopic, + 'type': 'video', + 'maxResults': '21', + 'key': 'AIzaSyA21Odw9UdfiOJnxvA_eDfOW0OxuUfHKig' + } + }).then( + response => { + this.setState({ + items: response.data.items, + }) + console.log(response); + }, + error => { + console.error(error); + } + ) + console.log("dfadfsd"); + } + + render(){ + return(3); + } +} + +Related.propTypes = { + +}; + +export default genreSimilarity; \ No newline at end of file diff --git a/src/reccomenders/popLocaleAss.js b/src/reccomenders/popLocaleAss.js new file mode 100644 index 0000000..ec1425e --- /dev/null +++ b/src/reccomenders/popLocaleAss.js @@ -0,0 +1,114 @@ +import React from 'react'; +import axios from 'axios'; +import { Link } from 'react-router-dom'; +import { Col, Media } from 'react-bootstrap'; + +class popLocaleAss extends React.Component { + + state = { + isLoaded: false, + error: null, + res: null + } + + // static getDerivedStateFromProps(nextProps, prevState) { + + // } + + componentDidMount() { + axios + .get('http://site1854.tw.cs.unibo.it/videotrack') + .then(res=>{ + this.getThumbnailsNames(res.data.sort((a, b) => a.timesWatched - b.timesWatched).reverse()); + } + ,error=>this.setState({error})) + } + + // shouldComponentUpdate(nextProps, nextState) { + + // } + + // componentDidUpdate(prevProps, prevState) { + // if (prevProps.match.params !== this.props.match.params) { + // this.setState({ isLoaded: false }) + // } + // } + + // componentWillUnmount() { + + // } + + getThumbnailsNames(reccomended) { + let idToLookFor = reccomended.map(item => item.id); + axios.get('https://www.googleapis.com/youtube/v3/videos', { + params: { + part: 'snippet', + id: idToLookFor.toString(), + key: 'AIzaSyA21Odw9UdfiOJnxvA_eDfOW0OxuUfHKig', + fields: 'items(id,snippet/thumbnails/medium,snippet/title,snippet/description)' + } + }) + + .then( + res1 => { + res1.data.items.map(resCurrentValue => + Object.defineProperties( + reccomended.find(videoItem => { + return videoItem.id === resCurrentValue.id; + }), + { + 'thumbnail': + { value: resCurrentValue.snippet.thumbnails.medium.url }, + 'name': + {value: resCurrentValue.snippet.title}, + 'description': + {value: resCurrentValue.snippet.description } + }) + ); + this.setState({ + isLoaded: true, + items: reccomended + }); + }) + } + + + render() { + if (this.state.error) { + return {this.state.error.message} -- {this.state.error.response.data.error.errors[0].reason} ; + } else if (!this.state.isLoaded) { + return +
+ ; + } else { + return ( + + ); + } + } +} + +export default popLocaleAss; \ No newline at end of file diff --git a/src/reccomenders/similarityArtist.js b/src/reccomenders/similarityArtist.js new file mode 100644 index 0000000..abc6ec0 --- /dev/null +++ b/src/reccomenders/similarityArtist.js @@ -0,0 +1,111 @@ +import React from 'react'; +import axios from 'axios'; +import { Link } from 'react-router-dom'; +import { Col, Media } from 'react-bootstrap'; + +class similarityArtist extends React.Component { + + state = { + isLoaded: false, + error: null, + res: null + } + + // static getDerivedStateFromProps(nextProps, prevState) { + + // } + + componentDidMount() { + let timerId1; + let promise = new Promise ((resolve,reject) => { + timerId1 = window.setInterval(()=>{ + if(localStorage['lastId'] === JSON.parse(localStorage['currentVideoInfo']).id) + resolve(true) + },1000) + }) + promise.then(()=>{ + window.clearInterval(timerId1); + this.setState({artist: JSON.parse(localStorage['currentVideoInfo']).artist}) + axios.get('https://www.googleapis.com/youtube/v3/search', { + params: { + 'part': 'snippet', + 'q': JSON.parse(localStorage['currentVideoInfo']).artist, + 'videoEmbeddable': 'true', + 'type': 'video', + 'maxResults': 15, + 'topicId': '/m/04rlf, /m/02jjt', + 'key': 'AIzaSyA21Odw9UdfiOJnxvA_eDfOW0OxuUfHKig' + } + }).then( + res => + this.setState({ + res: res.data, + isLoaded: true + }) + , + error => this.setState({ + error + }) + ) + }) + + } + + // shouldComponentUpdate(nextProps, nextState) { + + // } + + // componentDidUpdate(prevProps, prevState) { + // if (prevProps.match.params !== this.props.match.params) { + // this.setState({ isLoaded: false }) + // } + // } + + // componentWillUnmount() { + + // } + + + + render() { + if (this.state.error) { + return {this.state.error.message} -- {this.state.error.response.data.error.errors[0].reason} ; + } else if (!this.state.isLoaded) { + return +
+ ; + } else { + return ( + <> +

Artist Similarity: {this.state.artist}

+ + + ); + } + } +} + +export default similarityArtist; \ No newline at end of file