Untitled
unknown
plain_text
2 years ago
4.4 kB
6
Indexable
import requests import urllib.parse import re from bs4 import BeautifulSoup from youtubesearchpython import VideosSearch from pytube import YouTube import os import webbrowser URL_ROOT = 'http://mojim.com/' def findYT(search_words): id = VideosSearch(search_words, limit=2).result()["result"][0]["id"] # print(reuslt) youtube_url = f"https://www.youtube.com/watch?v={id}" return youtube_url def search_song(song_name): song_name += '.html?t3' url = urllib.parse.urljoin(URL_ROOT, song_name) response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') songs = soup.find_all('dd', re.compile('^mxsh_dd')) del songs[0] song_list = list() for song in songs: meta = song.find('span', 'mxsh_ss4').find('a') name_temp = meta.getText().split('.') song_list.append({ 'name':name_temp[1], 'singer':song.find('span', 'mxsh_ss2').getText(), 'album':song.find('span', 'mxsh_ss3').getText(), 'link':meta.get('href'), }) return song_list def get_lyric(url): url = urllib.parse.urljoin(URL_ROOT, url) response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') lyric = soup.find('dl', 'fsZx1') a = re.compile('^\[\d+') lyric_list = list() for string in lyric.stripped_strings: if string == '更多更詳盡歌詞 在' or string == '※ Mojim.com 魔鏡歌詞網': continue if a.match(string): break lyric_list.append(string) singer = lyric_list.pop(0) name = lyric_list.pop(0) song_detail = { 'singer':singer, 'name':name, 'lyric':lyric_list, } print(song_detail) return song_detail import telebot from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton, InlineQueryResultPhoto import json bot = telebot.TeleBot('6425725714:AAEK-wSNfACLFCYcAt-EASxJ5EYoV61aHpI') @bot.message_handler(commands=['search']) def send_pong(message): if message.chat.type in ("supergroup","private"): global search_words search_words =message.text.split()[1] bot.reply_to(message, findYT(search_words)) @bot.message_handler(commands=['searchL']) def send_ly(message): if message.chat.type in ("supergroup","private"): search_songName =message.text.split()[1] music_url = search_song(search_songName)[0]['link'] # lyrics = "" # for lyric in get_lyric(music_url)['lyric']: # lyrics += lyric # lyrics += " " bot.reply_to(message, get_lyric(music_url)['lyric']) @bot.message_handler(commands=['searchE']) def send_ly(message): if message.chat.type in ("supergroup","private"): headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'} a=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ',"'",'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] empty=[] n='' for i in message.text.split()[1]: bb=False for j in a: if i==j: bb=True if bb: n+=i.lower() n=n.replace(' ','+').replace("'","%27") url="https://search.azlyrics.com/search.php?q="+n+"&x=9edbdb599086cfb43be7941b396a8045c2321d488f5a9439d85c879caeb7d340" r=requests.get(url,headers=headers) soup=BeautifulSoup(r.text, "html.parser") s=soup.find_all("a") for i in s: ii=i.find_all("span") iii=str(ii) if(iii!='[]'): k=iii.split('"</b></span>]') kk=k[0].split('[<span><b>"') if(len(kk)>=2): kkk=kk[1] if(kkk[-8:]=="</span>]"): kkk=kkk[:-9] for j in range(len(kkk)-4): if(kkk[j:j+5]=='"</b>'): kkk=kkk[:j]+kkk[j+5:] break bot.reply_to(message, kkk) # @bot.message_handler(commands=['mp3']) # def send_mp3 (message): # if message.chat.type in ("supergroup","private"): #
Editor is loading...