- Melon | melon-chart.py
- Bugs | bugs-chart.py
- Genie | genie-chart.py
- Vibe | vibe-chart.py
- Flo | flo-chart.py
Flutter 강의를 막 떼서 음원차트 트래킹 앱을 만들어볼까싶었다. Front는 목록이랑 알림정도라서 난이도가 높지않아 보였지만, Backend는 국내 음원사이트 긁어오는 프로그램부터 만들어야하는데...생각에 현재 배포된 국내음원차트 API들을 살펴보았는데 대부분 웹 크롤링 방식이었다. 봇이라고 거르지도 않고, 음원사이트들이 그래도 몇년에 한번씩 단장하기때문에 꽤 괜찮은 방법이긴하지만 개인적으로는 진짜 API를 따오고 싶었다.
다행히도 내가 안드로이드 개발자이기 때문에 당장 떠오르는 방법이 있었다. 바로, 앱에서 오가는 HTTP traffic을 가로채는 것...! emulator를 rooting하고, proxy
설정을 통해 오가는 네트워크 요청들을 볼 수 있었다. 차후 이 점이 문제가 되지않을까 싶지만... 해당 음원사이트에서 필요한정보만 요청해가니까 크롤링 보다 경제적일 수 있지 않을까했다. Instagram private api
같은 것도 이러한 과정을 통해 만들어진 거기도 하고... 흠흠 open-source
에 몸을 맡겨보기로했다. 일단은 멜론, 벅스, 바이브, 플로, 지니뮤직 5개 차트에서 얻을 수 있는 아주 일반화된 ChartEntry
를 구성했다. (Billboard chart 파이썬 라이브러리를 참조했다.)
class ChartEntry:
"""Represents an entry on a chart.
Attributes:
title: The title of the track
artist: The name of the artist.
image: The URL of the cover image for the track
lastPos: The track's last position on the previous period.
rank: The track's current rank position on the chart.
isNew: Whether the track is new to the chart.
"""
def __init__(self, title: str, artist: str, image: str, lastPos: int, rank: int, isNew: bool):
self.title = title
self.artist = artist
self.image = image
self.lastPos = lastPos
self.rank = rank
self.isNew = isNew
어딘가 내가 라이브러리를 만들어 배포해보기는 처음이었는데 주석, 스타일, 추상화 등 평소에는 그냥 넘어갈법한 것도 괜히 신경쓰면서 개발해보았다. 영어 README.md
도 ChatGPT 돌려가며 완성했다. 아직 한번도 라이브러리를 배포해보지 않은 분이라면 한 번쯤 경험해볼 것을 추천한다.
이번을 계기로 Android 라이브러리도 배포해보고싶다. 매일쓰는건 Kotlin
인데 재미로 만든 프로그램만 Public Repository에 올리다보니 Github Profile보는데 Kotlin
이 없고 Typescript
랑 Python
뿐이더라...
P.S NPM
과는 다르게 PyPI
는 다운로드 수를 보여주지 않아서 아쉽다. 나같은 관종에게 좋은 동기부여가 되었을텐데... ㅋㅋㅋ
'프로그래밍 > 회고' 카테고리의 다른 글
DASHI - 뜨거운 순간 업데이트 (3) | 2024.12.13 |
---|---|
DASHI - 챕터와 속도 개선 업데이트 (2) | 2024.03.31 |
DASHI - 트위치 다시보기 부활 (29) | 2023.11.19 |
김래일의 애니캐 테스트 - 첫 React 프로젝트 회고 (1) | 2022.09.11 |
TinyDoge - 하루만에 만든 PNG 손실압축 프로그램 회고 (1) | 2022.09.04 |