1. Extração de dados da API do Spotify salvo em Excel, com músicas mais ouvidas nos principais gêneros com suas pontuações de popularidade.
import requests
import pandas as pd
refresh_token = 'TOKEN'
# Necessário o Cliente Secret e o Cliente ID para gerar o Token, que são obtidos na plataforma do Spotify Developer Dashboard
client_id = 'CLIENTE ID' # client_id está oculto neste exemplo do código
client_secret = 'CLIENTE SECRET' # client_secret está oculto neste exemplo do código
def refresh_access_token(refresh_token):
url = 'https://accounts.spotify.com/api/token'
payload = {
'grant_type': 'refresh_token',
'refresh_token': refresh_token,
'client_id': client_id,
'client_secret': client_secret
}
response = requests.post(url, data=payload)
if response.status_code == 200:
return response.json()['access_token']
else:
raise Exception("Failed to refresh access token")
def search_tracks_by_genre(genre, limit=1):
global access_token
query = f'genre:{genre}'
url = f'https://api.spotify.com/v1/search?q={query}&type=track&limit={limit}'
headers = {'Authorization': f'Bearer {access_token}'}
response = requests.get(url, headers=headers)
if response.status_code == 401:
access_token = refresh_access_token(refresh_token)
headers['Authorization'] = f'Bearer {access_token}'
response = requests.get(url, headers=headers)
return response.json()
genres = ['rock', 'rap', 'pop', 'samba', 'electronic', 'mpb', 'sertanejo']
all_track_data = []
for genre in genres:
tracks = search_tracks_by_genre(genre)
if 'tracks' in tracks and 'items' in tracks['tracks']:
track_data = [{
'Genre': genre,
'ID': track['id'],
'Name': track['name'],
'Album Name': track['album']['name'],
'Album Image URL': track['album']['images'][0]['url'] if track['album']['images'] else None,
'Track Link': track['external_urls']['spotify'],
'Popularity': track['popularity']
} for track in tracks['tracks']['items']]
all_track_data.extend(track_data)
else:
print(f"Erro {genre}.")
df = pd.DataFrame(all_track_data)
df.to_excel(excel_file, index=False, engine="openpyxl")
2. Web Scrapping do ecommerce ibyte para obtenção de preços, descontos e nome do produto, salvo em Excel.
url = "https://www.ibyte.com.br/pcs-e-notebooks/computador?srsltid=AfmBOop8U4DEXwm12mWr-TfBt2JlnjodriJlKv0mfebd6QPbvWhDvJsY"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
soup = BeautifulSoup(response.text, "html.parser")
produtos = []
for produto in soup.find_all("div", class_="flex flex-row min-h-full relative w-full overflow-hidden bg-white shadow rounded transition-shadow h-full md:flex-col hover:shadow-md"):
try:
nome = produto.find("h2", class_="text-gray-800").text.strip()
preco = produto.find("span", class_="text-verde-500 js-best-price").text.strip()
desconto = produto.find("p", class_="flex flag js-discount-flag")
desconto = desconto.text.strip() if desconto else "Sem desconto importante"
produtos.append({"Nome": nome, "Preço": preco, "Desconto": desconto})
except AttributeError:
continue
df = pd.DataFrame(produtos)
excel_file = os.path.join(TEMP_FOLDER, f"{tipo}_resultado.xlsx")
df.to_excel(excel_file, index=False, engine="openpyxl")