Skip to content

planetEarth1886/backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

32 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๋ฐฑ์—”๋“œ

์ฐธ๊ณ ) ํ”„๋ก ํŠธ ์—”ํŠธ ์›น ์‚ฌ์ดํŠธ์˜ ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์‹œ ๋ฒ„์ „ ์„ค๋ช…

  1. node ๋ฒ„์ „ : v12.13.1

  2. npm ๋ฒ„์ „ : 6.12.1

๋ฐฑ์—”๋“œ ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

  • master ๋ธŒ๋žœ์น˜์—์„œ npm i๋กœ ๋…ธ๋“œ ๋ชจ๋“ˆ์„ ์ƒˆ๋กœ ๋‹ค์šด๋ฐ›์Šต๋‹ˆ๋‹ค

  • package-lock.json ์˜ ์—ญํ• : ๋ฐฑ์—”๋“œ ์ž‘๋™์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ ๋ฆฌ์ŠคํŠธ๋กœ npm install (๋ชจ๋“ˆ์ด๋ฆ„) ๋ฅผ ํ„ฐ๋ฏธ๋„ํ•ด์„œ ์ž‘๋™ํ•˜๋ฉด ์›ํ•˜๋Š” ๋ชจ๋“ˆ๋“ค์„ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์— ์„ค์น˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ์ฝ”๋“œ ์„ค๋ช…

  1. app.js : ๋‚˜๋ผ๋ณ„ ํฌ๋กค๋ง์„ ์‹คํ–‰์‹œํ‚ค๋Š” javascript ํŒŒ์ผ
  2. public/main_json.js : ๊ตฌ๊ธ€ ํŠธ๋ Œ๋“œ ์‚ฌ์ดํŠธ๋ฅผ ๊ฐ ๋‚˜๋ผ๋ณ„๋กœ ํฌ๋กค๋งํ•ด์˜ค๊ณ  Google Translate API๋ฅผ ์ด์šฉํ•ด์„œ ๋ฒˆ์—ญํ•œ ๊ฒฐ๊ณผ๋ฅผ json ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋Š” javascript ํŒŒ์ผ
  3. public/json_result : ๋ฐฑ์—”๋“œ์—์„œ ์ƒ์„ฑํ•œ jsonํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ํด๋”. ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์ฐธ์กฐ.

1. app.js

Express ์•ฑ์„ ์‚ฌ์šฉํ•ด ์›ํ•˜๋Š” ๊ฒฝ๋กœ๋กœ ์›น์‚ฌ์ดํŠธ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

Express ์•ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋“ค์›จ์–ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜๋Š” req ์˜ค๋ธŒ์ ํŠธ, res ์˜ค๋ธŒ์ ํŠธ ์ค‘ ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๊ฐ–๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ get HTTP ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ฒฝ๋กœ๋กœ ๋ผ์šฐํŒ…ํ•ด์„œ ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜๋ฅผ ์ž‘๋™์‹œํ‚ต๋‹ˆ๋‹ค. Res ์˜ค๋ธŒ์ ํŠธ๋Š” ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜์— ๋Œ€ํ•œ HTTP ์‘๋‹ต ์ธ์ˆ˜์ด๋ฉฐ req ์˜ค๋ธŒ์ ํŠธ๋Š” ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜์— ๋Œ€ํ•œ HTTP ์š”์ฒญ ์ธ์ˆ˜์ด๋‹ค.

์•ฑ์˜ ๋ฃจํŠธ์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์‹คํ–‰ํ•  ๋•Œ, ์•ฑ์€ ์ด์ œ ์š”์ฒญ์ด ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜๋ฅผ ํ•จ์ˆ˜๋ฅผ ์ž‘๋™์‹œํ‚ต๋‹ˆ๋‹ค.

var express = require('express'); 
var app = express();

app.listen(3001,function(){     
	console.log('start! express server on port 3001'); 
});  

app.use(express.static('public')); 
// url routing 

app.get('/',function(req,res){     
	res.sendFile(__dirname + "/public/main.html"); 
}); 

app.get('/result',function(req,res){	 			
	res.sendFile(__dirname+'/public/result/result_' + req.query.geo+'.html'); 
});  

app.get('/json_result',function(req,res){	 		
	res.sendFile(__dirname+'/public/json_result/result_' + req.query.geo+'.json'); 
});

๋ชจ๋“  ๊ตญ๊ฐ€์— ๋Œ€ํ•œ ํ‚ค์›Œ๋“œ ํฌ๋กค๋ง์„ ์œ„ํ•ด ๊ตญ๊ฐ€ ์ฝ”๋“œ์™€ ๋ฒˆ์—ญ ์ฝ”๋“œ๋ฅผ ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

app.js ํŒŒ์ผ์„ ์ž‘๋™์‹œํ‚ค๋ฉด ์ง€์ •ํ•ด๋‘” ๋‚˜๋ผ๋ณ„ ๊ตญ๊ฐ€์ฝ”๋“œ์™€ ๊ทธ ๋‚˜๋ผ์˜ ์–ธ์–ด๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜์—ฌ json ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

/*๊ตญ๊ฐ€๋ช… = "๋ฏธ๊ตญ, ์•„๋ฅดํ—จํ‹ฐ๋‚˜, ์˜ค์ŠคํŠธ๋ฆฌ์•„, ์˜ค์ŠคํŠธ๋ ˆ์ผ๋ฆฌ์•„, ๋ฒจ๊ธฐ์—, ๋ธŒ๋ผ์งˆ, ์บ๋‚˜๋‹ค, ์Šค์œ„์Šค, ์น ๋ ˆ, ์ฝœ๋กฌ๋น„์•„, ์ฒด์ฝ”, ๋…์ผ, ๋ด๋งˆํฌ, ์ด์ง‘ํŠธ, ํ•€๋ž€๋“œ, ํ”„๋ž‘์Šค, ์˜๊ตญ, ๊ทธ๋ฆฌ์Šค, ํ™์ฝฉ, ํ—๊ฐ€๋ฆฌ, ์ธ๋„๋„ค์‹œ์•„, ์•„์ผ๋žœ๋“œ, ์ด์Šค๋ผ์—˜, ์ธ๋„, ์ดํƒˆ๋ฆฌ์•„, ์ผ๋ณธ, ์ผ€๋ƒ, ํ•œ๊ตญ, ๋ฉ•์‹œ์ฝ”, ๋ง๋ ˆ์ด์‹œ์•„, ๋‚˜์ด์ง€๋ฆฌ์•„, ๋„ค๋œ๋ž€๋“œ, ๋…ธ๋ฅด์›จ์ด, ๋‰ด์งˆ๋žœ๋“œ, ํ•„๋ฆฌํ•€, ํด๋ž€๋“œ, ํฌ๋ฅดํˆฌ๊ฐˆ, ๋ฃจ๋งˆ๋‹ˆ์•„, ๋Ÿฌ์‹œ์•„, ์‚ฌ์šฐ๋””์•„๋ผ๋น„์•„, ์Šค์›จ๋ด, ์‹ฑ๊ฐ€ํฌ๋ฅด, ํƒœ๊ตญ, ํ„ฐํ‚ค, ๋Œ€๋งŒ, ์šฐํฌ๋ผ์ด๋‚˜, ๋ฒ ํŠธ๋‚จ */

// ๊ตญ๊ฐ€ ์ฝ”๋“œ 

var countries = ["US", "AR", "AT", "AU", "BE", "BR", "CA", "CH", "CL", "CO", "CZ", "DE", "DK", "EG","FI", "FR", "GB", "GR", "HK", "HU", "ID", "IE", "IL", "IN", "IT", "JP", "KE", "KR", "MX", "MY", "NG", "NL", "NO", "NZ", "PH", "PL", "PT", "RO", "RU", "SA", "SE", "SG", "TH", "TR", "TW", "UA", "VN"];

// ๊ตญ๊ฐ€ ์–ธ์–ด 
var transLangs = ["en", "es", "de", "en", "fr", "pt", "en", "de", "es", "es", "cs", "de", "da", "ar", "fi", "fr", "en", "el", "zh-TW", "hu", "id",
"ga", "he", "hi", "it", "ja", "en", "ko", "es", "ms", "en", "nl", "no", "en", "tl", "pl", "pt", "ro", "ru", "ar", "sv", "en","th", "tr", "zh-TW", "uk", "en", "vi"];

get command ๋ฅผ ์ด์šฉํ•ด ํฌ๋กค๋ง ๊ฒฐ๊ณผ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

1์‹œ๊ฐ„์— ํ•œ ๋ฒˆ์”ฉ ๊ตญ๊ฐ€๋ณ„ ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด get command๋ฅผ ์ด์šฉํ•˜๋ฉฐ ์šฐ์„  ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ json ํŒŒ์ผ๋“ค์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  get command๋ฅผ ์ด์šฉํ•ด์„œ main_json.js ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค. geo ๋ณ€์ˆ˜๋Š” ๊ตญ๊ฐ€์ฝ”๋“œ์ด๋ฉฐ transLanguage๋Š” ๊ตญ๊ฐ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋กœ main_json.js์— ์˜ต์…˜์œผ๋กœ ์ „๋‹ฌํ•˜์—ฌ GoogleTranslate API ๋ฅผ ์ด์šฉํ•ด ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

setInterval(function(){
	for (var i=0;i<countries.length;i++) { // ๋ชจ๋“  ๊ตญ๊ฐ€์— ๋Œ€ํ•œ ํ‚ค์›Œ๋“œ ํฌ๋กค๋ง 		var geo = countries[i]; 
			var transLanguage = transLangs[i]; 
			cmd.get( 
				"rm public/json_result/result_"+ geo + ".json" 
			); 		
			cmd.get(
	 			"node public/main_json.js "+ geo + " "+ 		transLanguage
 			); 
	}
}, 360000); // 1์‹œ๊ฐ„์— 1๋ฒˆ ์‹คํ–‰

2. main_json.js

Google Trends ์›น ์‚ฌ์ดํŠธ์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์›น ํฌ๋กค๋งํ•ฉ๋‹ˆ๋‹ค.

Node.js ๋‚ด์žฅ ๋ชจ๋“ˆ์ธ Request ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด ์ธํ„ฐ๋„ท์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์š”์ฒญ์— ํ•ด๋‹นํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. Cheerio ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด ๋ฐ›์•„์˜จ ํŽ˜์ด์ง€๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ์ „์ฒด ํŽ˜์ด์ง€ ์ค‘์—์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„์˜ ์ •๋ณด๋งŒ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

var cheerio = require('cheerio');
var request = require('request');

๊ตฌ๊ธ€ ํŠธ๋ Œ๋“œ ์›น ํŽ˜์ด์ง€์—์„œ ๊ฐ€์ ธ์˜ฌ ๊ตญ๊ฐ€ ์ฝ”๋“œ ๋ฐ ๋ฒˆ์—ญํ•  ์–ธ์–ด ์ฝ”๋“œ ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. cmd๋กœ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ geo๊ฐ€ US, transLanguage๊ฐ€ en๋ผ๋ฉด sourceUrl์€ ๋ณ€์ˆ˜ ๊ฐ’์€ https://trends.google.com/trends/trendingsearches/daily?geo=US์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

// cmd๋กœ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ argument ๊ฐ€์ ธ์˜ค๊ธฐ
var geo = process.argv.slice(2)[0]; // ๊ตฌ๊ธ€ ํŠธ๋žœ๋“œ์—์„œ ๊ฒ€์ƒ‰ํ•  ๊ตญ๊ฐ€ ์ฝ”๋“œ
var transLanguage = process.argv.slice(2)[1]; // ๋ฒˆ์—ญํ•  ์–ธ์–ด ์ฝ”๋“œ

var sourceUrl = 'https://trends.google.co.kr/trends/trendingsearches/daily/rss?geo=' + geo;
var title = new Array(),
	description = new Array(),
	date = new Array(),
	title_trans = new Array();

์›น์‚ฌ์ดํŠธ์—์„œ ํฌ๋กค๋งํ•ด์˜ค๋Š” ํŠธ๋ Œ๋“œ ๋‰ด์Šค์˜ ๋‚ ์งœ์™€ ์š”์ผ์„ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” convertWeekDaysByKorean()ํ•จ์ˆ˜ getDataFormat()ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

// ์š”์ผ ๋ฒˆ์—ญ
function convertWeekDaysByKorean(weekday) {
	if (weekday.length < 1) {
    	return "";
	}

    weekday = weekday.substring(0, weekday.length-1);
    switch (weekday) {
    	case "Mon" :
    		return "์›”์š”์ผ";
    	case "Tue" :
        	return "ํ™”์š”์ผ";
    	case "Wed" :
        	return "์ˆ˜์š”์ผ";
    	case "Thu" :
        	return "๋ชฉ์š”์ผ";
    	case "Fri" :
        	return "๊ธˆ์š”์ผ";
    	case "Sat" :
        	return "ํ† ์š”์ผ";
    	case "Sun" :
        	return "์ผ์š”์ผ";
	}
    return "";
}

function getDataFormat(date) {
	let MONTHS = {Jan : "1", Feb : "2", Mar : "3", Apr : "4", May : "5", Jun : "6", Jul : "7", Aug : "8", Sep : "9", Oct : "10", Nov : "11", Dec : "12"}
	let arr = date.split(' ');

	if (arr.length >= 4) {
    	return (arr[3] + "๋…„ " + MONTHS[arr[2]] + "์›” " + arr[1] + "์ผ " + convertWeekDaysByKorean(arr[0]));
	}
	else {
    	return "";
	}
}

request ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด์„œ cheerio๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ณ  $์— cheerio.load๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

// ํฌ๋กค๋งํ•˜๊ธฐ
request(sourceUrl, function(error, response, html){
	if (!error) {
		var $ = cheerio.load(html, {xmlMode : true});

		// ํ‚ค์›Œ๋“œ
		$('item').each(function () {
		  title.push($(this).children('title').text());
		});

		// ๋‚ ์งœ
		$('item').each(function () {
		  let pubDate = $(this).children('pubDate').text();
		  date.push(getDataFormat(pubDate));
		});

		// ํ‚ค์›Œ๋“œ ์„ค๋ช…
		$('item').each(function () {
			description.push($(this).children('ht\\:news_item').children('ht\\:news_item_title').text());
		});
		

๋ฒˆ์—ญํ•  ๋ฌธ์žฅ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

// ๋ฒˆ์—ญ ๋ฐ ์ถœ๋ ฅ ํ•จ์ˆ˜ ์ •์˜
		async function logData(title, date, description){
			let tempDate, rank = 1;
			let dateCount = 0;

			var allContents = "";
			var transContents = "";
			for (let i = 0; i < 10; i++) { // ๋ฒˆ์—ญํ•  ์ „์ฒด ๋ฌธ์žฅ ์ƒ์„ฑ
				if (tempDate != date[i]) { // ์˜ค๋Š˜์˜ keyword 10์œ„๊นŒ์ง€๋งŒ ๋ณด์ด๊ฒŒ ์ œํ•œ
					if(dateCount<2) dateCount++;
					if(dateCount==2) break; // ๋‹ค๋ฅธ ๋‚ ์งœ keyword์ธ ๊ฒฝ์šฐ ์ค‘์ง€
					tempDate = date[i];
				}
				allContents = allContents + title[i] + "^" + description[i] + "^";
			}

Google Translate Api ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด ํฌ๋กค๋ง ๊ฒฐ๊ณผ๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•ฉ๋‹ˆ๋‹ค.

const translate = require('@vitalets/google-translate-api')

// ๋ฒˆ์—ญ ํ•จ์ˆ˜
async function translateFn(text){
	var res = await translate(text, {from: transLanguage, to: 'ko'});
	return res.text;
}

ํฌ๋กค๋ง ๊ฒฐ๊ณผ ๋ฒˆ์—ญํ•˜๋Š” translateFnํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐฐ์—ด์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

// transContents = allContents;
if (geo == "KR") // ํ•œ๊ตญ ํŠธ๋žœ๋“œ๋Š” ๋ฒˆ์—ญ ์•ˆํ•จ
	transContents = allContents;
else // ํ•ด์™ธ ํŠธ๋žœ๋“œ ๋ฒˆ์—ญํ•˜๊ธฐ
	transContents = await translateFn(allContents);

// ๋ฒˆ์—ญ๋œ ๋ฌธ์žฅ ๋ฐฐ์—ด๋กœ ์ €์žฅ
	var translatedContents = new Array();
	translatedContents = transContents.split('^');

ํฌ๋กค๋ง ํ›„ ๋ฒˆ์—ญ์„ ๋๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ json ํ˜•์‹์˜ ํŒŒ์ผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

const fs = require('fs')
// json ํŒŒ์ผ๋ช… ์„ค์ •
var fileName = './public/json_result/result_'+geo+'.json';
		
const resultJson = JSON.stringify(all);
				fs.writeFileSync(fileName, resultJson);

ํฌ๋กค๋ง ๋ฐ ๋ฒˆ์—ญ ๊ฒฐ๊ณผ๋ฅผ JSON ํŒŒ์ผํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด size, date, keyword๋ผ๋Š” ์ด๋ฆ„์˜ json array ๋ฐ json object ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

// ์ตœ์ƒ์œ„ json array ์ •์˜
const all = {
	sizes: new Array(),
	dates: new Array(),
	keywords: new Array()
}

var sizeArray = new Array();
var dateArray = new Array();
var keywordArray = new Array();

// size json object ์ •์˜
const size = {
	size: 0
}

// date json object ์ •์˜
const date = {
	date: tempDate
}
dateArray.push(date);

// keyword json object ์ •์˜
const keyword = {
	title: "",
	content: ""
}

๊ฐ ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด์„œ ๋ฒˆ์—ญํ•˜์—ฌ ๋ฐฐ์—ด์— ์ €์žฅํ•ด ๋‘์—ˆ๋˜ ๊ฒฐ๊ณผ๋ฅผ keywordArray ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

// ๊ฐ ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•ด
for (let rank = 0; rank<(translatedContents.length/2 - 1); rank++) {
	var keywordJSON = new Object();
	keywordJSON.title = translatedContents[rank*2];
	keywordJSON.content = translatedContents[rank*2+1];
	keywordArray.push(keywordJSON); // keyword array์— ํ‚ค์›Œ๋“œ ์ถ”๊ฐ€
}

๊ฐ ๋‚˜๋ผ๋ณ„ ํŠธ๋ Œ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” sizeArray ๋ฐฐ์—ด๊ณผ, ๋‚ ์งœ๋ฅผ ์˜๋ฏธํ•˜๋Š” dateArray'๋ฐฐ์—ด, keywordArray๋ฐฐ์—ด์„ json ๋ฐฐ์—ด all`์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

size.size = keywordArray.length;
sizeArray.push(size);

all.sizes = sizeArray;
all.dates = dateArray;
all.keywords = keywordArray;

resultJson์€ JSON.stringify()๋ฅผ ์ด์šฉํ•ด all ๊ฐ์ฒด๋ฅผ Json ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ๊ฐ’์ด๋‹ค. fileName์ด๋ฆ„์˜ json ํŒŒ์ผ๋กœ resultJson ๊ฐ’์„ ์ €์žฅํ•ด์ค๋‹ˆ๋‹ค.

const resultJson = JSON.stringify(all);
fs.writeFileSync(fileName, resultJson);

3. json_result ํด๋”

ํฌ๋กค๋ง ๋ฐ ๋ฒˆ์—ญ ๊ฒฐ๊ณผ ์ƒ์„ฑ๋œ ํŒŒ์ผ๋“ค์ด result_(๊ตญ๊ฐ€์ฝ”๋“œ).json ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •