22 Mar 2026

QNAP NAS ile Tam Otomatik Film Sistemi

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-development imajı)
  • 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İçerikDurum
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:

  1. http://NAS-IP:6767/system/status adresini açın
  2. Bazarr Version: 1.5.6 yazıyor mu? ✅
  3. System > Providers > opensubtitlescom: Good mu? ✅
  4. Settings > Languages > Turkish aktif mi? ✅

🔧 Yaygın Sorunlar ve Çözümleri

SorunÇözüm
Bazarr hâlâ eski sürüm gösteriyorEski 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ıyorKonteyner 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