Exemplos de Automação

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")