hashtagtik / app.py
KIMOSSINO's picture
Update app.py
1d4abf3 verified
raw
history blame
3.19 kB
import gradio as gr
from collections import Counter
from bs4 import BeautifulSoup
def analyze_videos(file):
try:
# قراءة محتوى الملف
if hasattr(file, 'read'):
content = file.read()
else:
with open(file.name, 'r', encoding='utf-8') as f:
content = f.read()
except Exception as e:
return f"خطأ أثناء قراءة الملف: {str(e)}", ""
# تحليل HTML باستخدام BeautifulSoup
try:
soup = BeautifulSoup(content, 'html.parser')
except Exception as e:
return f"خطأ في تحليل محتوى HTML: {str(e)}", ""
# استخراج بيانات الفيديوهات
videos_data = []
video_elements = soup.find_all('a', class_="css-1wrhn5c-AMetaCaptionLine")
if not video_elements:
return "لم يتم العثور على أي بيانات مطابقة.", ""
for video in video_elements:
video_info = {}
# استخراج الرابط
video_info["Link"] = video.get('href', 'رابط غير متوفر')
# استخراج العنوان
title_element = video.find('span', class_="css-j2a19r-SpanText")
video_info["Title"] = title_element.get_text(strip=True) if title_element else "عنوان غير متوفر"
# استخراج الهاشتاغات
hashtags = [
tag.get_text(strip=True)
for tag in video.find_all('strong', class_="css-1p6dp51-StrongText")
]
video_info["Hashtags"] = ", ".join(hashtags)
# استخراج عدد المشاهدات
views_element = video.find_next('strong', {"data-e2e": "video-views"})
video_info["Views"] = views_element.get_text(strip=True) if views_element else "عدد المشاهدات غير متوفر"
videos_data.append(video_info)
# تجهيز النصوص النهائية
videos_summary = "\n\n".join(
f"📹 الفيديو {i+1}:\n"
f"- الرابط: {video['Link']}\n"
f"- العنوان: {video['Title']}\n"
f"- الهاشتاغات: {video['Hashtags']}\n"
f"- عدد المشاهدات: {video['Views']}"
for i, video in enumerate(videos_data)
)
return videos_summary or "لم يتم استخراج أي معلومات."
# إنشاء واجهة Gradio
def gradio_interface():
with gr.Blocks() as demo:
gr.Markdown("## 📝 محلل فيديوهات تيك توك")
with gr.Row():
file_input = gr.File(label="📂 رفع ملف HTML", file_types=[".html"])
with gr.Row():
analyze_btn = gr.Button("تحليل البيانات", variant="primary")
with gr.Row():
output_box = gr.Textbox(
label="📜 البيانات المستخرجة",
lines=20,
interactive=False,
placeholder="ستظهر البيانات هنا"
)
analyze_btn.click(
fn=analyze_videos,
inputs=[file_input],
outputs=[output_box],
)
return demo
# تشغيل التطبيق
if __name__ == "__main__":
demo = gradio_interface()
demo.launch()