# نظام محتوى السوشيال ميديا - الدليل الشامل
# Social Media Content System - Complete Guide

## 📋 نظرة عامة | Overview

تم إنشاء نظام متكامل لجلب وتخزين محتوى السوشيال ميديا من Twitter و Instagram تلقائيًا.

A complete system has been created to automatically fetch and store social media content from Twitter and Instagram.

---

## 🗄️ هيكل قاعدة البيانات | Database Structure

### جدول `social_media_content`

| الحقل | النوع | الوصف |
|-------|------|-------|
| `id` | INT | المعرف الفريد (Primary Key) |
| `post_id` | VARCHAR(100) | معرف المنشور من السوشيال ميديا (Unique) |
| `url` | TEXT | رابط المنشور الأصلي |
| `title` | VARCHAR(500) | عنوان المنشور |
| `content_text` | TEXT | المحتوى النصي الخام |
| `content_html` | TEXT | المحتوى بصيغة HTML |
| `image` | VARCHAR(255) | اسم ملف الصورة الرئيسية |
| `attachments` | TEXT | جميع المرفقات بصيغة JSON |
| `video_url` | VARCHAR(255) | اسم ملف الفيديو |
| `author_name` | VARCHAR(255) | اسم الكاتب/الحساب |
| `cat_sources` | INT | مصدر المحتوى (1=Twitter, 2=Instagram) |
| `cat_id` | INT | تصنيف المحتوى |
| `content_type` | TINYINT | نوع المحتوى (1=صورة، 6=معرض، 10=فيديو) |
| `views` | INT | عدد المشاهدات |
| `status` | TINYINT | الحالة (0=مسودة، 1=منشور، 2=أرشيف) |
| `lang` | VARCHAR(5) | لغة المحتوى |
| `publish_date` | DATETIME | تاريخ النشر الأصلي |
| `create_date` | DATETIME | تاريخ الإضافة للنظام |
| `last_update_date` | DATETIME | تاريخ آخر تحديث |
| `user_add` | INT | المستخدم الذي أضاف السجل |

### الفهارس | Indexes

- **PRIMARY KEY**: `id`
- **UNIQUE KEY**: `post_id` (لمنع التكرار)
- **INDEX**: `cat_sources` (للبحث حسب المصدر)
- **INDEX**: `status, publish_date` (للفلترة والترتيب)
- **INDEX**: `content_type` (للبحث حسب نوع المحتوى)

---

## 🔄 آلية عمل النظام | System Workflow

### 1. جلب البيانات | Data Fetching

```
RSS Feed (JSON) → Download → Parse → Process
```

الملف يقوم بجلب البيانات من:
```
https://rss.app/feeds/v1.1/Ptx5ZepR8310RT9O.json
```

### 2. معالجة المحتوى | Content Processing

#### أ. استخراج البيانات الأساسية
- **العنوان**: يتم تنظيفه من روابط Twitter
- **المحتوى**: نصي و HTML
- **التاريخ**: تحويل إلى توقيت القاهرة
- **المؤلف**: استخراج من `authors` array

#### ب. معالجة الميديا

**الصور:**
- يتم تحميل جميع الصور من `attachments`
- الحفظ في: `backend/upload/`
- التسمية: `{post_id}_{index}.{extension}`
- الصورة الأولى تُخزن في حقل `image`
- جميع الصور تُخزن في `attachments` كـ JSON

**الفيديوهات:**
- الكشف التلقائي عن الفيديو في المنشور
- استخراج رابط الفيديو عبر TwitSave API
- التحميل والحفظ في: `backend/upload_media/`
- التسمية: `{post_id}_video.mp4`

### 3. تحديد نوع المحتوى | Content Type Detection

```php
- فيديو (10): إذا كان هناك ملف فيديو
- معرض (6): إذا كان هناك أكثر من صورة
- صورة (1): إذا كان هناك صورة واحدة
```

### 4. التحقق من التكرار | Duplicate Detection

يتم التحقق من وجود المنشور باستخدام `post_id`:
```sql
SELECT COUNT(*) FROM social_media_content WHERE post_id = ?
```

### 5. الإدخال في قاعدة البيانات | Database Insertion

يتم إدخال جميع البيانات في جدول `social_media_content` مع:
- ✅ معلومات المنشور الكاملة
- ✅ روابط الميديا المحلية
- ✅ البيانات الوصفية (metadata)
- ✅ التواريخ بتوقيت القاهرة

---

## 🔗 العلاقات مع الجداول الأخرى | Table Relationships

### الربط مع `cat_sources`

```sql
SELECT 
    smc.*,
    cs.name as source_name,
    cs.description as source_description,
    cs.photo as source_photo
FROM social_media_content smc
LEFT JOIN cat_sources cs ON smc.cat_sources = cs.id
```

**القيم المتوقعة:**
- `cat_sources = 1`: Twitter/X
- `cat_sources = 2`: Instagram
- يمكن إضافة مصادر أخرى حسب الحاجة

---

## 📁 هيكل الملفات | File Structure

```
Rassd26/
├── backend/
│   ├── api/
│   │   └── x_feeds.php          # السكريبت الرئيسي
│   ├── inc/
│   │   └── con.php              # الاتصال بقاعدة البيانات
│   ├── sql/
│   │   └── create_social_media_content.sql  # إنشاء الجدول
│   ├── upload/                  # مجلد الصور
│   └── upload_media/            # مجلد الفيديوهات
```

---

## ⚙️ الإعدادات | Configuration

### اتصال قاعدة البيانات | Database Connection

يتم استخدام الاتصال المركزي من `inc/con.php`:

```php
// Localhost
$dbConfig = [
    'host' => 'localhost',
    'dbname' => 'rassd',
    'user' => 'root',
    'pass' => ''
];

// Production
$dbConfig = [
    'host' => 'localhost',
    'dbname' => 'qaradawi_books',
    'user' => 'qaradawi_live',
    'pass' => 'TQW69m[gYa]0'
];
```

### إعدادات RSS | RSS Settings

```php
$rss_url = 'https://rss.app/feeds/v1.1/Ptx5ZepR8310RT9O.json';
```

---

## 🚀 التشغيل | Usage

### 1. إنشاء الجدول | Create Table

```bash
mysql -u root rassd < backend/sql/create_social_media_content.sql
```

### 2. تشغيل السكريبت يدويًا | Manual Execution

```bash
cd /Applications/XAMPP/xamppfiles/htdocs/Rassd26/backend/api
php x_feeds.php
```

### 3. إعداد Cronjob | Setup Cronjob

```bash
# تشغيل كل 30 دقيقة
*/30 * * * * /usr/bin/php /path/to/Rassd26/backend/api/x_feeds.php >> /path/to/logs/twitter.log 2>&1
```

---

## 📊 أمثلة الاستعلامات | Query Examples

### جلب آخر المنشورات

```sql
SELECT * FROM social_media_content 
WHERE status = 1 
ORDER BY publish_date DESC 
LIMIT 20;
```

### جلب الفيديوهات فقط

```sql
SELECT * FROM social_media_content 
WHERE content_type = 10 
AND status = 1 
ORDER BY publish_date DESC;
```

### جلب منشورات Twitter مع معلومات المصدر

```sql
SELECT 
    smc.*,
    cs.name as source_name
FROM social_media_content smc
LEFT JOIN cat_sources cs ON smc.cat_sources = cs.id
WHERE smc.cat_sources = 1
ORDER BY smc.publish_date DESC;
```

### البحث في المحتوى

```sql
SELECT * FROM social_media_content 
WHERE (title LIKE '%كلمة البحث%' OR content_text LIKE '%كلمة البحث%')
AND status = 1
ORDER BY publish_date DESC;
```

---

## 🔧 التخصيص | Customization

### إضافة مصدر جديد (Instagram)

1. إضافة السجل في `cat_sources`:
```sql
INSERT INTO cat_sources (id, name, description) 
VALUES (2, 'Instagram', 'Instagram Posts');
```

2. تحديث السكريبت:
```php
$postData['cat_sources'] = 2; // Instagram
```

### تغيير التصنيف الافتراضي

```php
$postData['cat_id'] = 34; // غيّر الرقم حسب التصنيف المطلوب
```

---

## 📝 السجلات | Logging

السكريبت يحفظ سجل تفصيلي في:
```
backend/api/twitter_cronjob.log
```

يتضمن:
- ✅ عدد المنشورات المعالجة
- ✅ المنشورات الجديدة المضافة
- ✅ المنشورات المكررة المتجاهلة
- ✅ الأخطاء إن وجدت
- ✅ وقت التنفيذ

---

## ⚠️ ملاحظات مهمة | Important Notes

1. **الصور والفيديوهات**: تأكد من صلاحيات الكتابة على مجلدات `upload` و `upload_media`
2. **الذاكرة**: السكريبت يستخدم حتى 512MB من الذاكرة
3. **المهلة الزمنية**: الحد الأقصى للتنفيذ 600 ثانية (10 دقائق)
4. **التكرار**: يتم تجاهل المنشورات المكررة تلقائيًا
5. **الترميز**: جميع البيانات تُحفظ بترميز UTF-8MB4

---

## 🎯 الميزات | Features

✅ جلب تلقائي من RSS Feed  
✅ تحميل الصور والفيديوهات  
✅ منع التكرار  
✅ تحويل التواريخ لتوقيت القاهرة  
✅ تنظيف النصوص من الروابط  
✅ دعم معارض الصور  
✅ استخراج الفيديوهات من Twitter  
✅ تسجيل شامل للعمليات  
✅ معالجة الأخطاء  
✅ اتصال مركزي بقاعدة البيانات  

---

## 🆘 استكشاف الأخطاء | Troubleshooting

### خطأ في الاتصال بقاعدة البيانات
```
تحقق من ملف inc/con.php
تأكد من صحة بيانات الاتصال
```

### فشل تحميل الصور/الفيديوهات
```
تحقق من صلاحيات المجلدات
تأكد من اتصال الإنترنت
```

### منشورات مكررة
```
تحقق من جدول social_media_content
ابحث عن post_id المكرر
```

---

**تم التطوير بواسطة**: Antigravity AI  
**التاريخ**: 2026-02-09  
**الإصدار**: 1.0
