place.controller.js 6.06 KB
Newer Older
baesangjune's avatar
.    
baesangjune committed
1
import Places from '../models/Place.js'
baesangjune's avatar
.    
baesangjune committed
2
import cheerio from 'cheerio'
baesangjune's avatar
.    
baesangjune committed
3
4
import fs from 'fs'
import axios from 'axios';
baesangjune's avatar
baesangjune committed
5
import { nextTick } from 'process';
baesangjune's avatar
.    
baesangjune committed
6

baesangjune's avatar
baesangjune committed
7
const searchPlace = async (req, res, next,) => {
baesangjune's avatar
.    
baesangjune committed
8

Kim, Chaerin's avatar
.    
Kim, Chaerin committed
9
    let DuplicateCheckPlace = await Places.findOne({ name: req.query.keyword })
baesangjune's avatar
baesangjune committed
10
    req.places = DuplicateCheckPlace
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
11
12
13
14
15
16
17
    if (DuplicateCheckPlace) {
        console.log("11111111111111111111111Place################ 기존플레이스줄력중")
    }
    else {
        console.log("2222222222222222222222222222222222222222222222222222222")
        const url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=" + encodeURI(req.query.keyword)
        const editUrl = /(http(s)?:\/\/)([a-z0-9\w]+\.*)+[a-z0-9]{2,4}/gi
18
19
20
21
22
23
24
25
26
27
28
        const { data: html } = await axios.get(url)
        let $1 = cheerio.load(html);
        let places = {}
        $1('.ct_box_area').each(function (i) {
            places = {
                name: $1('.biz_name').text(), category: $1('.category').text(), address: $1('.addr').text(),
                img: "https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd",
                times: []
            }
        })
        req.places = places
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
29
    }
baesangjune's avatar
.    
baesangjune committed
30

baesangjune's avatar
baesangjune committed
31
    next()
baesangjune's avatar
.    
baesangjune committed
32

baesangjune's avatar
baesangjune committed
33
}
baesangjune's avatar
.    
baesangjune committed
34

baesangjune's avatar
baesangjune committed
35
const searchImg = async (req, res, next) => {
baesangjune's avatar
.    
baesangjune committed
36

baesangjune's avatar
baesangjune committed
37
    console.log("d213532513212osfnlagm2214124", req.places)
baesangjune's avatar
.    
baesangjune committed
38

39
    if (req.places.img !== "https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd") {
baesangjune's avatar
baesangjune committed
40
41
42
43
44
        console.log("333333333333333333333333333IMG@@@@@@@@@@@@@@@@@@@ 기존이미지줄력중")
        req.places.times.push(new Date().toLocaleString())
        console.log("세이브 전 111111111111111111", req.places)
        const newPlaces = await new Places(req.places).save()
        next()
45
    } else if (req.places.img === "https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd") {
baesangjune's avatar
baesangjune committed
46
        const imgUrl = "https://www.google.com/search?q=" + encodeURI(req.query.keyword) + "+site:tistory.com/&sxsrf=ALeKk023Dv08KQDodRmpB5222lQuzw2Vaw:1610612821100&source=lnms&tbm=isch"
baesangjune's avatar
.    
baesangjune committed
47

baesangjune's avatar
baesangjune committed
48
49
50
51
52
53
        axios.get(imgUrl)
            .then(async (response) => {
                console.log("4444444444444444444444444444444444444444444444444새로운 이미지 출력중")
                const html = response.data
                let name = req.query.keyword
                let $1 = cheerio.load(html);
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
54

baesangjune's avatar
baesangjune committed
55
                let images = $1('.RAyV4b').find('img').attr('src')
baesangjune's avatar
.    
baesangjune committed
56

baesangjune's avatar
baesangjune committed
57
                req.places.img = images
58
59

                console.log("4141414141414141", req.places)
baesangjune's avatar
baesangjune committed
60
61
62
63
64
65
66
67
                //사진만 업데이트
                // let Place2 = await Places.findOne({ name: req.query.keyword })
                req.places.times.push(new Date().toLocaleString())
                // await Places.updateOne({ name: req.query.keyword }, { img: images, times: Place2.times })
                // res.send(images)
                console.log("세이브 전 222222222222222", req.places)
                const newPlaces = await new Places(req.places).save()
                next()
baesangjune's avatar
.    
baesangjune committed
68

baesangjune's avatar
baesangjune committed
69
            })
70
71
    } else {
        console.log("이미지 생성 오류발생!!")
baesangjune's avatar
baesangjune committed
72
    }
baesangjune's avatar
.    
baesangjune committed
73

baesangjune's avatar
.    
baesangjune committed
74
75
}

baesangjune's avatar
baesangjune committed
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
//     if (DuplicateCheckImg !== "https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd") {
//         console.log("333333333333333333333333333IMG@@@@@@@@@@@@@@@@@@@ 기존이미지줄력중")
//     }
//     else if (DuplicateCheckImg === "https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd") {
//         console.log("4444444444444444444444444444444444444444444444444")
//         const imgUrl = "https://www.google.com/search?q=" + encodeURI(req.query.keyword) + "+site:tistory.com/&sxsrf=ALeKk023Dv08KQDodRmpB5222lQuzw2Vaw:1610612821100&source=lnms&tbm=isch"

//         axios.get(imgUrl)
//             .then(async (response) => {
//                 const html = response.data
//                 let name = req.query.keyword
//                 let $1 = cheerio.load(html);

//                 let images = $1('.RAyV4b').find('img').attr('src')

//                 req.places.img = images
//                 //사진만 업데이트
//                 // let Place2 = await Places.findOne({ name: req.query.keyword })
//                 req.places.times.push(new Date().toLocaleString())
//                 // await Places.updateOne({ name: req.query.keyword }, { img: images, times: Place2.times })
//                 // res.send(images)
//                 console.log("세이브 전 111111111111111111", req.places)
//                 const newPlaces = await new Places(req.places).save()
//                 next()
//             })

//     } else {
//         console.log("IMG에러")
//     }
//     req.places.times.push(new Date().toLocaleString())
//     console.log("세이브 전222222222222222222222")
//     next()

// }
//맨 처음 검색하는 지역의 관광지의 경우 association을 받아올 수 없다.
baesangjune's avatar
.    
baesangjune committed
111
const searchAssociation = async (req, res) => {
baesangjune's avatar
baesangjune committed
112
113
    // let Place3 = await Places.findOne({ name: req.query.keyword })
    let Place3 = req.places.address
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
114
115
116
    // if (!Place) {
    //     res.send([])
    // }
baesangjune's avatar
baesangjune committed
117
118
119
120
    if (!Place3) {
        console.log("asdfasdfasdf222222222222222222dsaf2222222222214123q5", Place3)

        res.send({ error: "Place.address is null" })
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
121
122
    }
    else {
baesangjune's avatar
baesangjune committed
123
        let addresse = Place3.split(' ')[0]
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
124
125
126

        let AssociationsId = []
        let addressPlaces = new RegExp(`${addresse}`)
127
128
129
        let responsePlaces = await Places.find({ address: addressPlaces }).sort({ updatedAt: -1 })
        //몽구스나 몽고디비에 있는 sort 확인해보고 나열하기.
        console.log("$$$$$$$$$$$4", responsePlaces)
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
130
        res.send(responsePlaces)
Kim, Chaerin's avatar
Kim, Chaerin committed
131
    }
baesangjune's avatar
.    
baesangjune committed
132
133
134
135
136
137
138
    // responsePlaces.map(Association => {
    //     AssociationsId.push(Association._id)
    // })
    // console.log("Associations = ", Associations)
    // res.send(AssociationsId)
}

baesangjune's avatar
.    
baesangjune committed
139

baesangjune's avatar
.    
baesangjune committed
140
export default { searchImg, searchPlace, searchAssociation }