Radarr • Bazarr • ARM32v7 • QNAP TS-431P2
Konteyner imajı güncellenemeyen eski NAS'larda da çalışır! 🛠️
🤔 Neden Bu Sorunla Karşılaştım?
Tam otomatik film sistemimi kurduğumda her şey mükemmel çalışıyordu. Ta ki Bazarr'ı güncellemek isteyene kadar.
QNAP TS-431P2'nin ARM Cortex-A15 işlemcisi için Bazarr'ın yeni Docker imajı yok. Kullandığım imaj v1.2.2-beta.6'da kalmış, v1.5.6 çıkmış ama ARM32v7 için resmi build yayınlanmıyor.
Çoğu insan burada pes eder. Ben etmedim.
✨ Çözüm: Konteyner İçinden Güncelleme
Bazarr aslında bir Python uygulaması. Docker imajını değiştiremeseniz de konteyner içindeki Bazarr kodunu güncelleyebilirsiniz. GitHub'dan v1.5.6'yı indirip mevcut dosyaların üzerine yazıyoruz — konteyner aynı kalıyor, Bazarr yeni sürümde çalışıyor.
Ama ARM32v7 imajının eski kütüphaneleri yüzünden işin içinden çıkmak o kadar kolay değildi. Toplam 7 farklı hata çıktı, hepsini tek tek çözdüm. Aşağıda hepsini açıklıyorum.
📋 Ne Gerekiyor?
- QNAP NAS + Container Station (ARM32v7 — TS-431P2, TS-431P3 vb.)
- Çalışan Bazarr konteyneri (
arm32v7-developmentimajı) - Container Station'dan konteynerin Execute Console'una erişim
- İnternet bağlantısı (pip paketi indirme için)
⚙️ Neden Bu Kadar Karmaşık?
ARM32v7 imajında iki klasör var:
| Klasör | İçerik | Durum |
|---|---|---|
libs/ | ARM32v7'ye özel subliminal kütüphaneleri | ⚠️ Eski — uyumsuz |
custom_libs/ | Yeni subliminal kütüphaneleri | ✅ Güncel |
Python önce libs/'e bakıyor. Eski kod yükleniyor, yeni Bazarr ile çakışıyor. Fix'lerin büyük çoğunluğu custom_libs/'ten doğru dosyayı libs/'e kopyalamaktan ibaret.
🚀 Adım 1 — Bazarr v1.5.6'yı İndir
Container Station > bazarr konteyneri > Execute > /bin/bash konsoluna bağlanın.
cd /tmp
wget -q https://github.com/morpheus65535/bazarr/releases/download/v1.5.6/bazarr.zip -O bazarr.zip
unzip -q bazarr.zip -d /tmp/bazarr_new
cp -r /tmp/bazarr_new/* /app/bazarr/bin/
⚠️ libs/ klasörü zip'in içinde gelmiyor — kopyalama sırasında ARM32v7 kütüphaneleri korunuyor. Bu önemli.
🔧 Adım 2 — 7 Fix'i Uygula
Her fix aynı yöntemle bulundu: python3 bazarr/main.py --no-update --config /config çalıştır, hatayı oku, düzelt, tekrar çalıştır. Yedi turda tamamlandı.
Fix 1 — language_equals hatası
SZProviderPool.__init__() got an unexpected keyword argument 'language_equals'
cp /app/bazarr/bin/custom_libs/subliminal_patch/core.py \
/app/bazarr/bin/libs/subliminal_patch/core.py
Fix 2 — tmdb_id AttributeError
AttributeError: 'Movie' object has no attribute 'tmdb_id'
sed -i 's/if data\.tmdbId and not video\.tmdb_id:/if data.tmdbId and not getattr(video, "tmdb_id", None):/' \
/app/bazarr/bin/bazarr/subtitles/refiners/database.py
Fix 3 — include_ai_translated TypeError
OpenSubtitlesComProvider.__init__() got an unexpected keyword argument 'include_ai_translated'
cp /app/bazarr/bin/custom_libs/subliminal_patch/providers/opensubtitlescom.py \
/app/bazarr/bin/libs/subliminal_patch/providers/opensubtitlescom.py
Fix 4 — Eksik exception sınıfları
ImportError: cannot import name 'ForbiddenError' from 'subliminal_patch.exceptions'
ImportError: cannot import name 'ContentNotUsable' from 'pysubs2.exceptions'
cp /app/bazarr/bin/custom_libs/subliminal_patch/exceptions.py \
/app/bazarr/bin/libs/subliminal_patch/exceptions.py
grep -q "ContentNotUsable" /app/bazarr/bin/libs/pysubs2/exceptions.py || \
echo -e "\nclass ContentNotUsable(Pysubs2Error): pass" >> /app/bazarr/bin/libs/pysubs2/exceptions.py
Fix 5 — more_itertools eksik
ModuleNotFoundError: No module named 'more_itertools'
pip3 install more_itertools --target /app/bazarr/bin/libs/ -q
Fix 6 — typeguard versiyon çakışması
ImportError: cannot import name 'NoExtraItems' from 'typing_extensions'
pip install typeguard otomatik olarak 4.x kuruyor ama ARM32v7'de çalışmıyor. 2.13.3 kullanmak gerekiyor:
rm -rf /app/bazarr/bin/libs/typeguard /app/bazarr/bin/libs/typeguard-*.dist-info
pip3 install "typeguard==2.13.3" --target /app/bazarr/bin/libs/ -q
Fix 7 — typing_extensions güncelleme
pip3 install "typing_extensions>=4.5.0" --target /app/bazarr/bin/libs/ -q
📋 Tüm Fix'leri Tek Script'te
Konteyner yeniden oluşturulunca (recreate) bu adımların tamamını tekrar yapmak gerekiyor. /config volume'u kalıcı (OpenSubtitles ayarları, dil ayarları korunur) ama /app/bazarr/ değil. Aşağıdaki script'i bir kez çalıştırın, her şey hallolur:
cd /app/bazarr/bin
# Bazarr v1.5.6 indir
cd /tmp
wget -q https://github.com/morpheus65535/bazarr/releases/download/v1.5.6/bazarr.zip -O bazarr.zip
unzip -q bazarr.zip -d /tmp/bazarr_new
cp -r /tmp/bazarr_new/* /app/bazarr/bin/
cd /app/bazarr/bin
# Fix'leri uygula
cp custom_libs/subliminal_patch/core.py libs/subliminal_patch/core.py
sed -i 's/if data\.tmdbId and not video\.tmdb_id:/if data.tmdbId and not getattr(video, "tmdb_id", None):/' bazarr/subtitles/refiners/database.py
cp custom_libs/subliminal_patch/providers/opensubtitlescom.py libs/subliminal_patch/providers/opensubtitlescom.py
cp custom_libs/subliminal_patch/exceptions.py libs/subliminal_patch/exceptions.py
grep -q "ContentNotUsable" libs/pysubs2/exceptions.py || echo -e "\nclass ContentNotUsable(Pysubs2Error): pass" >> libs/pysubs2/exceptions.py
pip3 install more_itertools --target libs/ -q
rm -rf libs/typeguard libs/typeguard-*.dist-info
pip3 install "typeguard==2.13.3" --target libs/ -q
# Yeniden başlat
find /app/bazarr/bin -name "*.pyc" -delete
kill -9 $(pgrep -f "bazarr.py")
echo "Hazır — 2-3 dakika bekle, sonra http://NAS-IP:6767 aç"
✅ Sistemi Test Et
Script tamamlanıp 2-3 dakika bekledikten sonra:
http://NAS-IP:6767/system/statusadresini açın- Bazarr Version: 1.5.6 yazıyor mu? ✅
- System > Providers > opensubtitlescom: Good mu? ✅
- Settings > Languages > Turkish aktif mi? ✅
🔧 Yaygın Sorunlar ve Çözümleri
| Sorun | Çözüm |
|---|---|
| Bazarr hâlâ eski sürüm gösteriyor | Eski Python process hâlâ çalışıyor olabilir. pgrep -a -f "bazarr" ile PID'leri bulun, hepsini kill edin. S6 otomatik yeniden başlatır. |
| Script sonrası yeni import hatası çıktı | python3 bazarr/main.py --no-update --config /config 2>&1 | head -20 çalıştırın, hatayı okuyun. Muhtemelen eksik bir pip paketi — aynı yöntemle --target libs/ ile kurun. |
| pip install çalışmıyor | Konteyner içinde internet erişimi yoksa QNAP güvenlik duvarı engellemiş olabilir. Container Station > ağ ayarlarını kontrol edin. |
| Konteyner recreate sonrası her şey sıfırlandı | Normal — /app/bazarr/ kalıcı değil. Script'i tekrar çalıştırın. /config volume'u korunduğu için ayarlar kaybolmaz. |
👍 Son Söz
ARM32v7 imajının eski kütüphaneleri yüzünden 7 farklı hata çıktı. Her seferinde yalnızca ilk hata görünüyor, arkasındakiler gizli kalıyor — bu yüzden süreci tek seferde tahmin etmek mümkün değil.
Ama bir kez çalışınca her şey aynı eskisi gibi işliyor: Plex'e film ekliyorum, Türkçe altyazısıyla otomatik geliyor.
Herhangi bir sorunuzda yorum bırakın.
Hiç yorum yok:
Yorum Gönder