import urllib.request
from time import sleep
import tkinter.messagebox
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
#-----------------------------定义查询功能
Current_index=0
Index_list=[]
Song_name_list=[]
Download_list=[]
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15"
opt = webdriver.ChromeOptions()
opt.add_argument('--user-agent=%s' % user_agent)
opt.add_argument('--headless')
opt.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=opt)
driver.maximize_window()
driver.implicitly_wait(30)
def Search(keyword):
global driver
global Song_name_list
listbox1.delete(0,len(Song_name_list))
Song_name_list=[]
url="http://mctool.cn/music/"
driver.get(url)
search_input = driver.find_element_by_id("input")
search_input.send_keys(keyword)
sleep(1)
button = driver.find_element_by_class_name("am-input-group-btn")
button.click()
pass
def Get_SongName():
global driver
global Index_list
global Download_list
global Song_name_list
#1.展开歌单
#i=0
#while 1:
#next_page=driver.find_element_by_xpath('//*[@id="player"]/div[2]')
#text=next_page.get_attribute('innerHTML')
#if text=="下一页" and i<1:
# next_page.click()
# i=i+1
# sleep(3)
# else:
# break
#2.下载歌曲
sleep(5)
Index_list=driver.find_elements_by_class_name("aplayer-list-index")
Download_list=driver.find_elements_by_class_name("am-icon-download")
Song_list=driver.find_elements_by_class_name("aplayer-list-title")
for i in range(len(Song_list)):
SongName=Song_list[i].get_attribute('innerHTML')
print(SongName)
Song_name_list.append(SongName)
def Search_Result():
global Song_name_list
keyword=search_input.get()
Search(keyword)
Get_SongName()
num=1
for i in Song_name_list:
Num=str(num)+"."
listbox1.insert(END,Num+i)
num+=1
#----------------------------界面--------------------------------------
from tkinter import *
import tkinter as tk
root=tk.Tk()
root.title('远程接口下载器')
root.geometry('480x400')
root.resizable(0,0)
def Play(event):
global Index_list
global Current_index
songname=listbox1.get(listbox1.curselection())
index=int(int(songname.split(".")[0])-1)
print(index)
Index_list[index].click()
Current_index=index
def Download():
global Download_list
global Song_name_list
global driver
global Current_index
try:
index=Current_index
Download_list[index].click()
sleep(2)
url=driver.find_element_by_class_name("download").get_attribute("href")
SongName=Song_name_list[index]
urllib.request.urlretrieve(url, "E:\\"+SongName+".mp3")
tk.messagebox.showinfo(message="下载成功")
except:
tk.messagebox.showerror(message="下载失败")
sleep(0.5)
close=driver.find_element_by_xpath('//*[@id="m-download"]/div/div[3]/span')
close.click()
def cancel():
pass
menu = Menu(root, tearoff=0)
menu.add_command(label="下载",command=Download)
menu.add_separator()
menu.add_command(label="取消",command=cancel)
def popupmenu(event):
menu.post(event.x_root, event.y_root)
#1.界面-------------------------
#1.搜索输入框
search_input=tk.Entry(root,justify=CENTER,state=NORMAL)
search_input.place(x=20,y=10,width=400,height=30)
#2.搜索按钮
search_button=tk.Button(root,text="搜索",command=Search_Result)
search_button.place(x=420,y=10)
#3.滑动列表
scrollbar1 = Scrollbar(root)
scrollbar1.pack(side=RIGHT, fill=Y)
listbox1 = Listbox(root,height=18,width=220)
listbox1["yscrollcommand"] = scrollbar1.set
listbox1.pack(side=BOTTOM)
scrollbar1["command"] = listbox1.yview
listbox1.bind('<Double-Button-1>',Play)
listbox1.bind('<B3-Motion> ',popupmenu)
#------------------------------------------------------------------
root.mainloop()
driver.quit()
python制作远程音乐下载器----------(python+selenium初步实现下载付费歌曲)
猜你喜欢
转载自blog.csdn.net/jjsjsjjdj/article/details/103293241
今日推荐
周排行