개시하다
무한 dig Spotify 욕심을 타고난 덕에 자동 dig 무서버 API 만들기dig은'노래를 찾다'의 정도를 나타낸다 좋은 곡이 있으면 알려주세요. 결과는 디스코드에 알리는 체제 다음 내용을 시험해 보았다 Spotify API DynamoDB API Gateway(Lamba 통합)
저번와 중복된 부분에 대해 생략된 설명이 있는 부분성과물
등록된 아티스트를 기반으로 Spotify를 통해 관련 아티스트를 자동 검색 검색 결과의 아티스트 이름과 최신 앨범 이름, URL을 Discord에 기고합니다.
구성도
동작 단계는 다음과 같다. DynamoDB에 좋아하는 아티스트 정보를 미리 저장 Lambda가 DynamoDB에서 예술가 정보를 얻기 엠바다 관련 아티스트 검색 + 최신 앨범 정보 Spotify API로 검색 검색 결과 3명 초과 시 무작위로 최대 3명 선택
검색 결과가 DynamoDB에 로그인되어 다음 검색의 피드가 됨람바다는 3.의 검색 결과는 웹hook을 통해 Discord에 알립니다.
검색 결과가 만족스럽지 않으면 람바다 통합 API Gateway를 두드린다.다음 작업을 다시 수행 Eventbridge를 통한 정기적인 Lambda 웹 훅의 URL 등 Lambda에서 사용하는 매개 변수는 Systems Manager에 저장이루어지다
창고는 전체적으로 이쪽https://github.com/mini-hiori/spotify-digger Spotify API 사용(음악가 읽어들이기)
Spotify 검색을 위해서는 Spotify API 사용권이 필요합니다. 스포티파이 계정이 있으면 비즈니스가 아니면 무료참고 자료 Pytohon에서 Spotify API 사용spotipy 관련 아티스트의 검색은 spotipy의artist입니다.related_artists 함수를 사용합니다.예를 들어우리 관련 예술가를 획득하면 아래 코드를 사용할 수 있다.
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
# SpotifyAPI有効化時に提示されるclient_idとclient_secretを渡す
client_id = 'xxxx'
client_secret = 'xxxx'
# 認証
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
# 関連アーティストの検索
mini_hiori_uri = "spotify:artist:1nSdmeM9MUMLbhoKdf0JS0"
spotify.artist_related_artists(mini_hiori_uri)
검색에 사용되는 키의 Spotify URI(Spotify 옆에 부여된 아티스트의 독특한 키)는 아래 그림처럼 Spotify 공유 버튼에서 얻을 수 있다
DynamoDB(음악가 정보 저장)
DynamoDB를 관련 아티스트가 검색한 원시 데이터(좋아하는 아티스트)의 저장 위치로 만드는 방법 등 참고 요청 모드는 수요에 따라 할 수 있다고 생각합니다 표의attribute는 다음과 같다. 보조 색인 없음도 OKspotify_uri(PK)
name
craeted_date
아티스트의 Spotify Uri
음악가 이름
레코드 작성 날짜
먼저 검색할 아티스트 정보를 AWS 콘솔에서 수동으로 투입 Lambda(검색, DynamoDB 작업)
Spotify API 검색 및 DynamoDB 작업을 위해 Lambda 사용
Lambda를 한 번 실행한 후 다음 동작을 실행합니다 Lambda를 시작할 때 DynamoDB의 모든 데이터를 가져옵니다 다이나모DB 내 아티스트 데이터를 활용한 스포티파이 검색.새로운 아티스트 3명에게 메시지 전달 Spotify 검색 결과put를 DynamoDB로
DynamoDB의 기록 수가 일정수를 초과하면put의 기록 수와 같은 기록을 무작위로 삭제합니다 무제한 시간 및 비용 증가 방지 웹훅을 통해 Discord에 Spotify 검색 결과 투고
Python에서 DynamoDB를 이용한 부분에 대한 코드부기 사항에 기재하다
지금까지 자동dig 응용 프로그램의 기본 기능으로 이미 완성되었다
APIGateway+Lambda(아티스트 검색의 다시 로드)
정기 실행으로 인한dig 결과가 만족스럽지 않을 경우 Lambda와 APIGateway를 병합하여 검색을 간단하게 다시 수행할 수 있음 구체적인 집행 절차는참고
API Gateway와 Lambda의 합병은 대리 합병과 비 대리 합병 두 가지가 있는데 이번에는 어느 것이든 괜찮아요. 프록시 병합이 존재하는지의 주요 차이점은 람다의 출력 결과의 매핑을 API Gateway에 양도하는지 여부이다.API를 통해 Lambda 출력 결과를 다른 도구에 사용하려면 에이전트 통합이 필요합니다.
프록시 병합을 사용할 때 Lambda의 반환 값이 API Gateway가 설명할 수 있는 형식참고 자료에 부합됨을 주의하십시오
이외에
아래 서비스 기능을 사용하였으나 저번 보도의 설정과 거의 같기 때문에 생략합니다 Eventbridge를 통해 정기적으로 Lambda 실행 이번에는 반나절에 한 번이기 때문에 간격은rate(12hours) Systems Manager를 통해 웹 훅 URL 등을 저장 Lambda 기반 컨테이너 이미지 시작 VScode Remote Continer에서 개발 Giithub Action 기반 CI/CD 이번에는 Action의 트리거를push로 바꿀 때 마스터로 변경합니다.얄 여기 있다.
개선점
IaC화가 완료되지 않았습니다.결합저번, 우리는 람다의 컨테이너 이미지의 통용성을 알고 있기 때문에 이 부분만 버튼화하고 싶다 DynamoDB 내 아티스트의 유지 보수 수단은 AWS 콘솔을 통해서만 수동으로 수정/삭제할 수 있다.싫어하는 복제품으로 방향을 틀면 수정 궤도가 까다로워요 프런트엔드 애플리케이션부터 시작해 보려고 합니다 DynamoDB는 항상 전체 scan이 원가와 성능 두 가지 측면에서 적합하지 않다 구역 키를 번호 id로 하고 Lambda에서 뽑은 id만 추출하는 아티스트
Reference
이 문제에 관하여([python, AWS] 무한 확장 Spotify를 만드는 서버 없는 응용 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://zenn.dev/mini_hiori/articles/spotify-digger
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)