[ 항해99] 부트캠프 3일차 Web project
항해 99
3일차 : 월요일 화요일 모두 새벽 2시까지 비비다가 잤는데, 혼자서 공부했엇더라면 오늘 아침에 못일어났겟지,
9시시전부터일어나서 게더타운접속했다.
질문 : list 에있는 item 을 하나씩 빼서 dictraiony 안으로 집어넣을순없나?
검색을 해봤는데 나오지가않는다.
네이버 API 로 받아와서 , 딕셔너리 형태에 영화 줄거리를 추가해주려고헀는데 추가가 안됐다.
API로 영화 검색을 하면 이렇게 아래처럼나온다.
{'lastBuildDate': 'Wed, 09 Jun 2021 15:19:46 +0900',
'total': 31,
'start': 1,
'display': 20,
'items': [{'title': '극장판 <b>짱구</b>는 못말려: 신혼여행 허리케인~ 사라진 아빠!',
'link': 'https://movie.naver.com/movie/bi/mi/basic.nhn?code=183772',
'image': 'https://ssl.pstatic.net/imgmovie/mdi/mit110/1837/183772_P08_181006.jpg',
'subtitle': '映&#30011;クレヨンしんちゃん\u3000新婚旅行ハリケ&#12540;ン ~失われたひろし~',
'pubDate': '2019',
'director': '하시모토 마사카즈|',
'actor': '박영남|김환진|강희선|여민정|정유미|',
'userRating': '9.02'},
{'title': '극장판 <b>짱구</b>는 못말려: 아뵤! 쿵후 보이즈 ~라면 대란~',
'link': 'https://movie.naver.com/movie/bi/mi/basic.nhn?code=172975',
'image': 'https://ssl.pstatic.net/imgmovie/mdi/mit110/1729/172975_P10_141815.jpg',
'subtitle': 'Crayon Shin-chan Burst Serving Kung Fu Boys Ramen Rebellion',
'pubDate': '2018',
'director': '타카하시 와타루|',
'actor': '박영남|강희선|김환진|여민정|',
'userRating': '8.10'},
1. 내가 한방법은 , 받아온 영화 마다의 link를가지고 beautifulsoup을 돌려서
줄거리를 가져와서 새로 desclist를 만들어줫는데,
줄거리 list에서 줄거리를하나씩 가져와서 , 각각의 영화의끝에 추가해주려고했는데 돼지않는다.
원래 리스트에서 element를가져와서 다른곳에 붙여줄수없는건가?
그래서 다른방법으로 해결을했다.
@app.route('/search/<keyword>', methods=['GET'])
def search(keyword):
r = requests.get(f"https://openapi.naver.com/v1/search/movie.json?query={keyword}&display=20", headers={ "X-Naver-Client-Id": "Uvㅁ9",
"X-Naver-Client-Secret": "ㅁAj"})
result = r.json()
print(result)
print(keyword)
movies = result['items']
movieLinkList=[]
movieDescList=[]
for movie in movies:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(movie['link'], headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
desc = soup.select_one(
"#content > div.article > div.section_group.section_group_frst > div:nth-child(1) > div > div > p")
movie["desc"] = desc.text
print(movies[0])
print(movies[1])
return render_template('search.html', word=keyword, result=result, movies=movies)
그냥 처음에 받아왔을때 , 영화마다 바로 beautiful soup을돌려서 나온결과를 붙여준다.
확실히 이방법이 쉽고 더 빠른방법이긴한데, 아까말한 list에서 item을 가져와서 dictionary에 넣을수없는건가?
질문 : jinaja2 variable 을 다시 falsk로 다시보내기:
html code:
godb().에서 item을 arg로 보내주면 js에 에서 item으로 받아올수가있엇다.
이거 굉장히 많이 찾아봤는데, 못찾었다.
jinja2 variable send to flask 이렇게 찾았엇는데,
{% for item in result['items'] %}
<div class="container">
<h1 id="word" style="display: inline;"> {{ item.title |safe}} </h1>
<div class="box-wrap">
<div class="box" >
<div>
<img src="{{item.image}}" style=" width: 170px; height: 180px" class="movie-img" />
</div>
<button type="button" class="btn btn-secondary" onclick="godb({{ item }})"> 추가하기
<i class="fa fa-plus" aria-hidden="true"></i></button>
</div>
<div class="box" >
<h3 id="word" style="display: inline;"> 출시년도 : {{ item.pubDate |safe}} </h3>
<hr>
<h3 id="word" style="display: inline;"> 감독: {{ item.director|safe }} </h3>
<hr>
<h4 id="word" style="display: inline;"> 배우 :{{ item.actor|safe }} </h4>
</div>
</div>
<div class="desc">
<h4 id="word" style="display: inline;"> 줄거리 :{{ item.desc|safe }} </h4>
</div>
</div>
{% endfor %}
java script
function find_movie(){
let word = $("#input-word").val();
if(word) {
window.location.href=`/search/${word}?status_give=new`
} else {
alert("영화 제목을 입력해주세요!")
}
}
function godb(item){
let title = item['title'];
let image = item['image'];
let pubDate = item['pubDate'];
let actor = item['actor'];
let director = item['director'];
let desc = item['desc'];
let genre = item['genre']
alert("추가완료 ")
$.ajax({
type: "POST",
url: "/search/save",
data: {
title_give: title,
image_give: image,
pubDate_give: pubDate,
actor_give: actor,
director_give: director,
desc_give: desc,
genre_give: genre
},
success: function (response) {
alert(response['msg']);
window.location.href=`/`
}
});
3. Github conflict 생기면 해결방법.
'IT > Bootcamp 항해99' 카테고리의 다른 글
[항해99] 5일차 , TIL회고록 , 깃헙 사용법, 프로젝트 리뷰 (0) | 2021.06.12 |
---|---|
[ 항해99] 부트캠프 4일차 Web project (0) | 2021.06.11 |
[ 항해99] 2일차 Website project (0) | 2021.06.08 |
[ 항해99] 1일차 Website project (0) | 2021.06.08 |
[항해99] 06/3 사전과제 / 준비 웹개발종합반3주차 (0) | 2021.06.06 |