feature/sermon-audio-import #119
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Slovo_Propovedi/slovo-propovedi-mobile!119
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/sermon-audio-import"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
feat: импорт проповеди из YouTube / Invidious (аудио + метаданные)
Что
В админ-форме у поля «YouTube (URL)» — блок импорта. Источники: YouTube (youtubei.js, клиент ANDROID_VR — без PO-токенов) и Invidious (пресеты + свой адрес, хранится в AsyncStorage). Кнопка «Импортировать» (активна при непустом URL): скачивает аудио на устройстве → грузит на сервер → заполняет название, описание, закрепляет аудиофайл.
Веб: работает Invidious-источник (fetch-стрим + FormData); YouTube на вебе отключён чипом с подсказкой (PO-токены в браузере — debt).
Формат m4a без конвертации (осознанно: ffmpeg-kit ретирнут, AAC играет нативно и в вебе; бэкенд 0.12.0+ принимает — проверено end-to-end). Ручной пикер теперь тоже принимает m4a.
Прогресс двухфазный, отмена при размонтировании, temp-файл чистится всегда; ошибки — типизированные тосты («Сервис недоступен», «Видео недоступно»…).
Коммиты
Debt / вне скоупа
YouTube-импорт на вебе (нужны PO-токены в браузере); надёжность Invidious зависит от инстанса; youtubei.js чинится обновлением библиотеки. Детали — docs/debt.md, решения — docs/decisions.md.
830aadb668d627f5347dd627f5347d04a8b7eafcWeb manual picker reads the document-picker blob: URI via fetch and wraps it in a browser File (uploadSermonFile no longer constructs expo-file-system File on web, fixing "this.validatePath is not a function"). Native picker builds the classic RN multipart part { uri, name, type } and posts it directly via axiosInstance instead of appending an expo File. Split shared upload primitives into uploadFilePart.ts. FileUploadField shows the media-library button only for the image kind (supportsLibrary flag). Signed-off-by: egoreast <egor.east@yandex.ru>View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.