Selenium ile Spotify’dan bir çalma listesini oynatmak

Merhaba, Bugün Selenium kütüphanesini kullanarak Spotify’da giriş yapıp bir çalma listesini oynatacağız.

Tabii ilk olarak bilgisayarımızda Python ve Selenium’un kurulu olması gerekiyor.

bunun için komut satırınına:

pip install selenium

yazıp kuruyoruz. Bir de selenium’u test ederken bir browser kullanmamız gerekiyor, ben Chrome kullanmak istediğim için Chrome Driver’ını indirdim ve bunu koduma ekledim. Siz isterseniz Firefox da kullanabilirsiniz. Bu driverler’a ufak araştırmalar yaparak rahatça ulaşabilirsiniz.

https://chromedriver.chromium.org/downloads

Not: Bu kod yazıldıktan sonra Spotify’ın websitesinde değişiklikler olmuş olabilir. Bu da kodun yapılan değişikliklerle düzgün çalışmayacağını gösterir.

 

ilk olarak Spotify.com sayfasına giriş yapıyoruz.

browser.get('http://spotify.com/')

Sonraki aşama Login butonuna tıklamak. Bir HTML etiketine ulaşmanın en iyi yolu XPath’ini vermek bana göre. XPath’ini almak istediğiniz elemente Chrome’da sağ tıklayıp incele dedikten sonra element kısmında tekrardan sağ tıklayıp XPath’ini kopyalayabilirsiniz.

login_page_button = browser.find_elements_by_xpath("/html/body/div[2]/div/header/div/nav/ul/li[6]/a")[0]
login_page_button.click()

Login butonumuza tıkladık. Sırada giriş yapmamız gerekiyor:

login_email_input = browser.find_element_by_id('login-username')
login_email_input.send_keys("[email protected]")

login_password_input = browser.find_element_by_id('login-password')
login_password_input.send_keys("00000000")
f.write("bilgiler girildi \n")

Şimdi giriş yapma butonuna tıklıyoruz, bunu element’in id’sini kullanarak yaptım:

login_button = browser.find_element_by_id("login-button")
login_button.click()

Başarıyla giriş yaptıktan sonra playlistimizin urlsini açıp, play butonuna basmak kalıyor geriye:

browser.get('https://open.spotify.com/playlist/xxxxxxxxxxxxxxxxx')

play_button = browser.find_element_by_xpath('//*[@id="main"]/div/div[2]/div[4]/div[1]/div/div[2]/div/div/div[2]/section/div[3]/div/button[1]')
play_button.click()

Son olarak kodumuz bu şekilde oluyor:

from selenium import webdriver
import random, os
import time, datetime

driver_path = "C:/Python/chromedriver.exe"
browser = webdriver.Chrome(executable_path=driver_path)
__location__ = os.path.realpath(
    os.path.join(os.getcwd(), os.path.dirname(__file__)))
f = open(os.path.join(__location__, 'log.txt'), "a")

def wait_random():
    waiting_time = random.randint(1, 5)
    waiting_time = waiting_time + random.random()
    time.sleep(waiting_time)

browser.get('http://spotify.com/')

f.write(str(datetime.datetime.now())+" \n")

login_page_button = browser.find_elements_by_xpath("/html/body/div[2]/div/header/div/nav/ul/li[6]/a")[0]
login_page_button.click()
wait_random()

login_email_input = browser.find_element_by_id('login-username')
login_email_input.send_keys("[email protected]")
wait_random()

login_password_input = browser.find_element_by_id('login-password')
login_password_input.send_keys("xxxxxxxxxx")
wait_random()
f.write("bilgiler girildi \n")

login_button = browser.find_element_by_id("login-button")
login_button.click()
wait_random()
f.write("butona basildi \n")

browser.get('https://open.spotify.com/playlist/xxxxxxxxxxxxxxxxxxxx')
wait_random()

play_button = browser.find_element_by_xpath('//*[@id="main"]/div/div[2]/div[4]/div[1]/div/div[2]/div/div/div[2]/section/div[3]/div/button[1]')
play_button.click()

f.close()

Burada tam olarak bot gibi çalışmaması için 1 ile 5 saniye arasında bekleyip sonra işlem yapan bir fonksiyon yazdım. Böylelikle daha insancıl davranıyor olacak kodumuz.

Çıktıları yada hataları sonradan tespit edebilmek için de bunları bir dosyaya yazdırdım.(log.txt)

Spotify abimiz umarım bize kızmaz 🙂

Selenium ile Spotify’dan bir çalma listesini oynatmak” ile ilgili 4 görüş

  1. yunus

    kendi username pass listemi programa tanıtabiir miyiz ? ve 50 ,60 saniye sonra öbür şarkıya geçmesini böyle olursa mükemmel olur teşekkürler

  2. can

    Merhaba,
    Spotify’ın websitesinde farenin sağ tıkı çalışmıyor ancak Chrome’un diğer araçlar menüsünden geliştirici ayarlarına tıkladığım zaman kaynak kodları görünüyor fakat sayfada elementlerin üstüne geldiğimde html kodlarını göremiyorum. Göremediğim içinde xypath,id,class alamıyorum.Bu sorunu nasıl çözebilirim?
    Teşekkürler.

Yorum Bırak...