This commit is contained in:
root
2025-10-02 17:09:36 +00:00
parent 54a533f267
commit 545b5e0d68
7 changed files with 278 additions and 1280 deletions

View File

@@ -1,20 +1,8 @@
# TorrentEngine Library
Мощная библиотека для Android, обеспечивающая полноценную работу с торрентами через LibTorrent4j.
Либа для моего клиента и других независимых проектов где нужен простой торрент движок.
## 🎯 Возможности
-**Загрузка из magnet-ссылок** - получение метаданных и загрузка файлов
-**Выбор файлов** - возможность выбирать какие файлы загружать до и во время загрузки
-**Управление приоритетами** - изменение приоритета файлов в активной раздаче
-**Фоновый сервис** - непрерывная работа в фоне с foreground уведомлением
-**Постоянное уведомление** - нельзя закрыть пока активны загрузки
-**Персистентность** - сохранение состояния в Room database
-**Реактивность** - Flow API для мониторинга изменений
-**Полная статистика** - скорость, пиры, сиды, прогресс, ETA
-**Pause/Resume/Remove** - полный контроль над раздачами
## 📦 Установка
## Установка
### 1. Добавьте модуль в `settings.gradle.kts`:
@@ -38,7 +26,7 @@ dependencies {
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
```
## 🚀 Использование
## Использование
### Инициализация
@@ -127,7 +115,7 @@ lifecycleScope.launch {
}
```
## 📊 Модели данных
## Модели данных
### TorrentInfo
@@ -180,7 +168,7 @@ enum class FilePriority(val value: Int) {
}
```
## 🔔 Foreground Service
## Foreground Service
Сервис автоматически запускается при добавлении торрента и показывает постоянное уведомление с:
- Количеством активных торрентов
@@ -190,12 +178,10 @@ enum class FilePriority(val value: Int) {
Уведомление **нельзя закрыть** пока есть активные торренты.
## 💾 Персистентность
## Персистентность
Все торренты сохраняются в Room database и автоматически восстанавливаются при перезапуске приложения.
## 🔧 Расширенные возможности
### Проверка видео файлов
```kotlin
@@ -215,54 +201,6 @@ val selectedCount = torrent.getSelectedFilesCount()
val selectedSize = torrent.getSelectedSize()
```
## 📱 Интеграция с Flutter
[Apache License 2.0](LICENSE).
Создайте MethodChannel для вызова из Flutter:
```kotlin
class TorrentEngineChannel(private val context: Context) {
private val torrentEngine = TorrentEngine.getInstance(context)
private val channel = "com.neomovies/torrent"
fun setupMethodChannel(flutterEngine: FlutterEngine) {
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, channel)
.setMethodCallHandler { call, result ->
when (call.method) {
"addTorrent" -> {
val magnetUri = call.argument<String>("magnetUri")!!
val savePath = call.argument<String>("savePath")!!
CoroutineScope(Dispatchers.IO).launch {
try {
val hash = torrentEngine.addTorrent(magnetUri, savePath)
result.success(hash)
} catch (e: Exception) {
result.error("ERROR", e.message, null)
}
}
}
// ... другие методы
}
}
}
}
```
## 📄 Лицензия
MIT License - используйте свободно в любых проектах!
## 🤝 Вклад
Библиотека разработана как универсальное решение для работы с торрентами в Android.
Может использоваться в любых проектах без ограничений.
## 🐛 Известные проблемы
- LibTorrent4j требует минимум Android 5.0 (API 21)
- Для Android 13+ нужно запрашивать POST_NOTIFICATIONS permission
- Foreground service требует отображения уведомления
## 📞 Поддержка
При возникновении проблем создайте issue с описанием и логами.
Made with <3 by Erno/Foxix