Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback #1

Open
wants to merge 228 commits into
base: feedback
Choose a base branch
from
Open
Changes from 6 commits
Commits
Show all changes
228 commits
Select commit Hold shift + click to select a range
74478da
Setting up GitHub Classroom Feedback
github-classroom[bot] Jan 29, 2024
8e48c26
Create PULL_REQUEST_TEMPLATE.md
GangBean Feb 28, 2024
fb4385e
Create feature_request.md
GangBean Feb 28, 2024
de5e98f
Create bug_report.md
GangBean Feb 28, 2024
264c8bf
feat: 유저, 인터렉션 크롤링 코드 업로드 #2
twndus Mar 1, 2024
4156fc4
feat: 더보기 버튼을 눌러 전체 후기를 수집하도록 보완 #2
twndus Mar 1, 2024
e3a1a26
feat: 유저 레시피 크롤링 구현 #2
GangBean Mar 1, 2024
661d9da
feat: 레시피 리뷰어 크롤링 구현 #2
GangBean Mar 1, 2024
ed4d92a
refactor: 레시피, 리뷰 크롤링 결과 버저닝 #2
GangBean Mar 1, 2024
e10ed85
[Fix] 이슈 템플릿 디렉토리명 변경
GangBean Mar 2, 2024
c978a2c
[Fix] 이슈 템플릿 디렉토리명 변경_Bug template
GangBean Mar 2, 2024
4c43d25
Merge branch 'feat/2-usercrawl' of https://github.com/boostcampaitech…
GangBean Mar 2, 2024
864c1e3
feat: CLI로 실행 가능하도록 수정 #2
GangBean Mar 2, 2024
e35702a
fix: 레시피 크롤링 전체 레시피 수 파싱시 Decimal Point 제거하도록 수정 #2
GangBean Mar 2, 2024
3e85d98
feat: 몽고DB 테스트 구현 #2
GangBean Mar 2, 2024
a003174
feat: 가격 정보 크롤링 구현: 임시 입력 #2
GangBean Mar 2, 2024
5becea8
feat: 레시피 후기쓴 유저 기준으로 크롤링하는 코드 추가 & 데이터 버저닝 및 interaction 발생 날짜 기록하도록…
twndus Mar 5, 2024
4e57552
fix: save_result 형식을 변경하였는데 미처 적용되지 않은 오류 코드 제거 #2
twndus Mar 6, 2024
cd4aca5
feat: 병렬처리를 위해 레시피이름과 유저명을 리소스 개수에 맞게 분할 #2
twndus Mar 6, 2024
6c9736f
feat: 프로젝트 패키지 구조 설정
GangBean Mar 9, 2024
8daca46
feat: frontend포함 패키지 구조 재설정 #3
GangBean Mar 9, 2024
116f931
feat: test패키지 위치 변경 #3
GangBean Mar 9, 2024
167a81c
Merge pull request #4 from boostcampaitech6/feat/3
twndus Mar 9, 2024
ae3ed4f
feat: 랭킹 탭 크롤링 구현 및 keyboardinterrupt 에러 처리 구현 #2
twndus Mar 9, 2024
c994964
feat: .env파일 경로 찾기 구현 #5
GangBean Mar 9, 2024
14e4eb0
feat: .gitignore 추가 #5
GangBean Mar 9, 2024
cf83f8e
refactor: 환경변수파일 경로찾기 테스트 parametrize로 변경
GangBean Mar 9, 2024
4404e14
test: 데이터소스 생성 정상 테스트 추가
GangBean Mar 9, 2024
97f2180
feat: 데이터베이스 반환 기능 추가
GangBean Mar 9, 2024
b95ba46
feat(RecommendationPage,-utils): 상단 메뉴바 및 RecommendationPage 구현
twndus Mar 9, 2024
03bbcf9
feat: 데이터베이스 및 컬렉션 검증 및 반환 기능 구현
GangBean Mar 9, 2024
aab5c7e
feat(RecommendationHistoryPage): 추천 히스토리 페이지 추가 구현
twndus Mar 10, 2024
56f8f91
feat(ResultPage1): ResultPage1 구현 & 장바구니 피드백 기능은 utils에 모듈화
twndus Mar 10, 2024
ac38b2f
feat(pages/RecommendationHistoryPage): mock API로 파라미터를 전송하고 응답을 받아 처리…
twndus Mar 10, 2024
46313af
feat: 유저 필요 테스트 정의
GangBean Mar 11, 2024
29a16a6
test: 회원가입 테스트 구조 작성
GangBean Mar 11, 2024
e20ce72
Feat/5 데이터베이스 환경 설정 (#10)
GangBean Mar 11, 2024
9db9082
Feat/17 commitizen 설정 (#18)
sangwoonoel Mar 11, 2024
11d5c14
build: poetry에 pymongo 추가
sangwoonoel Mar 12, 2024
425cb3c
refactor(Home,-pages): Mock API 를 호출하여 결과를 받도록 변경, 멀티세션 및 st 멀티페이지를 통…
twndus Mar 12, 2024
f50125f
feat: 유저 API 구조 설정
GangBean Mar 12, 2024
f2f61b8
refactor: 재료 및 레시피 전체를 받아오도록 변경 (next_page_url 활용) & 공통 코드 블록 모듈화
twndus Mar 12, 2024
00df9d5
feat(UserHistoryPage,-Result-page-2): UserHistoryPage, Result-page-2 구현
twndus Mar 12, 2024
a0be9ba
chore: crawling 스크립트 디렉토리 내부로 이동 & 전체 결과 병합 코드 추가 #2
twndus Mar 12, 2024
04d0e1f
feat: 유저 API 컨트롤러 작성
GangBean Mar 12, 2024
81e4ec3
feat: 유저 service 클래스 구조 작성
GangBean Mar 12, 2024
8bdff7d
feat: 유저 회원가입, 로그인, 중복체크, 선호상품조회, 선호상품등록 API 구현
GangBean Mar 12, 2024
defcd6c
Merge pull request #27 from boostcampaitech6/feat/2-usercrawl
twndus Mar 13, 2024
0da6634
feat(controller): 유저가 요리한 레시피 목록 조회 API 구현
sangwoonoel Mar 13, 2024
7b8e62a
feat(service): 유저가 요리한 레시피 목록 조회를 위한 기능 구현
sangwoonoel Mar 13, 2024
094fd14
feat(entity): 유저가 요리한 레시피 목록 조회를 위한 entity 생성
sangwoonoel Mar 13, 2024
7c32c5b
feat(repository): 유저가 요리한 레시피 목록 조회를 위한 데이터베이스 접근 코드 구현
sangwoonoel Mar 13, 2024
a32b5b7
feat(utils): MongoDB의 ObjectID 자료형 처리를 위한 PyObjectId 자료형 생성
sangwoonoel Mar 13, 2024
bfb0601
feat(entity): Ingredient, Ingredients entity 생성
sangwoonoel Mar 13, 2024
82523c8
docs: 테스트 코드 및 exception 클래스 정의
GangBean Mar 14, 2024
cfa527a
refactor(entity): 유저 정보를 조회하는 함수 삭제
sangwoonoel Mar 14, 2024
cd07afe
feat(dto): 유저가 요리한 레시피 정보 반환을 위한 response 클래스 구현
sangwoonoel Mar 14, 2024
65687e9
test(test): 유저가 요리한 레시피 목록 조회 테스트 코드 작성
sangwoonoel Mar 14, 2024
4323e17
fix(controller): 유저가 요리한 레시피 목록 조회 API 반환 값 타입 변경
sangwoonoel Mar 14, 2024
88bf840
fix(repository): select_ingredients_by_ingredients_id 함수의 return 값 ty…
sangwoonoel Mar 14, 2024
ac51e4d
test(test): 재료 조회 테스트 코드 추가
sangwoonoel Mar 14, 2024
0520965
feat(service): user_id로 recipes_id를 함께 조회하던 로직을 user 조회와 recipes_id 조…
sangwoonoel Mar 14, 2024
8b030d6
fix(dto): API 응답에 유저가 요리한 recipes_id와 next_page_url 추가
sangwoonoel Mar 14, 2024
dff9dbb
fix(entity): 유저가 추천받은 레시피 조회를 위한 메소드 생성
sangwoonoel Mar 14, 2024
f9994a4
feat(controller): 유저가 추천 받은 레시피 조회 API 구현
sangwoonoel Mar 14, 2024
a0fd567
refactor(controller): 유저가 추천 받은 레시피와와 요리한 레시피의 아이디를 recipes_id에 함께 저장…
sangwoonoel Mar 14, 2024
8d60b83
test(test): 유저가 추천 받은 레시피 목록 조회 API 테스트 작성
sangwoonoel Mar 14, 2024
f870eda
feat(service): 유저가 요리한 레시피 리스트를 수정하는 기능 구현
sangwoonoel Mar 14, 2024
25c7a3b
feat(repository): 유저 요리한 레시피 리스트를 수정을 위한 데이터베이스 업데이트 코드 작성
sangwoonoel Mar 14, 2024
50d6120
feat(dto): 유저 요리한 레시피 리스트를 수정 요청을 위한 dto 클래스 생성
sangwoonoel Mar 14, 2024
36b167b
feat(controller): 유저가 요리한 레시피 리스트 수정 API 구현
sangwoonoel Mar 14, 2024
4620bec
refactor(repository): RecipesRepository를 클래스로 관리하도록 코드 수정
sangwoonoel Mar 14, 2024
883e285
refactor(service): RecipesService를 클래스로 관리하도록 코드 수정
sangwoonoel Mar 14, 2024
6832d1c
test(test): 유저가 요리한 레시피 수정 API 테스트 작성
sangwoonoel Mar 14, 2024
8a690e6
feat: 레시피 추천 API 구조 설정 #11
GangBean Mar 15, 2024
ff24458
Merge pull request #28 from boostcampaitech6/feat/21-user-feedback-re…
GangBean Mar 15, 2024
d3d155e
fix(service): get_ingredients_list_by_recipes 메소드의 반환 값 type hint를 Li…
sangwoonoel Mar 15, 2024
0d2b2da
Merge pull request #29 from boostcampaitech6/feat/22-user-feedback
GangBean Mar 15, 2024
a24a258
Delete .gitignore
GangBean Mar 15, 2024
8e87c2c
Delete README.xxx
GangBean Mar 15, 2024
be54c70
Merge branch 'main' into feat/11
GangBean Mar 15, 2024
fe1024b
Merge pull request #30 from boostcampaitech6/feat/11
GangBean Mar 15, 2024
be5bd6f
feat: 유저 API 오류 수정 및 datasource ip 변경 #32
GangBean Mar 15, 2024
887e05c
Merge pull request #33 from boostcampaitech6/fix/32
GangBean Mar 15, 2024
90ddffa
fix: 회원가입 API 수정 #32
GangBean Mar 15, 2024
13ed9a9
Merge pull request #34 from boostcampaitech6/fix/32
GangBean Mar 15, 2024
92d0a35
Merge remote-tracking branch 'origin/feat/fe-recommend' into fe-recipe
uhhyunjoo Mar 15, 2024
ef6118a
feat: Update app.py
uhhyunjoo Mar 15, 2024
5b136fc
Merge pull request #35 from boostcampaitech6/fe-recipe
uhhyunjoo Mar 15, 2024
cbac71c
Update requirements.txt
uhhyunjoo Mar 15, 2024
2cef316
Merge pull request #36 from boostcampaitech6/fe-recipe
uhhyunjoo Mar 15, 2024
45bb7e8
fix: 내가 요리한 레시피 API 404 Not Found 수정 #37
GangBean Mar 15, 2024
71d5777
fix: 내가 요리한 레시피 API 404 Not Found 수정 #37
GangBean Mar 15, 2024
8bc2218
feat: 페이지 상단에 로그인, 회원가입 버튼 구현 #40
twndus Mar 16, 2024
56616e4
feat: 회원가입, 로그인 버튼 디자인 변경 & 회원 가입, 로그인 구현 & 웹 로고 클릭 시 새로고침되도록 변경#41 #42
twndus Mar 16, 2024
f7e3849
feat: login 전 메인페이지 구현 #40
twndus Mar 16, 2024
18290e5
feat: recommendation 페이지 구현 & st.session_state에서 user_id 사라지는 것 token…
twndus Mar 16, 2024
208e61e
feat: 로그인 후 메인 페이지 구현 (현재는 더보기 안됨) #43
twndus Mar 16, 2024
8dd486b
feat: 추천 결과 페이지 구현 #9
twndus Mar 16, 2024
82437fb
feat: 유저 피드백 히스토리, 유저 추천 히스토리 페이지 구현 #7 #8
twndus Mar 16, 2024
cb099f8
chore: 불필요한 코드줄 제거
twndus Mar 16, 2024
856e78f
feat: front-end development dependency upload
twndus Mar 18, 2024
6d372d1
fix: 1차 배포 테스트 오류 수정
GangBean Mar 18, 2024
771d62c
feat: 가격정보 조회 메소드 추가
GangBean Mar 18, 2024
2eb4795
feat: 재료 ID set 조회 메소드 추가
GangBean Mar 18, 2024
b8e228e
feat: 재료 가격정보 조회 메소드 추가
GangBean Mar 18, 2024
f4e3f66
feat: 장바구니 추천 서비스 메소드 구현
GangBean Mar 18, 2024
b8225db
feat: 레시피 및 재료 출력 폼 변환 메소드 구현
GangBean Mar 18, 2024
5d685d7
refactor: 레시피 내 전체 재료 조회 메소드 명 변경
GangBean Mar 18, 2024
00cde62
feat: 레시피 서비스 내 재료 정보 조회 메소드 구현
GangBean Mar 18, 2024
0a152bb
feat: 유저 컨트롤러 내 추천 API 구현
GangBean Mar 18, 2024
9be1fb1
refactor: 모듈 import 경로 에러 수정
GangBean Mar 18, 2024
06e86fe
feat: 유저 선호 후보 레시피 조회 개수 16개로 수정
GangBean Mar 18, 2024
7009280
feat: 레시피 내 재료 키값 변경 ingredient -> ingredients
GangBean Mar 18, 2024
3588d34
fix: 장바구니 생성 결과 저장 컬렉션 변경
GangBean Mar 18, 2024
7ff4975
feat: 유저 선호 음식 추천 최소 요구 개수 수정 및 next_page 리턴 추가
GangBean Mar 18, 2024
153707b
feat: signinpage-2 구현 #44
GangBean Mar 18, 2024
6365a76
fix: 히스토리 페이지에 헤더 추가 #7 #8
GangBean Mar 18, 2024
3a78513
build: front-end poetry settings file update
GangBean Mar 18, 2024
ec6c321
feat: signinpage-2 구현 #44
twndus Mar 18, 2024
a31f1c5
fix: 히스토리 페이지에 헤더 추가 #7 #8
twndus Mar 18, 2024
8110ef7
build: front-end poetry settings file update
twndus Mar 18, 2024
9f49488
fix: 재로그인 시 로그인 폼이 보이지 않는 오류 수정 #47
twndus Mar 18, 2024
0d26dea
feat: 추천 결과 페이지에서 재료별 가격 보여주도록 변경 #6
twndus Mar 18, 2024
891d890
feat: 지금 추천 받기, 새로운 추천 받기 버튼 재구성 & 재로그인시 이전 추천 기록 초기화 #6
twndus Mar 18, 2024
dc85b55
Merge remote-tracking branch 'origin/feat/newfront' into feat/newfront
GangBean Mar 18, 2024
6fa8dab
rafactor: rerun 안해도 피드백이 반영되어서 rerun 코드줄 삭제
GangBean Mar 19, 2024
118aacd
fix: slider 기본 값과 예산이 매칭되지 않는 버그 수정
GangBean Mar 19, 2024
c37033e
chore: poetry 의존성 추가 #50
GangBean Mar 20, 2024
64e7bff
chore: crawling 패키지 구조 설정 #50
GangBean Mar 20, 2024
584d59a
feat: 데이터베이스 모듈 구현 #50
GangBean Mar 20, 2024
dbb9368
chore: pandas 의존성 추가 #50
GangBean Mar 20, 2024
4ad9c38
chore: openai 의존성 추가 #50
GangBean Mar 20, 2024
b06a765
feat: 전처리 클래스 구현 #50
GangBean Mar 21, 2024
b2c5331
feat: 배치 서빙 코드 업로드 #31
twndus Mar 21, 2024
7b48495
Merge pull request #49 from boostcampaitech6/feat/newfront
GangBean Mar 21, 2024
4c21471
Merge pull request #46 from boostcampaitech6/feat/15
GangBean Mar 21, 2024
7c247b6
Exp/model eval (#53)
twndus Mar 21, 2024
e8b6734
Merge pull request #54 from boostcampaitech6/feat/31-inference
GangBean Mar 21, 2024
cd5a0a6
feat: sequential recommendation 학습 코드 업로드 #52
twndus Mar 21, 2024
f903cce
feat: 레시피명 기반 유사 레시피 찾는 기능 연구 #57
twndus Mar 22, 2024
812565f
feat: train_recipe 에 레시피 정보 중 { 레시피, 레시피명 } 컬럼을 가지는 도큐먼트로 추가함 #57
twndus Mar 22, 2024
4f50fe5
feat: ObjectId로 담도록 추가 #50
GangBean Mar 22, 2024
07b667a
feat: train_recipe 도큐먼트를 BERT 임베딩하여 train_recipe에 { embedding: List }…
twndus Mar 22, 2024
8869522
feat: train_recipe 도큐먼트를 읽어 유사한 레시피명을 가지는 레시피를 { closest_recipe: str …
twndus Mar 22, 2024
848031d
Add price db crawling script
uhhyunjoo Mar 22, 2024
e52652a
Update exception
uhhyunjoo Mar 22, 2024
2c3b6d8
fix: recipes 가 아닌 train_recipes 업데이트하도록 변경 및 DB 업데이트
twndus Mar 22, 2024
9930d57
feat: context-aware 추천을 위한 데이터 준비
sangwoonoel Mar 23, 2024
3199394
feat: context-aware 추천을 위한 Recbole quick start 구현
sangwoonoel Mar 23, 2024
0ca7302
Merge pull request #60 from boostcampaitech6/exp/model-cb
GangBean Mar 24, 2024
2d609b5
Merge pull request #61 from boostcampaitech6/exp/model-seq
GangBean Mar 24, 2024
811f357
Merge branch 'main' into feat/39
GangBean Mar 24, 2024
bc2a246
Merge pull request #63 from boostcampaitech6/feat/39
GangBean Mar 24, 2024
32fcb00
Merge pull request #64 from boostcampaitech6/feat/50
GangBean Mar 24, 2024
a1b14f1
feat: 가격 크롤링 모듈 구현 #65
GangBean Mar 24, 2024
7b63c5b
feat: sasrec 기반 추론되도록 변경 (cb 및 total은 아직 적용되지 않음, 현재 유저 데이터의 레시피가 인식 …
twndus Mar 24, 2024
5b25607
feat: 가격 정보 크롤링 구현 #65
GangBean Mar 24, 2024
5012934
fix: 장바구니 추천 기능 오류 수정 #67
GangBean Mar 24, 2024
d4a9228
feat: 재료 이미지 추가 및 로깅 제거 #67
GangBean Mar 24, 2024
782feee
fix: 장바구니 추천 결과 유저 콜렉션 미반영 오류 수정 #67
GangBean Mar 24, 2024
c2d08a2
fix: 장바구니 가격 정보 누락 수정 #67
GangBean Mar 24, 2024
af595e8
feat: 리스트 갯수 초과시 렌더링 오류 수정 및 더보기 버튼 추가 #67
GangBean Mar 24, 2024
3598816
feat: 이미지 링크 레시피 링크로 변경 #67
GangBean Mar 24, 2024
2e4f433
feat: CB 추천 및 블랜딩 기능 구현 #62
twndus Mar 24, 2024
55a0501
feat: 실시간 서빙 dag 구현 #66
twndus Mar 24, 2024
4063383
refactor: 리뷰+레시피 데이터에서 리뷰 데이터만 활용하도록 변경
twndus Mar 24, 2024
c3e15b0
Merge pull request #69 from boostcampaitech6/exp/model
twndus Mar 24, 2024
4df6739
Merge pull request #70 from boostcampaitech6/feat/62-serving
twndus Mar 24, 2024
a1102ae
feat: 실시간 서빙 기능 구현 #66
GangBean Mar 25, 2024
18832b9
feat: 장바구니 추천시 서빙 대상 미존재 알림 추가 #67
GangBean Mar 25, 2024
4c0e3fd
feat: top k 레시피 가장 최신 대상 조회하도록 수정 #67
GangBean Mar 25, 2024
f0f885f
Update price crawling
uhhyunjoo Mar 25, 2024
bcc7e6a
fix: 가격정보 merge 오류 수정 #67
GangBean Mar 25, 2024
33a6842
Merge pull request #74 from boostcampaitech6/feat/59-crawl-price
uhhyunjoo Mar 25, 2024
ac1e458
fix: 추천하기 오류 수정 #67
GangBean Mar 25, 2024
27d7e75
Merge branch 'main' into feat/65
uhhyunjoo Mar 25, 2024
8aa4e0d
Merge pull request #68 from boostcampaitech6/feat/65
uhhyunjoo Mar 25, 2024
bca4e67
Fix _id to ingredient_id
uhhyunjoo Mar 25, 2024
2350965
Fix _id to ingredient_id
uhhyunjoo Mar 25, 2024
bdbd1b3
Update import
uhhyunjoo Mar 25, 2024
8bb0c97
Merge branch 'main' into feat/59-crawl-price
uhhyunjoo Mar 25, 2024
4bd58b4
Merge pull request #75 from boostcampaitech6/feat/59-crawl-price
uhhyunjoo Mar 25, 2024
d415120
Merge branch 'main' of https://github.com/boostcampaitech6/level2-3-r…
uhhyunjoo Mar 25, 2024
4bba0bf
Merge pull request #76 from boostcampaitech6/fix/67
GangBean Mar 25, 2024
ff08782
Merge branch 'main' of https://github.com/boostcampaitech6/level2-3-r…
uhhyunjoo Mar 26, 2024
5803948
fix: streamlit 사용 중 프론트엔드 오류 수정
uhhyunjoo Mar 26, 2024
5ef7df3
update: how to image
uhhyunjoo Mar 26, 2024
3310b63
Merge pull request #80 from boostcampaitech6/feat/79-frontend
uhhyunjoo Mar 26, 2024
0a66b29
update: 설명 수정
uhhyunjoo Mar 26, 2024
186a714
Merge pull request #81 from boostcampaitech6/feat/79-frontend
uhhyunjoo Mar 26, 2024
32dc652
feat: missing pages
uhhyunjoo Mar 27, 2024
8c84bd1
feat: missing home
uhhyunjoo Mar 27, 2024
695d2b4
Merge pull request #82 from boostcampaitech6/feat/79-frontend
uhhyunjoo Mar 27, 2024
b340ead
feat: 추천 불가시 메시지 출력 추가 #83
GangBean Mar 28, 2024
d63c730
feat: 웹페이지 UI 수정 #83
GangBean Mar 28, 2024
4c8f8e3
feat: 새로고침시 session_state key 오류 수정 #83
GangBean Mar 28, 2024
74f2f1a
feat: 메인 페이지 제외 헤더 내 회원가입 및 로그인 버튼 제거 #83
GangBean Mar 28, 2024
d09bcbc
feat: 추천결과 페이지 내 헤더 추가 #83
GangBean Mar 28, 2024
ff45cb2
feat: 로고 링크 public IP domain 으로 변경 #83
GangBean Mar 28, 2024
264fb09
style: 스타일 수정 #83
GangBean Mar 28, 2024
33ad3e3
fix: 슬라이더와 예산 불일치 수정 #83
GangBean Mar 29, 2024
9b7501b
fix: 특정 유저 데이터가 아닌 모든 서비스 유저의 데이터로 배치 서빙하도록 변경 #71
twndus Mar 29, 2024
8c02338
fix: popularity 기반 네거티브 샘플링한 SASRec 모델로 업데이트 #71
twndus Mar 29, 2024
bfb3d75
Merge pull request #86 from boostcampaitech6/fix/71-serve
twndus Mar 29, 2024
8351b5d
Revert "Fix/71-serve"
twndus Mar 29, 2024
5a96684
Merge pull request #87 from boostcampaitech6/revert-86-fix/71-serve
twndus Mar 29, 2024
f7c2390
fix: initial_feedback 없는 유저 서빙하지 않도록 에러 처리 #88
twndus Mar 29, 2024
b5a4e6d
feat: model version update #88
twndus Mar 29, 2024
205b2ba
Merge pull request #89 from boostcampaitech6/fix/88-serve
twndus Mar 29, 2024
ec0afe9
feat: 모델 학습 모듈 구현 #77
sangwoonoel Mar 29, 2024
956e647
feat: 모델 학습에 사용되는 utils 기능 구현 #77
sangwoonoel Mar 29, 2024
4e6a303
build: 모델 학습을 위한 config 파일 작성 #77
sangwoonoel Mar 29, 2024
e3fa6f3
build: MLProject 파일과 파이썬 환경 파일 생성 #77
sangwoonoel Mar 29, 2024
a95a6e9
feat: 모델 서빙을 위해 모델을 불러오는 모듈 구현 #77
sangwoonoel Mar 29, 2024
8f1d42b
build: 모델 서빙을 위한 config 파일 생성 #77
sangwoonoel Mar 29, 2024
63d0033
refactor: train.py에 있던 코드들을 분리하고 함수로 변경 #77
sangwoonoel Mar 29, 2024
b9af315
fix: artifact 저장 경로를 config에서 관리하도록 코드 수정 #77
sangwoonoel Mar 29, 2024
eeebe74
Create README.md
GangBean Apr 1, 2024
1282312
Create preview.html
GangBean Apr 1, 2024
574150d
Update preview.html
GangBean Apr 1, 2024
9f5cef8
Rename preview.html to preview.html
GangBean Apr 1, 2024
a8da178
Update README.md
GangBean Apr 1, 2024
ce19718
Delete _includes directory
GangBean Apr 1, 2024
d253881
Merge pull request #84 from boostcampaitech6/fix/83
GangBean Apr 2, 2024
04d3731
Merge pull request #72 from boostcampaitech6/exp/model-car
twndus Apr 7, 2024
8bada88
feat: General 모델 학습을 위한 RecBole 코드 #73
sangwoonoel Apr 11, 2024
a3d6f64
Merge pull request #90 from boostcampaitech6/feat/77-mlflow
sangwoonoel Apr 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions crawl_recipe.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
import re, os
from datetime import datetime as dt

import pandas as pd
from tqdm import tqdm

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.common.exceptions import UnexpectedAlertPresentException

from bs4 import BeautifulSoup

def get_userid_set():
# filenames
RECIPE_FILE1 = 'TB_RECIPE_SEARCH-220701.csv'
RECIPE_FILE2 = 'TB_RECIPE_SEARCH-20231130.csv'

# read file
recipe_df_22 = pd.read_csv(RECIPE_FILE1, engine='python', encoding='cp949', encoding_errors='ignore') # EUC-KR, utf-8, cp949, ms949, iso2022_jp_2, iso2022_kr johab
recipe_df_23 = pd.read_csv(RECIPE_FILE2, engine='python', encoding='cp949', encoding_errors='ignore')

# union recipes
recipeset_22 = set(recipe_df_22['RGTR_ID'].values)
recipeset_23 = set(recipe_df_23['RGTR_ID'].values)
recipeset_all = recipeset_22 | recipeset_23

print(len(recipeset_22), len(recipeset_23), len(recipeset_all))
return recipeset_all

def get_html_source(driver, uid:str='pingky7080', page_no=1):
url = f'https://m.10000recipe.com/profile/recipe.html?uid={uid}&page={page_no}'
driver.get(url) # url 접속
driver.implicitly_wait(3)

return driver.page_source

def parse_user_recipes(soup):
user_recipes = list()
for recipe in soup.find('div', 'recipe_list').find_all('div', 'media'):
recipe_id = parse_recipe_id(recipe)
if len(recipe_id) <= 0: continue
user_recipes.append(recipe_id)

return user_recipes

def parse_recipe_id(review):
recipe_id = ''
onclick_attr = review.get('onclick')
if onclick_attr:
match = re.search(r"location.href='([^']+)'", onclick_attr)
if match:
# URL 출력
url = match.group(1)
recipe_id = url.split('/')[-1]
return recipe_id

def save_results(data_list):

# build df
df = pd.DataFrame(data_list)
date = dt.now().strftime('%y%m%d')

PATH = f'recipes_{date}.csv'
if os.path.exists(PATH):
# save
df.to_csv(PATH, mode='a', index=False, header=False)
else:
df.to_csv(PATH, index=False)


def main():
# get all user ids
recipeid_set = get_userid_set()

# get automative driver
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

# collect data by user id
for i,uid in enumerate(tqdm(recipeid_set)):
try:
html_source = get_html_source(driver, uid)
soup = BeautifulSoup(html_source, 'html.parser')
num_recipe = int(soup.find('div', 'myhome_cont').find('li', 'active').find('p', 'num').text)

next_page_num: int = num_recipe // 20
user_recipes = list()
user_recipes.extend(parse_user_recipes(soup))

for page_no in range(2, next_page_num+2):
# parsing
next_page_source = get_html_source(driver, uid, page_no)
soup = BeautifulSoup(next_page_source, 'html.parser')

# parse review by recipes
user_recipes.extend(parse_user_recipes(soup))

if len(user_recipes) > 0:
save_results([{
'uid': uid,
'recipes': user_recipes,
}])
except UnexpectedAlertPresentException:
continue

if __name__ == '__main__':
main()
111 changes: 111 additions & 0 deletions crawl_review.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import re
from datetime import datetime as dt

import pandas as pd
from tqdm import tqdm

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By

from bs4 import BeautifulSoup

def get_userid_set():
# filenames
RECIPE_FILE1 = 'TB_RECIPE_SEARCH-220701.csv'
RECIPE_FILE2 = 'TB_RECIPE_SEARCH-20231130.csv'

# read file
recipe_df_22 = pd.read_csv(RECIPE_FILE1, engine='python', encoding='cp949', encoding_errors='ignore') # EUC-KR, utf-8, cp949, ms949, iso2022_jp_2, iso2022_kr johab
recipe_df_23 = pd.read_csv(RECIPE_FILE2, engine='python', encoding='cp949', encoding_errors='ignore')

# union users
userset_22 = set(recipe_df_22['RGTR_ID'].values)
userset_23 = set(recipe_df_23['RGTR_ID'].values)
userset_all = userset_22 | userset_23

print(len(userset_22), len(userset_23), len(userset_all))
return userset_all

def get_html_source(driver, uid:str=16221801):

url = f'https://m.10000recipe.com/profile/review.html?uid={uid}'
driver.get(url) # url 접속
driver.implicitly_wait(2)

# 후기 수// 10 만큼 더보기 버튼 누르기
num_review = int(driver.find_element(By.CLASS_NAME, 'myhome_cont').find_element(By.CLASS_NAME, 'active').find_element(By.CLASS_NAME, 'num').text)

for i in range(num_review//10):
btn_href = driver.find_elements(By.CLASS_NAME, 'view_btn_more')[-1].find_element(By.TAG_NAME, 'a')
driver.execute_script("arguments[0].click();", btn_href) #자바 명령어 실행
driver.implicitly_wait(2)

# 페이지의 HTML 소스 가져오기
return driver.page_source

def parse_recipe_id(review):
recipe_id = ''
onclick_attr = review.get('onclick')
if onclick_attr:
match = re.search(r"location.href='([^']+)'", onclick_attr)
if match:
# URL 출력
url = match.group(1)
recipe_id = url.split('/')[-1]
return recipe_id

def save_results(data_list):

# build df
df = pd.DataFrame(data_list)
date = dt.now().strftime('%y%m%d')

PATH = f'reviews_{date}.csv'

# save
df.to_csv(PATH)


def main():
# get all user ids
userid_set = get_userid_set()

# get automative driver
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

# datalist
data_list = []

# collect data by user id
for i,uid in enumerate(tqdm(userid_set)):

try:
html_source = get_html_source(driver, uid) # temporarily fixed
soup = BeautifulSoup(html_source, 'html.parser')

nickname = soup.find('p', 'pic_r_name').text.split('\n')[0].strip()

# parse review by recipes
user_history = dict()
for review in soup.find('ul', id='listDiv').find_all('div', 'media'):
recipe_id = parse_recipe_id(review)
if len(recipe_id) <= 0: continue
rating = len(review.find('span', 'view2_review_star').find_all('img'))
user_history[recipe_id] = rating

if len(user_history) > 0:
data_list.append({
'uid': uid,
'user_name': nickname,
'history': user_history,
})
except:
continue

# save results
save_results(data_list)

if __name__ == '__main__':
main()
82 changes: 82 additions & 0 deletions crawl_reviewer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import os
from datetime import datetime as dt
from tqdm import tqdm
import pandas as pd

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

from bs4 import BeautifulSoup

def get_recipesno_set():
# filenames
RECIPE_FILE1 = 'TB_RECIPE_SEARCH-220701.csv'
RECIPE_FILE2 = 'TB_RECIPE_SEARCH-20231130.csv'

# read file
recipe_df_22 = pd.read_csv(RECIPE_FILE1, engine='python', encoding='cp949', encoding_errors='ignore') # EUC-KR, utf-8, cp949, ms949, iso2022_jp_2, iso2022_kr johab
recipe_df_23 = pd.read_csv(RECIPE_FILE2, engine='python', encoding='cp949', encoding_errors='ignore')

# union recipes
recipeset_22 = set(recipe_df_22['RCP_SNO'].values)
recipeset_23 = set(recipe_df_23['RCP_SNO'].values)
recipeset_all = recipeset_22 | recipeset_23

print(len(recipeset_22), len(recipeset_23), len(recipeset_all))
return recipeset_all

def get_html_source(driver, sno:str=1785098):

url = f'https://www.10000recipe.com/recipe/{sno}'
driver.get(url) # url 접속
driver.implicitly_wait(2)

# 페이지의 HTML 소스 가져오기
return driver.page_source

def save_results(data_list):

# build df
df = pd.DataFrame(data_list)
date = dt.now().strftime('%y%m%d')

PATH = f'reviewers_{date}.csv'
if os.path.exists(PATH):
# save
df.to_csv(PATH, mode='a', index=False, header=False)
else:
df.to_csv(PATH, index=False)

def main():
# get all recipe snos
recipe_snos = get_recipesno_set()
# get automative driver
# driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager(driver_version='122.0.6261.94').install()))

# collect data by recipe snos
for i, rsno in enumerate(tqdm(recipe_snos)):
try:
html_source = get_html_source(driver, rsno)
soup = BeautifulSoup(html_source, 'html.parser')

reviews = soup.find_all('div', 'view_reply st2')
if len(reviews) == 0: continue
reviews = reviews[1].find_all('div', 'media-left')
recipe_reviewers = list()
for review in reviews:
recipe_reviewers.append(review.find('a')['href'].split('=')[-1])

save_results([{
'recipe_sno': rsno,
'reviewers': recipe_reviewers
}])
except KeyboardInterrupt:
exit()
except:
continue

if __name__ == '__main__':
main()