### 1. **( كود الخادمserver.
py)**
** يستضيف الملفات ويوفر:** الوظيفةAPI للوصول إليها.
```python
from flask import Flask, jsonify, send_from_directory
import os
app = Flask(__name__)
# مسارات المجلدات
KIDS_FOLDER = 'media/kids'
ISLAMIYAT_FOLDER = 'media/islamiyat'
def get_media_files(folder):
media = []
for root, dirs, files in [Link](folder):
for file in files:
if [Link](('.mp4', '.mp3')):
[Link]({
"title": [Link](file)[0],
"url": f"/{[Link](root, file)}"
})
return media
@[Link]('/kids')
def kids_api():
return jsonify(get_media_files(KIDS_FOLDER))
@[Link]('/islamiyat')
def islamiyat_api():
return jsonify(get_media_files(ISLAMIYAT_FOLDER))
@[Link]('/media/<path:filename>')
def media_files(filename):
return send_from_directory('.', filename)
if __name__ == '__main__':
[Link](host='[Link]', port=5000, debug=True)
```
---
### 2. **( كود التطبيق[Link])**
** تشغيل الملفات عبر+ واجهة المستخدم:** الوظيفةMX Player.
```python
from [Link] import Builder
from [Link] import Screen, ScreenManager
from [Link] import MDApp
from [Link] import OneLineListItem
from [Link] import MDDialog
import requests
from android import AndroidIntent
KV = '''
ScreenManager:
MainScreen:
KidsScreen:
IslamiyatScreen:
<MainScreen>:
name: 'main'
MDRectangleFlatButton:
text: ""مسلسالت كرتون
pos_hint: {'center_x':0.5, 'center_y':0.6}
on_release: [Link] = 'kids'
MDRectangleFlatButton:
text: ""اناشيد اسالمية
pos_hint: {'center_x':0.5, 'center_y':0.4}
on_release: [Link] = 'islamiyat'
<KidsScreen>:
name: 'kids'
ScrollView:
MDList:
id: kids_list
<IslamiyatScreen>:
name: 'islamiyat'
ScrollView:
MDList:
id: islamiyat_list
'''
class MainScreen(Screen):
pass
class KidsScreen(Screen):
pass
class IslamiyatScreen(Screen):
pass
class MyApp(MDApp):
def build(self):
self.server_url = "[Link] # غير هذا بعنوان الخادم
return Builder.load_string(KV)
def on_start(self):
self.load_kids()
self.load_islamiyat()
def load_kids(self):
try:
response = [Link](f"{self.server_url}/kids")
kids_screen = [Link].get_screen('kids')
kids_screen.ids.kids_list.clear_widgets()
for item in [Link]():
kids_screen.ids.kids_list.add_widget(
OneLineListItem(
text=item['title'],
on_release=lambda x, url=item['url']: self.play_media(url)
)
)
except:
self.show_dialog("" يوجد اتصال بالخادم
ال," )"!خطأ
def load_islamiyat(self):
try:
response = [Link](f"{self.server_url}/islamiyat")
islamiyat_screen = [Link].get_screen('islamiyat')
islamiyat_screen.ids.islamiyat_list.clear_widgets()
for item in [Link]():
islamiyat_screen.ids.islamiyat_list.add_widget(
OneLineListItem(
text=item['title'],
on_release=lambda x, url=item['url']: self.play_media(url)
)
)
except:
self.show_dialog("" يوجد اتصال بالخادم
ال," )"!خطأ
def play_media(self, url):
intent = AndroidIntent()
[Link]("[Link]")
[Link](f"{self.server_url}{url}")
[Link]()
def show_dialog(self, title, text):
MDDialog(
title=title,
text=text,
buttons=[MDRectangleFlatButton(text=""حسنًا, on_release=lambda x: None)]
).open()
if __name__ == '__main__':
MyApp().run()
```
---
### 3. ****هيكل المجلدات
```
- media/
- kids/
- 1 مسلسل/
- 1 الحلقة.mp4
- 2 الحلقة.mp4
- islamiyat/
- أناشيد/
- 1 نشيد.mp3
- قرآن/
- سورة الفاتحة.mp3
- [Link]
- [Link]
```
---
### 4. ** ملفBuildozer ([Link])**
** توليد ملف:** الوظيفةAPK للتطبيق.
```ini
[app]
title = إجازتي
[Link] = ijazati
[Link] = [Link]
[Link] = .
source.include_exts = py,png,jpg,kv,ttf
version = 1.0
requirements = python3,kivy==2.1.0,kivymd,requests,android
orientation = portrait
osx.python_version = 3
osx.kivy_version = 2.1.0
fullscreen = 0
[Link] = INTERNET, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE
[Link] = armeabi-v7a
[Link] = 30
[Link] = 21
[Link] = 19b
android.gradle_dependencies = '[Link]:multidex:1.0.3'
[Link] = master
```
---
### 5. ****خطوات التشغيل
1. ****تشغيل الخادم:
```bash
python [Link]
```
2. ** إنشاءAPK**:
- قم بتثبيتBuildozer:
```bash
pip install buildozer
```
- انشئAPK:
```bash
buildozer android debug
```
---
### مالحظات:
- ` ضع ملفات الفيديو والصوت في مجلداتmedia/`.
- ` في[Link]` ` غير[Link]` إلىIP الخادم الفعلي.