-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPesquisarMusica.py
127 lines (97 loc) · 4.21 KB
/
PesquisarMusica.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import requests
from Download import *
#KEY gerada ao cadastrar na api vagalume
VG_KEY = "9ce9c5e4a931844f8c5f20cb9518e99b"
TITULOS = BASE_DIR + "\Titulos.txt"
CAMINHO_MUSICAS = BASE_DIR + "\Letras\\"
def ler_titulos():
try:
with open(f"{TITULOS}", 'r', encoding='utf8') as arquivoTitulos:
titulos = arquivoTitulos.read().splitlines()
except:
print("Não foi possivel abrir o arquivo com os titulos")
else:
if titulos:
for t in titulos:
t = t.strip().replace(" – ", "-")
limiter = t.find("-")
nome = t[:limiter].strip()
artista = t[limiter+1:].strip()
musica = buscar_musicas(nome, artista)
if musica:
print(f"{nome} | {artista} - letra encontrada")
guardar_musica(musica)
pesquisar(nome, artista, *parametro[2:])
else:
print(f"{nome} | {artista} - letra não encontrada")
continue
else:
print("Não há titulos no arquivo especificado")
def buscar_musicas(nome, artista):
parametros = {
'art':artista,
'mus':nome,
'apikey':VG_KEY
}
print(f"\nPesquisando por: '{nome} - {artista}'")
try:
musica = requests.get(f"https://api.vagalume.com.br/search.php", params=parametros).json()
except:
print(f"Não foi possivel pesquisar a musica '{nome} - {artista}' ")
else:
if musica['type'] in ['exact','aprox']:
print(f"\nMusica encontrada!\nLetra: {musica['mus'][0]['url']}")
guardar_musica(musica)
pesquisar(nome, artista, *parametro[2:])
return musica
return False
def formatar_musica(musica):
musica_pre_formatada = []
musica_formatada = []
index_espacos = []
musica = musica.replace("\n\n", "\n").split("\n")
print(f"\nFormatando letra....")
for linha_da_musica in musica:
if len(linha_da_musica) > 28:
index_espacos = [pos for pos, char in enumerate(linha_da_musica) if char == " "]
meio = index_espacos[len(index_espacos)//2]
index_espacos.clear()
musica_pre_formatada.append(linha_da_musica[:meio]+'\n'+linha_da_musica[meio:])
#musica_pre_formatada.append(linha_da_musica[meio:])
continue
musica_pre_formatada.append(linha_da_musica)
for i, linha_da_musica in enumerate(musica_pre_formatada):
if linha_da_musica and not linha_da_musica.isnumeric():
if i % 2 != 0:
musica_formatada.append(linha_da_musica + "\n")
else:
musica_formatada.append(linha_da_musica)
musica_formatada = "\n".join(musica_formatada)
return musica_formatada
def guardar_musica(musica):
letra = musica['mus'][0]['text']
nome = musica['mus'][0]['name']
artista = musica['art']['name']
musica_formatada = formatar_musica(letra)
caminho = f"{CAMINHO_MUSICAS}{nome} - {artista}.txt"
try:
with open(caminho, 'w', encoding='utf8') as arquivoMusica:
arquivoMusica.write(musica_formatada)
print(f"\nLetra salva em: \n\t--> {caminho}")
except:
print(f"Não foi possivel guardar essa musica '{nome} - {artista}' ")
tutorial = """
Music and Lyrics Download
Como utilizar: [nome da musica] - [nome do artista] - [modo de audio] [modo de pesquisa]
Ex: "Eu quero ser santo - Eyshila - Playback"
- Parâmetros -
-- Obrigatórios*:
[nome da musica] Insira aqui o nome da música em si
[nome do artista] Insira aqui o nome do artista da musica, opcional para baixar a musica, mas essencial para a letra
-- Opcionais:
[modo de audio] Insira 'Playback' caso queira a música sem a voz. (Padrão: Normal)
[modo de pesquisa] Insira '-p' para pesquisar usando 'pytube.search' (Padrão: -a : Youtube API)
"""
print(tutorial)
parametro = input("Faça sua pesquisa:").split(" - ")
buscar_musicas(*parametro[0:2])