check.js 7.82 KB
var Info = require('./Info');
var ids = require('./all_ids')
const request = require('request');
const fs = require('fs');
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
var { google } = require('googleapis');
var service = google.youtube('v3');


exports.check = function (message, replyToken) {

    const rand_0to9 = Math.floor(Math.random() * 10);   // 0~9까지 난수생성

    var choice;
    var choose;

    switch (message) {
        case "슬픈 노래":
            choose = 501;
            choice = ids.all_ids[choose][rand_0to9]
            break;
        case "힙합 플레이리스트":
            choose = 101;
            choice = ids.all_ids[choose]
            break;
        case "피아노 플레이리스트":
            choose = 102;
            choice = ids.all_ids[choose]
            break;
        case "팝 플레이리스트":
            choose = 103;
            choice = ids.all_ids[choose]
            break;
        case "신나는 플레이리스트":
            choose = 201;
            choice = ids.all_ids[choose]
            break;
        case "슬픈 플레이리스트":
            choose = 202;
            choice = ids.all_ids[choose]
            break;
        case "블랙핑크 플레이리스트":
            choose = 301;
            choice = ids.all_ids[choose]
            break;
        case "아이유 플레이리스트":
            choose = 302;
            choice = ids.all_ids[choose]
            break;
        case "레드벨벳 플레이리스트":
            choose = 303;
            choice = ids.all_ids[choose]
            break;
        case "트와이스 플레이리스트":
            choose = 304;
            choice = ids.all_ids[choose]
            break;

        // 아래는 case 추가를 위한 템플릿     
        // case "":
        //     choose = ;
        //     choice = ids.all_ids[choose]

        default:
            console.log("잘못 입력했어요~ 다시 입력하세요");
            choice = -1;
    }

    if (choose > 500) {

        service.videos.list
            (
                {
                    key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
                    part: 'snippet',
                    id: choice,
                    fields: 'items(snippet(title))'
                },
                function (err, response) {
                    if (err) {
                        console.log('The API returned an error: ', err);
                        return;
                    }

                    var video = response.data.items;

                    if (video.length == 0) {
                        console.log('검색된 동영상이 없습니다.');
                    }
                    else {
                        sendMessage = JSON.stringify(response.data.items[0].snippet.title);
                        console.log(sendMessage);
                        request.post(
                            {
                                url: TARGET_URL,
                                headers:
                                {
                                    'Authorization': `Bearer ${Info.TOKEN}`
                                },
                                json:
                                {
                                    "replyToken": replyToken,
                                    "messages":
                                        [
                                            {
                                                "type": "image",
                                                "originalContentUrl": "https://img.youtube.com/vi/" + choice + "/hqdefault.jpg",
                                                "previewImageUrl": "https://img.youtube.com/vi/" + choice + "/hqdefault.jpg"
                                            },
                                            {
                                                "type": "text",
                                                "text": sendMessage
                                            }
                                        ]
                                }
                            }
                        );
                    }
                }

            )
    }

    else {
        if (choice == -1) {
            sendMessage = "잘못 입력했어요~ 다시 입력하세요";
            request.post(
                {
                    url: TARGET_URL,
                    headers:
                    {
                        'Authorization': `Bearer ${Info.TOKEN}`
                    },
                    json:
                    {
                        "replyToken": replyToken,
                        "messages":
                            [
                                {
                                    "type": "text",
                                    "text": sendMessage
                                }
                            ]
                    }
                }
            );
        }
        else {
            service.playlistItems.list({
                key: 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518',
                part: 'snippet',
                fields: 'items(snippet(title,resourceId,thumbnails(high(url))))', //제목, VideoId, Thumbnail 이미지 정보.
                maxResults: 10,
                playlistId: choice
            }, function (err, response) {
                if (err) {
                    console.log('The API returned an error: ', err);
                    return;
                }

                var video = response.data.items;
                if (video.length == 0) {
                    console.log('검색된 동영상이 없습니다.');
                } else {
                    sendMessage = "";
                    var temp_title = [], temp_url = [], temp_url2 = [], temp_thumpnail = [];
                    for (var i = 0; i < 10; i++) {

                        temp_title[i] = JSON.stringify(response.data.items[i].snippet.title).replace(/\"/gi, "");

                        temp_url2[i] = JSON.stringify(response.data.items[i].snippet.resourceId.videoId);
                        temp_url[i] = 'https://www.youtube.com/watch?v=' + (temp_url2[i].replace(/\"/gi, ""));

                        //temp_thumpnail[i] = "https://img.youtube.com/vi/" + JSON.stringify(response.data.items[i].snippet.thumbnails.high.url).replace(/\"/gi, "") + "/hqdefault.jpg";
                        // 썸네일 : 사용자가 플레이리스트로 입력 시 리턴으로 너무 많은 정보들을 줘야함. 그래서 뺌.

                        sendMessage += temp_title[i] + "\n" +
                            temp_url[i] + "\n" + "\n";
                        // temp_thumpnail[i] + "\n" + "\n";
                    } console.log(sendMessage);
                    request.post(
                        {
                            url: TARGET_URL,
                            headers:
                            {
                                'Authorization': `Bearer ${Info.TOKEN}`
                            },
                            json:
                            {
                                "replyToken": replyToken,
                                "messages":
                                    [
                                        // {
                                        //     "type": "image",
                                        //     "originalContentUrl": temp_thumpnail[0],
                                        //     "previewImageUrl": temp_thumpnail[0]
                                        // },
                                        {
                                            "type": "text",
                                            "text": sendMessage
                                        }
                                    ]
                            }
                        }
                    );
                }
            })
        }
    }




}