프랑스에 거주하는 클래식 록의 열렬한 팬으로서, 나는 우리가 가진 좋은 클래식 록 라디오의 부족에 매우 좌절감을 느낍니다. 나는 미주리 주 세인트 루이스에서 4 개월을 보냈고, 매일 KSHE 95를 듣고 내가 좋아하는 클래식 록 곡을 연주 할 기회를 가졌습니다. 불행히도, 나는이 라디오 에서이 라디오를들을 수 없을 때이 라디오를들을 수 없습니다. 다행히도 그들의 웹 사이트는 현재 재생 된 곡과 이전 웹 사이트를 보여줍니다.
나는 자신을 빈 Spotify 재생 목록으로 만들고 KSHE 트랙을 자동으로 추가하기로 결정했습니다. 나는 또한 다른 유사한 클래식 록 라디오의 노래를 추가 할 수 있기를 원했습니다. 그래서 나는 다른 웹 스크레이퍼를 등록하여 라디오를 재생하고 재생 목록에 추가 할 수있는 재사용 가능한 아키텍처를 구축했습니다.
지금까지 나는이 라디오에서 노래를 얻을 수 있습니다.
당신이 도와주고 싶다면 저를 자유롭게 핑하십시오!
그것을 작동시키기 위해 여기에해야 할 일이 있습니다.
먼저 Spotify Developer 계정을 설정하고 앱을 등록해야합니다. 여기서 방법을 찾으십시오. 앱이 생성되면 다음 크레더티블얼에 액세스 할 수 있습니다.
client_idclient_secretredirect_uri user_id (spotify username)를 찾아 .spotify-token.json 이라는 파일 에이 4 가지 자격 증명을 추가하십시오. 여기에는 템플릿이 있습니다 : .spotify-token.json.dist. 앱은 재생 목록에 트랙을 업데이트해야합니다.
참고 :이 응용 프로그램에서 ridirect uri는 http://localhost:9999/auth/callback 이어야합니다.
양호하면 가상 환경에 요구 사항을 설치하십시오.
pip install virtualenv # if you don't have it already
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt 이 앱은 sqlite 데이터베이스를 사용하여 지금까지 다운로드 한 모든 노래를 저장합니다. 이 명령을 실행하는 데이터베이스를 초기화해야합니다. make init-db .
KSHE 라디오의 최신 곡으로 재생 목록을 업데이트하는 데 필요한 단계는 다음과 같습니다.
make start-api . 이제 앱이 실행 중입니다http://localhost:9999 .http://localhost:9999/auth 로 이동하십시오make update-playlist 재생 목록에서 최신 곡을 얻으십시오. 지금까지 지원되는 전화는 다음과 같습니다.
GET , localhost:9999/api : API가 올라 왔는지 확인하십시오.GET , localhost:9999/auth : 3600 초 동안 인증GET , localhost:9999/api/update_playlist : 재생 목록을 업데이트합니다재생 목록을 채우기 위해 다른 웹 사이트를 추가하려면 src.scraping 모듈에 새 스크레이퍼를 작성할 수 있습니다.
이 단계를 따르십시오.
이름이 Scraper YourScrapper 끝나는 클래스를 만듭니다.
(어떤 웹 사이트가 크롤링하는지 명백해야하지만).
그 수업을 Scraper 에서 상속하십시오
생성자에 super() 를 요청하고 웹 페이지의 URL을 전달하십시오.
크롤링과 playlist_id 로 노래를 업로드합니다. 예 : :
player_url = 'https://radio.com/awesome-song-history'
playlist_id = '3BCcE8T945z1MnfPWkFsfX'
super ( YourScrapper , self ). __init__ ( player_url , playlist_id ) get_song_history 메소드를 넘어서 첫 번째 행은 다음과 같습니다.
soup , driver = self . scrap_webpage ()테스트 폴더에 스크레이퍼를 추가하십시오.
class TestYourScraper ( GenericScraperTest ):
scraper = scraping . YourScraper ()src.playlist_updater.updater 클래스에 스크레이퍼를 추가하십시오.
self . scrapers = [
scraping . KSHEScraper (),
scraping . EagleScraper (),
scraping . YourScraper () # New scraper!
]당신은 모두 설정되었습니다!