일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로토콜
- 스트럭트
- 대표
- 네트워크
- 반응형
- 실습
- 이론
- CS
- WeatherKit
- 세종대학교
- 협업
- RxSwift
- async
- mvc
- collectionview
- SwiftUI
- AppStore
- struct
- ios
- 학과별커뮤니티
- 구름톤 유니브
- 디자인 패턴
- swift
- uikit
- 딕셔너리
- 앱개발
- MVVM
- 기초문법
- forEach
- 토이프로젝트
- Today
- Total
스윞한 개발자
IOS - ManiaDB를 연결해 노래찾기/음원검색 본문
안녕하세요!
음원검색 서비스를 만들어 보았습니다!
그래서 오늘 포스팅은 ManiaDB를 연결해 노래를 찾는 서비스를 개발해 본 기록입니다.
최근에 졸업 작품으로 개발하고 있는 서비스가 있는데, 인공지능을 이용해 사람의 심리를 분석하고 노래를 추천해 주는 어플을 개발 중입니다!
그 과정에서 저는 어떤 데이터를 써야 할지 많이 찾아보고 시도해 보았는데요!
일단 저에게 많은 도움이 되었던 포스팅은
https://hanyeop.tistory.com/417
위에 분의 포스팅이었습니다!!
사실 저도 ManiaDB 뿐만 아니라, Spotify로도 연결해 서비스를 구현해보려고 했는데 저는 ManiaDB가 가장 편하고 효율적으로 할 수 있었던 거 같습니다!
그럼 실습을 바로 진행해 볼게요!
1. ManiaDB 접속
먼저 ManiaDB api 홈페이지에 접속합니다.
아무래도 ManiaDB api 홈페이지는 한국어로 잘 나와있어서 사용하기 편했던 거 같습니다!
2. ManiaDB api 이용
홈페이지에서 사용하려는 기능에 따라 Request와 Response에 대해 잘 나와있어요!
위와 같이
https://www.maniadb.com/api/search/metallica/?sr=artist&display=10&key=example&v=0.5
예시도 잘 나와있어서 쉽게 연결해서 사용할 수 있었던 거 같습니다 ㅎㅎ
저기에서 저는 음원 검색 서비스를 만들기 위해 SEARCH v0.5를 이용했구요! 나와있는 형식에 맞게 사용해주시면 됩니다! 아무래도 ManiaDB는 DB에 접속해 사용하기 위한 토큰이나 앱키가 필요없어서 편하고 빠르게 이용할 수 있었던 거 같습니다.
3. 본인의 코드에서 연결
static func searchTracks(query: String) -> Observable<[MusicItem]> {
let url = "https://www.maniadb.com/api/search/\(query.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "")/?sr=song&display=1&key=example&v=0.5"
return Observable.create { observer in
AF.request(url, method: .get)
.validate()
.response { response in
switch response.result {
case .success(let data):
if let responseString = String(data: data!, encoding: .utf8) {
do {
let items = extractItems(from: responseString)
observer.onNext(items)
observer.onCompleted()
} catch {
print("에러: \(error)")
}
}
case .failure(let error):
observer.onError(error)
}
}
return Disposables.create()
}
}
이런식으로 MusicService를 이용하기 위한 메서드를 따로 만들었고, Alamofire 라이브러리를 이용해서 통신을 진행했습니다. 하지만! 여기서 ManiaDB의 단점(?)이라면 단점인데, 모든 파일의 형식을 xml 형태로 보내줘서 변환해서 사용하셔야 합니다!
저는 처음에는 String 형태를 그대로 추출해서 사용했는데 SwiftyXMLParser 라이브러리를 사용하시면 될거 같아요!
저렇게 받아온 값들을 통해서 저는 서버로부터 노래 제목을 받아오면, ManiaDB에 검색을 하고 그 결과 최상단에 나오는 노래 앨범의 이미지, 제목, 가수를 띄우는 방법으로 UI 및 로직을 구성했습니다.
4. 최종 결과
아래와 같이 디오의 "별 떨어진다"의 음악을 검색했고 그 결과 아래처럼 구현했습니다!
로딩 애니메이션은 LottieFiles에서 무료 애니메이션을 이용했습니다 ㅎㅎ
이렇게 구현한 음원 검색 서비스를 이용해서 개발한 졸업작품으로! 다음에는 프로젝트 기록으로 돌아오겠습니다!
'Swift 실습' 카테고리의 다른 글
IOS(#UIkit) - WeatherKit (4) | 2024.02.23 |
---|---|
IOS - UIKit protocol delegate pattern (0) | 2024.02.06 |
IOS UIKit 사진앨범, 카메라, 동영상촬영 (4) | 2024.01.29 |
IOS UIKit 앱개발 노티피케이션 센터, 이벤트 전달 (2) | 2024.01.29 |
IOS 스토리보드 커스텀 팝업 다이얼로그 웹뷰 (0) | 2024.01.29 |