졸업 프로젝트 (16) 썸네일형 리스트형 수정 + 댓글 필터링 # 댓글 필터링인터넷에 올라온 나쁜말 리스트를 가져왔다. 요새 AI로 알아서 걸러주는 여러 API도 많은 것 같긴 한데...시간이 없어서 간단하게 구현!import pandas as pdf = open(os.path.join(BASE_DIR, 'fword_list.txt'), "r", encoding='UTF8')fword_list = f.read().splitlines() 경로는 이전에 내가 BASE_DIR을 설정해놔서 여기랑 파일명을 합쳐 설정해주면 된다. from dislodged_project.settings.base import fword_listprint(fword_list[-1])그리고 fword_list를 불러온 후 잘 되나 확인한다. # posts/views.pyfrom dislodged.. mp3 파일 다루기 - S3 업로드&객체 가져오기 (3) + 좋아요 기능 전에 만든 코드 리팩토링하고~ 멘토링을 진행하며 보이스 추천 기능을 위한 데이터 확보를 위해 댓글(보이스) 추천 기능이 있으면 좋을 것 같다고 하셨다. 그것까지 수정하기. # 리팩토링 class Mp3Upload(APIView): # 댓글 전체 조회 def post(self, request, post_pk, format=None): comments = Comment.objects.filter(post_id=post_pk).order_by('created_at') # 게시글 댓글 가져오고 오래된 순으로 comment_list = [{ "comment_id": comment.id, "speed": comment.author_voice.speed, "pitch": comment.author_voice.pitc.. mp3 파일 다루기 - S3 업로드&객체 가져오기 (2) 지난번에 하던거 이어서! # 모든 댓글 변환&업로드 일단 한 게시글의 comment를 모두 가져오자. class Mp3Upload(APIView): # 댓글 전체 조회 def post(self, request, post_pk, format=None): comments = Comment.objects.filter(post_id=post_pk) comment_list = [{ "comment_id": comment.id, "speed": comment.author_voice.speed, "pitch": comment.author_voice.pitch, "type": comment.author_voice.type, "content": comment.content } for comment in comments].. mp3 파일 다루기 - S3 업로드&객체 가져오기 (1) 문제..?는 아니지만 프로젝트에서 mp3 파일을 다루는 것에 대해 의견차이가 생겼다. 일단 GoogleTTS를 사용해서 텍스트를 Voice Information으로 바꾸기까지는 성공했다. 이것을 위해 모델도 좀 바꿔줬다...댓글 작성자의 voice information을 프론트로 넘기도록! 댓글 하나를 변환하거나, voice 정보를 수정할 때는 따로 저장을 하지 않아도 된다. 하지만 댓글 모두를 모아듣는 것은 저장을 한 후 들려주기를 원한다. 여기에 가능하면 배경음악까지..? 아마 외부 라이브러리를 추가로 설치해야 하고...저장은 s3를 연결해서 따로 수행해야 할 것 같다..ㅜ 가능할까?? # S3 버킷 + 유저 설정 일단 mp3파일을 저장할 S3 버킷을 생성한다. 버킷은 이미지파일 다룰 때 만들었던 것.. 이미지 파일 다루기(AWS S3 이용) # S3 설정하 프론트에서 이미지를 서버에서 불러오도록 요청했다. AWS S3에 이미지를 넣어두고 게시글 객체마다 각기 다른 이미지를 불러올 것이다. 일단 버킷을 하나 만들었다. 사용할 이미지 업로드하기 버킷>내 버킷>권한>버킷정책 편집>정책 생성기 에서 권한을 편집해준다. Actions는 GETObject만 설정해주었다. CORS 설정도 해주기. [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "HEAD", "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [] } ] 이제 객체 URL로 들어가면 이미지가 잘 보인다! # API 수정하기 저 9개의 이미지 객체 중 겹치지 .. Google Cloud TTS 이용하기 + 배포 오류 해결 # TTS(Text-To-Speech) 우리의 핵심..까지는 아니지만 기술 중 하나인 TTS 기술 구현하기. 원래는 이 부분을 AI로 잘..구현하려고 했는데 어렵기도 하고 시중에 나와있는 TTS API가 잘 되어있어서 이걸 이용하기로 했다. Google TTS를 이용하기로 함. 잘 모를때는 그냥 type이나 pitch, speed 등의 voice 정보를 주면 프론트에서 변환하면 된다고 생각했지만...프론트는 보안상(?)의 이유로 안된다고 함. 그럼 내가 구현해야지..🥲 인터넷 많이 참고했다. # Google API 사용하기 1. Google cloud plaform에 가입하고 프로젝트 만들고 사용할 라이브러리(API) 설치 이때 결제 정보 입력해야 하는데 유료 결제 활성화만 안하면 결제 안된다. http.. Signal을 이용하여 Profile 자동 생성하기 + RDS 접속 # 회원가입시 User의 Voice_Info 객체 생성하기 Django는 특정 작업이 발생하면 분리된 다른 앱에서 신호를 받아 특정 작업을 수행하는 Signal 기능이 존재한다. 파라미터는 다음이 있다. sender : 신호를 수신할 특정 발신 receiver : 신호에 연결될 callback 함수 weak : 기본적으로 weak reference라고 한다. 이건 잘 모르겠다... dispatch_uid : 중복 신호가 전송되는 경우 구별하기 위한 식별자 나는 sender, 즉 유저 회원가입 작업이 발생하면 그 user와 일대일로 매칭되는 voice_info 객체를 생성하는 receiver 함수를 만들 것이다. # models.py class Voice_Info(models.Model): user = m.. cors + 기능 수정하기 # cors 정리 개발을 하다가 preflight request 에러가 났다. cors에러 같은데 이참에 cors에 대해 정복하고 가자. cors 란? Cross-Origin-Resource-Sharing의 약자. 교차-출처 리소스 공유. 즉 다른 출처(Protocol, Host, Port 등이 다른)간의 요청으로 발생하는 에러이다. 참고로 cors 에러는 브라우저에서 판단한다. 즉, 서버는 요청을 받으면 정상적으로 응답하고 브라우저가 판단 후 버리거나 사용함. SOP(Same-Origin Policy)의 예외 조항이 cors이다. SOP는 무조건 같은 출처만 리소스를 공유할 수 있는 웹 정책인데, SOP 정책 기반에서 예외로 cors를 지킨다면 다른 출처라도 리소스 공유를 허락하는 것! cors의 기본.. 이전 1 2 다음