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 🙂


Yorumlar

“Selenium ile Spotify’dan bir çalma listesini oynatmak” için 6 yanıt

  1. 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

    1. muzafferkadir avatarı
      muzafferkadir

      Evet, Bunu yapabilirsin. Kullanıcı adı ve parolanı girdikten sonra time.sleep() fonksiyonunu kullanabilirsin.

  2. 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.

    1. muzafferkadir avatarı
      muzafferkadir

      Merhaba, Elementinizi hiyerarşik olarak manuel bulmaya çalışabilirsiniz.

  3. Hocam merhaba login olayı falan çalışıyor fakat play buttonu kod hiçbir şekilde bulamıyor css xpath falan hepsini denedim kodu tekrar inceleyebilir misiniz biraz geç görmüş olsamda :D. Play buttonun bir iframe içinde olduğunu düşünüyorum fakat nasıl yapabiliceğim hakkında bir fikrim yok tekrar bakarsanız beni çok mutlu edersiniz.

    1. muzafferkadir avatarı
      muzafferkadir

      Selam, spotify’ın kod yapısı değişmiş olabilir. Artık izin vermiyor olabilir

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir