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 🙂
Bir yanıt yazın