Skip to content

Commit 58212e2

Browse files
committed
feat : 감정 조회 API 추가
1 parent 0695951 commit 58212e2

4 files changed

Lines changed: 29 additions & 3 deletions

File tree

app/diary/router.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ async def create_diary_with_emotion_based_recommendation(
550550
combined_embedding = kobert.get_embedding(best_sentence)
551551

552552
emotion_to_genres = {
553-
0: ["댄스", "랩/힙합"],
553+
0: ["댄스", "록/메탈"],
554554
1: ["R&B/Soul", "댄스"],
555555
2: ["인디음악", "R&B/Soul"],
556556
3: ["R&B/Soul", "인디음악"],

app/emotion/router.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import logging
22
import torch
33
from app.emotion.models import tokenizer, model
4+
from fastapi import APIRouter, Depends
5+
from sqlalchemy.orm import Session
6+
from app.database import get_db
7+
from app.emotion.models import EmotionType
48

9+
router = APIRouter()
510
logger = logging.getLogger(__name__)
611

712
def predict_emotion(text: str):
@@ -28,4 +33,9 @@ def predict_emotion(text: str):
2833
score = topk.values[0][i].item()
2934
logger.info(f"[감정 분석 Top-{i + 1}] ID: {idx}, 확신도: {score:.4f}")
3035

31-
return pred_index, probs.squeeze().tolist()
36+
return pred_index, probs.squeeze().tolist()
37+
38+
@router.get("/emotions", response_model=list[dict])
39+
def get_emotions(db: Session = Depends(get_db)):
40+
emotions = db.query(EmotionType).all()
41+
return [{"id": e.id, "name": e.name} for e in emotions]

app/genre/router.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from app.database import get_db, get_mongodb
44
from app.genre.models import Genre
55
from app.genre.schemas import GenreResponse
6-
6+
from fastapi.responses import JSONResponse
7+
from collections import Counter
78
router = APIRouter()
89

910
@router.get("", response_model=list[GenreResponse], summary="모든 음악 장르 조회", description="저장된 모든 음악 장르를 조회합니다.")
@@ -31,3 +32,16 @@ async def add_genres_from_mongodb(mongodb=Depends(get_mongodb), db: Session = De
3132
db.commit()
3233

3334
return {"message": f"{len(new_genres)}개 장르 추가 완료"}
35+
36+
@router.get("/songs/genre-counts")
37+
async def get_genre_counts(db: Session = Depends(get_mongodb)):
38+
genre_counter = Counter()
39+
40+
cursor = db.song_meta.find({}, {"genre": 1})
41+
42+
async for doc in cursor:
43+
genre_str = doc.get("genre", "")
44+
genres = [g.strip() for g in genre_str.split(",") if g.strip()]
45+
genre_counter.update(genres)
46+
47+
return JSONResponse(content=dict(genre_counter))

app/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from app.songs.router import router as song_router
99
from app.embedding.router import router as embedding_router
1010
from app.statistics.router import router as statistics_router
11+
from app.emotion.router import router as emotion_router
1112

1213
app = FastAPI()
1314

@@ -18,6 +19,7 @@
1819
app.include_router(song_router, prefix="/songs", tags=["songs"])
1920
app.include_router(embedding_router, prefix="/embedding", tags=["embedding"])
2021
app.include_router(statistics_router, prefix="/statistics", tags=["statistics"])
22+
app.include_router(emotion_router, prefix="/emotion", tags=["emotion"])
2123

2224
app.add_middleware(
2325
CORSMiddleware,

0 commit comments

Comments
 (0)