KIMOSSINO commited on
Commit
130fa7f
·
verified ·
1 Parent(s): 42b376b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -21
app.py CHANGED
@@ -3,43 +3,69 @@ from collections import Counter
3
  from bs4 import BeautifulSoup
4
 
5
 
6
- # دالة استخراج العناوين والهاشتاغات
7
  def extract_titles_and_hashtags(file):
8
  try:
9
- # قراءة محتوى الملف
10
- content = file.read() if hasattr(file, 'read') else open(file.name, 'r', encoding='utf-8').read()
 
 
 
 
11
  except Exception as e:
12
  return f"خطأ أثناء قراءة الملف: {str(e)}", "", ""
13
 
14
  # تحليل HTML باستخدام BeautifulSoup
15
- soup = BeautifulSoup(content, 'html.parser')
 
 
 
16
 
17
  # استخراج البيانات
18
  data = []
19
  hashtags_counter = Counter()
20
 
 
21
  desc_containers = soup.find_all('div', class_="css-vi46v1-DivDesContainer")
22
  if not desc_containers:
23
  return "لم يتم العثور على أي بيانات مطابقة.", "", ""
24
 
 
25
  for container in desc_containers:
26
- title = container.get('aria-label', 'بدون عنوان')
27
- hashtags = [
28
- tag.get_text(strip=True)
29
- for tag in container.find_all('a')
30
- if tag.get_text(strip=True).startswith('#')
31
- ]
32
- hashtags_counter.update(hashtags)
33
- data.append({"Title": title, "Hashtags": ", ".join(hashtags)})
34
-
35
- # تحويل النتائج إلى نصوص
36
- titles_text = "\n".join([f"{i+1}. {row['Title']}" for i, row in enumerate(data)])
37
- hashtags_text = "\n".join([f"{hashtag}: {count}" for hashtag, count in hashtags_counter.items()])
38
- unique_hashtags_text = "\n".join(hashtags_counter.keys()) # هاشتاغات غير مكررة
39
-
40
- return titles_text or "لا توجد عناوين مستخرجة.", hashtags_text or "لا توجد هاشتاغات مستخرجة.", unique_hashtags_text or "لا توجد هاشتاغات فريدة."
41
-
42
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  # إنشاء واجهة Gradio
44
  def gradio_interface():
45
  with gr.Blocks() as demo:
 
3
  from bs4 import BeautifulSoup
4
 
5
 
 
6
  def extract_titles_and_hashtags(file):
7
  try:
8
+ # قراءة محتوى الملف بطريقة أكثر كفاءة
9
+ if hasattr(file, 'read'):
10
+ content = file.read()
11
+ else:
12
+ with open(file.name, 'r', encoding='utf-8') as f:
13
+ content = f.read()
14
  except Exception as e:
15
  return f"خطأ أثناء قراءة الملف: {str(e)}", "", ""
16
 
17
  # تحليل HTML باستخدام BeautifulSoup
18
+ try:
19
+ soup = BeautifulSoup(content, 'html.parser')
20
+ except Exception as e:
21
+ return f"خطأ في تحليل محتوى HTML: {str(e)}", "", ""
22
 
23
  # استخراج البيانات
24
  data = []
25
  hashtags_counter = Counter()
26
 
27
+ # البحث عن الحاويات
28
  desc_containers = soup.find_all('div', class_="css-vi46v1-DivDesContainer")
29
  if not desc_containers:
30
  return "لم يتم العثور على أي بيانات مطابقة.", "", ""
31
 
32
+ # معالجة كل حاوية
33
  for container in desc_containers:
34
+ title = container.get('aria-label', 'بدون عنوان').strip()
35
+ hashtags = []
36
+
37
+ # استخراج الهاشتاغات
38
+ for tag in container.find_all('a'):
39
+ tag_text = tag.get_text(strip=True)
40
+ if tag_text.startswith('#'):
41
+ hashtags.append(tag_text)
42
+
43
+ if hashtags:
44
+ hashtags_counter.update(hashtags)
45
+ data.append({
46
+ "Title": title,
47
+ "Hashtags": ", ".join(hashtags)
48
+ })
49
+
50
+ # إعداد النصوص النهائية
51
+ titles_text = "\n".join(
52
+ f"{i+1}. {row['Title']}"
53
+ for i, row in enumerate(data)
54
+ )
55
+
56
+ hashtags_text = "\n".join(
57
+ f"{hashtag}: {count}"
58
+ for hashtag, count in sorted(hashtags_counter.items(), key=lambda x: (-x[1], x[0]))
59
+ )
60
+
61
+ unique_hashtags_text = "\n".join(sorted(hashtags_counter.keys()))
62
+
63
+ # إرجاع النتائج مع رسائل افتراضية
64
+ return (
65
+ titles_text or "لا توجد عناوين مستخرجة.",
66
+ hashtags_text or "لا توجد هاشتاغات مستخرجة.",
67
+ unique_hashtags_text or "لا توجد هاشتاغات فريدة."
68
+ )
69
  # إنشاء واجهة Gradio
70
  def gradio_interface():
71
  with gr.Blocks() as demo: