ในฐานะแฟนตัวยงของการใช้ชีวิตแบบร็อคคลาสสิกในฝรั่งเศสฉันรู้สึกหงุดหงิดมากกับการขาดวิทยุร็อคคลาสสิกที่ดีที่เรามี ฉันใช้เวลาสี่เดือนใน St Louis, MO และฉันมีโอกาสได้ฟัง Kshe 95 ทุกวันเล่นเพลงร็อคคลาสสิกที่ฉันโปรดปราน น่าเสียดายที่ฉันไม่สามารถฟังวิทยุนี้ในฝรั่งเศสได้เนื่องจากพวกเขาบล็อกมัน โชคดีที่เว็บไซต์ของพวกเขาแสดงให้เห็นถึงการปรับแต่งที่กำลังเล่นเช่นเดียวกับบางส่วนก่อนหน้านี้
ฉันตัดสินใจที่จะทำให้ตัวเองเป็นเพลย์ลิสต์ Spotify ที่ว่างเปล่าและเพิ่มในแทร็ก KSHE โดยอัตโนมัติ ฉันยังต้องการที่จะสามารถเพิ่มเพลงจากวิทยุร็อคคลาสสิกอื่น ๆ ที่คล้ายกัน ดังนั้นฉันจึงสร้างสถาปัตยกรรมที่นำมาใช้ซ้ำได้ซึ่งช่วยให้สามารถลงทะเบียนเครื่องขูดเว็บที่แตกต่างกันเพื่อรับประวัติการเล่นวิทยุและเพิ่มสิ่งนั้นลงในเพลย์ลิสต์ของฉัน
จนถึงตอนนี้ฉันสามารถรับเพลงจากวิทยุเหล่านี้ได้:
อย่าลังเลที่จะ ping ฉันถ้าคุณต้องการความช่วยเหลือ!
เพื่อให้มันใช้งานได้นี่คือสิ่งที่ต้องทำ
ก่อนอื่นคุณจะต้องตั้งค่าบัญชีนักพัฒนา Spotify ของคุณและลงทะเบียนแอพ ค้นหาวิธีที่นี่ เมื่อแอปของคุณถูกสร้างขึ้นคุณจะสามารถเข้าถึง crendentials ต่อไปนี้:
client_idclient_secretredirect_uri ค้นหาคุณ user_id (ชื่อผู้ใช้ Spotify ของคุณ) และเพิ่มข้อมูลรับรอง 4 รายการเหล่านี้ในไฟล์ที่เรียกว่า .spotify-token.json คุณมีแม่แบบที่นี่: .spotify-token.json.dist แอพนี้จะต้องใช้แอพเหล่านั้นเพื่ออัปเดตแทร็กไปยังเพลย์ลิสต์ของคุณ
หมายเหตุ: ในแอปพลิเคชันนี้การเปลี่ยนเส้นทาง 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 Radio:
make start-api ตอนนี้แอพควรทำงานอยู่http://localhost:9999http://localhost:9999/authmake update-playlist เพื่อรับเพลงล่าสุดในเพลย์ลิสต์ของคุณ การโทรที่รองรับจนถึงตอนนี้:
GET , localhost:9999/api : ตรวจสอบว่า API นั้นขึ้นGET , localhost:9999/auth : authenticate เป็นเวลา 3600 วินาทีGET , localhost:9999/api/update_playlist : อัปเดตเพลย์ลิสต์ด้วยหากคุณต้องการเพิ่มเว็บไซต์อื่นเพื่อเติมเพลย์ลิสต์คุณสามารถเขียน scrapper ใหม่ในโมดูล 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!
]คุณพร้อมแล้ว!