File size: 2,324 Bytes
b11c8cd
 
0658229
 
 
50639ab
0658229
 
b11c8cd
0658229
b11c8cd
57d46c6
 
 
 
b11c8cd
 
 
 
21a1796
b11c8cd
 
 
 
 
 
 
 
 
 
21a1796
 
 
 
 
 
 
b11c8cd
0658229
 
 
 
21a1796
0658229
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b11c8cd
0658229
 
b11c8cd
0658229
 
 
2f7d2fd
 
0658229
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
import requests
import gradio as gr
import bs4 
from bs4 import BeautifulSoup


# Configuration de l'API (à ajuster selon votre setup dans le Space)
API_TOKEN = "votre_token_api"
API_URL = "https://api-inference.huggingface.co/models/meta-llama/Meta-Llama-3-8B-Instruct"
headers = {"Authorization": f"Bearer {API_TOKEN}"}

def query(payload):
    response = requests.post(API_URL, headers=headers, json=payload)
    return response.json()

def analyze_sentiment(text):
    output = query({
        "inputs": f'''<|begin_of_text|>
<|start_header_id|>system<|end_header_id|>
you are going to analyse the prompt that i'll give to you and tell me if they are either talking about "chat bot", "AI dev", 
<|eot_id|>
<|start_header_id|>user<|end_header_id|>
{text}
<|eot_id|>
<|start_header_id|>assistant<|end_header_id|>
'''
    })

    if isinstance(output, list) and len(output) > 0:
        response = output[0].get('generated_text', '').strip().lower()
        
        if "chat bot" in response:
            return "chat bot"
        elif "ai dev" in response:
            return "AI dev"
        else:
            return "autre"

def scrape_and_analyze(url):
    try:
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # Ajustez ce sélecteur selon la structure du site cible
        posts = soup.find_all('div', class_='post')
        
        categories = {"chat bot": 0, "AI dev": 0, "autre": 0}
        
        for post in posts:
            content = post.find('div', class_='content').text.strip() if post.find('div', class_='content') else "Pas de contenu"
            category = analyze_sentiment(content)
            categories[category] += 1
        
        total_posts = sum(categories.values())
        result = f"Total des posts analysés : {total_posts}\n"
        result += f"chat bot : {categories['chat bot']}\n"
        result += f"AI dev : {categories['AI dev']}\n"
        result += f"autre : {categories['autre']}"
        
        return result
    except Exception as e:
        return f"Une erreur s'est produite : {str(e)}"

iface = gr.Interface(
    fn=scrape_and_analyze,
    inputs="text",
    outputs="text",
    title="Analyse de posts de blog",
    description="Entrez l'URL d'un blog pour analyser ses posts."
)

iface.launch()