본문 바로가기

verdantjuly/Today I Learned

TIL 20230510

728x90

오늘 목표

- 삭제 파트 오류 없이 완성

- 더미데이터 url 한 곳으로 통일 or watcha + daum 논의해서 입력하기 (네이버 og:image 불가)

- 스파르타피디아 완성

- 프로그래머스 코딩테스트 입문 : 두 수의 나눗셈

 

오늘 한 것

- 삭제 파트 오류 없이 완성

- 더미데이터 테스트 입력용 코드 작성

- 원래 정한대로 더미데이터 10개 입력 (네이버, 다음, 왓챠피디아)

- 더미데이터_2 작성 (다음만)

- 스파르타피디아 완성

- 프로그래머스 코딩테스트 입문 : 두 수의 나눗셈

 

0. 미니 팀 프로젝트 [무비스코어] 진행 상황

0-1. 삭제 파트

문제

return 1 을 하였으나 Type Error 가 발생함. 

TypeError: The view function did not return a valid response. The return type must be a string, dict, list, tuple with headers or status, Response instance, or WSGI callable, but it was a int.

시도

jsonify

참고자료 : https://growingsaja.tistory.com/521

해결

jsonify(result) 또는 str(result) 로 해결 가능하다고 하여 jsonify 적용함.

@app.route("/del", methods=["POST"])
def movie_del():
    allmovie = request.get_json()
    reid = allmovie['id']
    repw = allmovie['password']
    db.movies.delete_one({'id':reid,'password':repw})
    return jsonify(1)

알게된 것

필요한 형식대로 리턴하자.

우리의 경우에는 jsonify 로 리턴.

jsonify(result)

 

0-2. 더미데이터

문제

og:title, og:image, og:description 으로

더미데이터 입력 시 각 사이트별 규격이 다르고 통일감이 없음.

- 네이버: og:image 에 영화사진이 없음.

- 다음 : og:description 이 불러와 지지 않음.

- 왓챠피디아 : 제목 뒤에 -왓챠피디아 > ogtitle[0:-8]  문자열 슬라이싱으로 수정 가능

더미데이터 테스트 입력용 코드

다음으로 할 경우 이와 비슷하게 가나

watchapedia 에서 파싱할 경우

title_receive = ogtitle[0:-8] 을 통해 ' - 왓챠피디아' 라는 문자열 떼기 

import requests
from bs4 import BeautifulSoup

uuid1 = str(uuid.uuid1())

@app.route('/save', methods=["POST"])
def savemovie():
    url_receive = request.get_json()['url']
    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(url_receive, headers=headers)
    soup = BeautifulSoup(data.text, 'html.parser')

    ogtitle = soup.select_one('meta[property="og:title"]')['content']
    ogimage = soup.select_one('meta[property="og:image"]')['content']
    ogdesc = soup.select_one('meta[property="og:description"]')['content']

    nickname_receive = request.get_json()['nickname']
    password_receive = request.get_json()['password']
    starPoint_receive = request.get_json()['starPoint']
    comment_receive = request.get_json()['comment']
    title_receive = ogtitle
    desc_receive = ogdesc[0:300]
    imageurl_receive = ogimage
    id_receive = uuid1

    doc = {
        'nickname' : nickname_receive,
        'password' : password_receive,
        'url' : url_receive,
        'starpoint' : starPoint_receive,
        'comment' : comment_receive,
        'title' : title_receive,
        'desc' : desc_receive,
        'imageurl' : imageurl_receive,
        'id' : id_receive
    }
    db.movies.insert_one(doc)
    return jsonify(1)

시도

조원들과 상의 결과 다음 영화만 파싱하기로 하였다.

해결

다음 영화만 파싱.

알게된 점

함께하면 오류도 즐겁다.

 

0-3. 글자 겹침

문제

입력된 더미데이터들의 글자가 겹쳐서 보임

 

 

시도

main.js 의 가져오는 html 의

 <div style=“position:absoulute;bottom:10px; width:100%;">

부분을 삭제

해결

삭제 후 해결 완료

📌 CSS 관련된 부분은 조원께서 다시 손 봐 주시기로 하였다.

알게 된 것

position:absolute 는 div 의 위치를 조정한다.

 

소감

새로운 것들을 많이 알게 되는 것 같다. 

 

1.  javascript : 스파르타피디아

자주 복습하자! 자꾸 잊어버린다....

 

2. javascript : ~~ 

알게 된 점

double tilde ~~

Math.floor() 와 같은 기능을 한다.

단, Math.floor() parseInt 보다 빠르다.

 

 


정리 

필요한 형식대로 리턴하자.

우리의 경우에는 jsonify 로 리턴.

jsonify(result)

 

position:absolute 는 div 의 위치를 조정한다.

 

double tilde ~~

Math.floor() 와 같은 기능을 한다.

단, Math.floor() parseInt 보다 빠르다.

 

소감

조원들에게 물어보면 안 되는 일이 없다. 다들 멋진 개발자 같다!

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20230512  (1) 2023.05.12
TIL 20230511  (1) 2023.05.11
TIL 20230509  (1) 2023.05.09
TIL 20230508  (3) 2023.05.08
TIL 20230506  (1) 2023.05.06