place.controller.js 6.02 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

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

Kim, Chaerin's avatar
.    
Kim, Chaerin committed
8
    let DuplicateCheckPlace = await Places.findOne({ name: req.query.keyword })
baesangjune's avatar
baesangjune committed
9
    req.places = DuplicateCheckPlace
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
10
11
12
13
14
15
16
    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
17
18
19
20
21
22
23
24
25
26
27
        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
28
    }
baesangjune's avatar
baesangjune committed
29
    next()
baesangjune's avatar
.    
baesangjune committed
30
31
}

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

baesangjune's avatar
baesangjune committed
34
    console.log("d213532513212osfnlagm2214124", req.places)
baesangjune's avatar
.    
baesangjune committed
35

36
    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
37
38
39
40
41
        console.log("333333333333333333333333333IMG@@@@@@@@@@@@@@@@@@@ 기존이미지줄력중")
        req.places.times.push(new Date().toLocaleString())
        console.log("세이브 전 111111111111111111", req.places)
        const newPlaces = await new Places(req.places).save()
        next()
42
    } 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
43
        const imgUrl = "https://www.google.com/search?q=" + encodeURI(req.query.keyword) + "+site:tistory.com/&sxsrf=ALeKk023Dv08KQDodRmpB5222lQuzw2Vaw:1610612821100&source=lnms&tbm=isch"
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
44

baesangjune's avatar
baesangjune committed
45
46
47
48
49
50
51
52
        axios.get(imgUrl)
            .then(async (response) => {
                console.log("4444444444444444444444444444444444444444444444444새로운 이미지 출력중")
                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
53
                console.log("4141414141414141", req.places)
baesangjune's avatar
baesangjune committed
54
55
56
57
58
59
60
61
62
                //사진만 업데이트
                // 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()
            })
63
64
    } else {
        console.log("이미지 생성 오류발생!!")
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
65
    }
baesangjune's avatar
.    
baesangjune committed
66
67
}

baesangjune's avatar
baesangjune committed
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
//     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
103
const searchAssociation = async (req, res) => {
baesangjune's avatar
baesangjune committed
104
105
    // let Place3 = await Places.findOne({ name: req.query.keyword })
    let Place3 = req.places.address
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
106
107
108
    // if (!Place) {
    //     res.send([])
    // }
baesangjune's avatar
baesangjune committed
109
110
111
    if (!Place3) {
        console.log("asdfasdfasdf222222222222222222dsaf2222222222214123q5", Place3)
        res.send({ error: "Place.address is null" })
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
112
113
    }
    else {
baesangjune's avatar
baesangjune committed
114
        let addresse = Place3.split(' ')[0]
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
115
116
        let AssociationsId = []
        let addressPlaces = new RegExp(`${addresse}`)
117
118
119
        let responsePlaces = await Places.find({ address: addressPlaces }).sort({ updatedAt: -1 })
        //몽구스나 몽고디비에 있는 sort 확인해보고 나열하기.
        console.log("$$$$$$$$$$$4", responsePlaces)
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
120
        res.send(responsePlaces)
Kim, Chaerin's avatar
Kim, Chaerin committed
121
    }
baesangjune's avatar
.    
baesangjune committed
122
123
124
125
126
127
128
    // responsePlaces.map(Association => {
    //     AssociationsId.push(Association._id)
    // })
    // console.log("Associations = ", Associations)
    // res.send(AssociationsId)
}

baesangjune's avatar
.    
baesangjune committed
129

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