04-trends / fetch.py
Leeps's picture
Upload folder using huggingface_hub
68e42b1 verified
import feedparser
import requests
from bs4 import BeautifulSoup
from collections import Counter
import re
def fetch_articles(feed_urls, limit=5):
all_articles = []
for name, url in feed_urls.items():
try:
feed = feedparser.parse(url)
for entry in feed.entries[:limit]:
article = {
"title": entry.title,
"link": entry.link,
"summary": entry.get("summary", "No summary"),
"published": entry.get("published", "No date")
}
all_articles.append(article)
except Exception as e:
print(f"Error parsing {url}: {e}")
return all_articles
def fetch_trending_repos(language=None, since="daily"):
base_url = "https://github.com/trending"
url = f"{base_url}/{language or ''}?since={since}"
headers = {"User-Agent": "Mozilla/5.0"}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, "html.parser")
repo_elements = soup.select("article.Box-row")
trending = []
for repo in repo_elements:
title = repo.h2.get_text(strip=True).replace(" ", "")
description_tag = repo.find("p")
description = description_tag.get_text(strip=True) if description_tag else "No description"
stars = repo.select_one("a[href$='/stargazers']").get_text(strip=True)
repo_url = f"https://github.com/{title}"
trending.append({
"name": title,
"description": description,
"stars": stars,
"url": repo_url
})
return trending
def analyze_trends(items):
"""Dummy trend analyzer: count word frequencies in titles."""
text = " ".join(item["title"] for item in items)
words = re.findall(r'\b\w{4,}\b', text.lower()) # 4+ letter words
common = Counter(words).most_common(10)
return common