-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathindex.js
116 lines (84 loc) · 3.25 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
require('dotenv').config()
const { Client } = require('pg')
const client = new Client({
ssl: {
rejectUnauthorized: false
}
});
const videoId = "PaRam-aY9p0";
const youtubeClient = require("youtube-fast-api")
const ytClient = new youtubeClient(process.env.YOUTUBE_KEY_API);
const videoComments = ytClient.getAllComments(videoId);
videoComments.then(videoData => {
saveVideoData(videoData);
})
function getUserData(videoData) {
return {
"authorDisplayName": videoData.authorDisplayName,
"authorProfileImageUrl": videoData.authorProfileImageUrl,
"authorChannelUrl": videoData.authorChannelUrl,
"authorChannelId": videoData.authorChannelId
}
}
function getCommentsData(videoData) {
return {
"videoId": videoData.videoId,
"textDisplay": videoData.textDisplay,
"textOriginal": videoData.textOriginal,
"canRate": videoData.canRate,
"viewerRating": videoData.viewerRating,
"likeCount": videoData.likeCount,
"publishedAt": videoData.publishedAt,
"updatedAt": videoData.updatedAt,
"id": videoData.id,
"commentby": videoData.authorChannelId
};
}
//Guarda la informacion del video en la base de datos
function saveVideoData(videoData) {
const usersData = videoData.map(data => getUserData(data));
saveUserInDataBase(usersData)
const commentsData = videoData.map(data => getCommentsData(data));
saveCommentsInDataBase(commentsData);
}
function saveUserInDataBase(usersData) {
client.connect()
Promise.all(usersData.map(user => saveUserInDataBase(user))).finally(x => client.end());
}
function saveCommentsInDataBase(commentsData) {
client.connect()
Promise.all(commentsData.map(comment => saveCommentDataBase(comment))).finally(x => client.end());
}
function saveUserInDataBase(user) {
const insertQuery = `INSERT INTO usuarios (authordisplayname, authorprofileimageurl, authorchannelurl, authorchannelid) VALUES($1,$2,$3,$4);`;
const values = [user.authorDisplayName, user.authorProfileImageUrl, user.authorChannelUrl, user.authorChannelId]
return client
.query(insertQuery, values)
.then(res => {
console.log("Todo ok")
})
.catch(e => console.error(e.stack))
}
function saveCommentDataBase(comment) {
const insertQuery = `INSERT INTO public.comentarios (videoid, textdisplay, textoriginal, canrate, viewerrating, likecount, publishedat, updatedat, id, commentby) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);`;
const values = [comment.videoId,
comment.textDisplay,
comment.textOriginal,
comment.canRate,
comment.viewerRating,
comment.likeCount,
comment.publishedAt,
comment.updatedAt,
comment.id,
comment.authorChannelId]
return client
.query(insertQuery, values)
.then(res => {
console.log("Todo ok")
})
.catch(e => console.error(e.stack))
/*
INSERT INTO public.comentarios
(videoid, textdisplay, textoriginal, canrate, viewerrating, likecount, publishedat, updatedat, id, commentby)
VALUES('', '', '', '', '', '', '', '', '', ''); */
}