KebabLord / turkanime-indirici

Türk Anime bölüm indirici ve oynatıcı
https://kebablord.github.io/turkanime-indirici/docs/klavuz.html
Other
55 stars 17 forks source link

Yeni özellik önerileri #41

Closed emrhnkc closed 2 weeks ago

emrhnkc commented 1 year ago

Sorunu açıklayın Otomatik ya da manuel fark etmiyor 720p indiriyor. Desteklediği kaynaklarda 1080p yüklenmişi var ama 720p iniyor. Sibnet ve myvi kaynakları olmayan fansubdan bir anime indirdiğim zaman 1080p indi. Bu iki kaynak sebebiyle 720p indiğini düşünüyorum. Çözünürlük seçimi veya kaynak seçimi ya da kaynaklarda önem sırasını düzenleyebilmeyi [örn: GoogleDrive>Odnoklassinki>Dailymotion>VK>Mail.ru>Sibnet>Myvi] ekleyebilir misin?

Lütfen aşağıdaki bilgileri doldurun:

KebabLord commented 1 year ago

Başlık için teşekkürler. Bizim için çözünürlük kadar indirme hızı da önemli, dolayısıyla mevcut streamer sitesi öncelik sıralaması indirme hızına göre oluşturuldu zamanında. Tabi script'i yaratmanın üstünden 4 yıl geçtiğinden bu sıranın değişmiş olması muhtemel. Dediğin şekilde streamer öncelik sırasını güncelleyebiliriz.

Teorik olarak, bir bölüme ait yüklenmiş tüm videolar'ın çözünürlüklerini youtube-dl ile öğrenmek mümkün olsa da, her bir videonun çözünürlüğünü ayrı ayrı denetlemek gerçekten çok uzun sürüyor, dolayısıyla en yüksek çözünürlüğe bu şekilde ulaşmak şimdilik bir hayal.

Kafamda güncelleme geldiğinde uygulamanın bildirim vermesi gibi bir kaç özellik eklemek daha vardı, sıradaki release'de bu sorunu da çözmeye çalışacağım. Ayrıyetten kulağa bir anime indirici script için gereksiz derecede fazla efor gibi geliyor olsa da kendimi front-end'de geliştirmek için bir türkanime-gui versiyonu yapmak da var aklımda.

Idhtft commented 1 year ago

Aynı konuyu ben de açacaktım 1080p indirme veya player seçme gibi bir ayar eklense çok iyi olur, GUI görmek de güzel olurdu ancak şu anki hâli de zaten oldukça basit, yine de minimal bir GUI ile kullanmak müthiş olurdu. Benim ilk önceliğim yüksek çözünürlükte indirmek.

Bir de sıradaki release'de batch indirmelerde fansub seçmeyi eklersen sevinirim şu an fansub seçimi yalnızca 1 video indirileceği zaman kullanılabiliyor.

KebabLord commented 1 year ago

o zaman sıradaki release'lerde yapılacaklar listesi

emrhnkc commented 1 year ago

İndirme hızı kaynaktan kaynağa değişkenlik gösteriyor. Kimi kaynakta 300 kb kimi kaynakta 1 mb hızla indiriyorum. Tabii hangi kaynağı kullandığını bilmiyorum. Hangi kaynaktan indirme yaptığını öğrenmek için HTTP Debugger kullanamaya çalıştım ama webdriver ile çakışma yaşadığından trafiği lzleyemedim. WindowsTerminal_gHJp9wLb33

Dediğin gibi tüm kaynakların çözünürlüğünü kontrol etmek çok zahmetli gözüküyor, default ayar ya da manuel ayar kullanmak daha pratik bir çözüm. Ayrıyeten aklıma her bir kaynağının çözünürlüğü yerine boyutunu kontrol etmek de gelmişti ama bu da aynı kapıya çıkıyor. GUI yığın indirmede kullanışlı olur. Aklıma gelen GUI'ye eklenebilecek özellikleri yazıyorum ben de:

KebabLord commented 1 year ago

@chocolax çok teşekkürler. Bu arada çözünürlüğü keşfetmek için video boyutunu kontrol etmek de hiç fena fikir değilmiş, belki youtube-dl'in format modundan daha hızlı tespit edebilir, denemeye değer.

öte yandan mevcut sürümde indirmeler kaldığı yerden devam edebiliyor eğer aynı bölüm tekrar indirilmeye çalışıyorsa ve önceki yarım inmiş dosya silinmemişse. Ayrıca ayarlarda indirilenler klasörünü de yeniden belirleyebiliyoruz, o ikisi hazır gibi.

gokaybiz commented 1 year ago

Uygulama su anda bir cli app olarak sinirlarini zorluyor aslinda. Bunu arsivleyip gui versiyonunu gelistirmeli bence de.

KebabLord commented 1 year ago

@gokaybiz gui versiyonu geliştirmek için akla gelen ilk yöntem flask+webgui, tkinter veya qt olsa da aklımda daha basit bir çözüm var. Zaten selenium'a mahkumsak neden arayüzü de direk geckodriver üstüne inşa etmeyelim ki?

Zaten firefox, arayüzü chrome.css üstünden istediğimiz gibi şekillendirmemizi sağlıyor. Tarayıcının adres çubuğu, scrollbar'ı gibi detayların bu custom tema ile gizlendiğini düşünelim. Uygulamanın arayüzü de yeni bir sekme de bir web framework üstünden yaratılabilir. Bu bizi hem türkanimeden thumbnail gibi görsel kaynakların kolayca çekilmesini sağlar hem de bizi tonlarca fazladan dependecy kurmaktan kurtarır. Tek yapmak gereken geckodriver'ı headless moddan çıkartmak ve firefox'u arayüzün minimal olduğu custom bir profile ile başlatmak. Bu sayede repo'yu ikiye ayırmak yerine hem cli'yi hem de gui'yi aynı uygulama üstünden servis edebiliriz. Aklımda şimdilik bu var.

gokaybiz commented 1 year ago

Overwhelming olur ikisini bir arada tutmak. master branch'i forklayip devam edilebilir gui icin. dediklerin mantikli. flask yerine bottle oneririm.

hakankarakis commented 10 months ago

Hocam bencede cözünürlük konusunda 1080p olsaydi cok güzel olurdu mesela Manuel secim olsaydi harika olurdu örnegin sunu deseydi: kalite>hiz yada hiz>kalite su secenekler gibi. Ama tabiki de en güzeli kendimizin secebiliyor olabilmesiydi... eline emegine saglik cok güzel uygulama ama dedigim gibi eger kaliteyi manuel secebilseydik muhtesem olurdu...

OmerFaruk35-dot commented 9 months ago

Merhabalar Öncelikle bu dev hizmet için elinize emeğinize sağlık. Arkadaşların dediği gibi indirme hızı çok değişkenlik gösteriyor, Bu konuları hiç bilmiyorum nacizane öneri olarak alırsanız sevinirim. Acaba indirme yaparken (internet download manager veya jdownloader 2) gibi programların kullandığı çoklu parçacıklı indirip en sonda dosya birleştirme gibi yaparsa programamız bu hız sorunu çözmüş olurmuyuz? Tekrardan çok teşekkür ederim.

Prohibitive commented 8 months ago

@KebabLord çok uzun zamandır programınızı kullanan biri olarak nacizane birkaç fikrimi dile getirmek isterim. İlk önce Download Hızının çok bir önemi olmadığını tahmin ediyorum Lakin hız olarak sıralama yapmak gerekirse Drive - OK - mail.ru - sibnet- Diğerlerini listeye koymaya bile gerek yok. Bitrate bence daha önemli, Yüksek bitrate verenlere göre listeleme yapmak çok daha avantajlı olacaktır. Bitrate olarak ise sıralama şu şekilde Drive - OK.RU- Mail.ru - gerisi 1500-1000 Kbits olarak oynatmaktadır, hele sibnet bitratesi yerlerdedir. Turkanime.co da Çalışan Drive bulmak oldukça zor hele son hesap kapanmalardan sonra neredeyse imkansız lakin OK.ru ve Mail.ru çok daha çalışan link bulunabiliyor. Nacizane Önerim ise Bitrate üzerine gidilmesidir. Bu konuda drive dan sonra ok.ru en yüksek bitrateyi veren sitedir. En azından Programda önceliğini seçtirebilirseniz yada sıralama yaptırabilirseniz daha iyi olur ama sıralama yaptıramazsanız programda şuanda sibnet olarak ilk indirme sitesini OK.ru ya çevirebilirseniz bence daha iyi olur. Drive - Ok.ru - Mail.ru - Sibnet (İlk indirme sıralaması) Saygılarımla.

KebabLord commented 8 months ago

@hakankarakis @chocolax @Idhtft
millet 70ed008c74b5c394f8401665ebd825ed65b3208c commit'i ile beraber "En yüksek çözünürlüğe sahip videoyu bul" özelliğini nihayet ekledim. Videoların çözünürlüğü tespit ediliyor ve 1080p olan video öncelikli oluyor. Şuan source kod üstünden deneyebilirsiniz, ufak hata gidermelerinin ardından yeni exe sürümü de yakında yayınlayacağım. https://github.com/KebabLord/turkanime-indirici/blob/70ed008c74b5c394f8401665ebd825ed65b3208c/turkanime_api/objects.py#L216-L224 @Prohibitive Yapıcı fikirlerin için çok teşekkür ederim dost, bahsettiğin durumun ben de geç farkına vardım. Fakat son güncellemede sıralamayı baştan aşağı değiştirdim. İlaveten MP4UPLOAD adlı yüksek bitrate'li playerı ve UQLOAD'ı da artık script destekliyor.

Şuanki yeni sıralama aşağıda, sıralamaya ilişkin fikirlerini paylaşabilirsin. https://github.com/KebabLord/turkanime-indirici/blob/70ed008c74b5c394f8401665ebd825ed65b3208c/turkanime_api/objects.py#L16-L32

hakankarakis commented 8 months ago

Hocam hatikasin ama odnoklasniki alternatifini en sonlara atmissin bence gdrive den sonra gelecek kaynak olmalidir bence.

Prohibitive commented 8 months ago

@KebabLord Cevapların ve geliştirmelerin için çok teşekkür ederim. Yüksek bitrate ile stream etmek, 1080p gbi çözünürlükten daha önemlidir. Yani 4000kbits 720p mi 1500 kbits 1080p mi sorusunun cevabı, 4000 kbits 720pdir. Bitrate göre sıralama yapmak gerekirse GDRIVE, GPLUS, YADISK, ODNOKLASSNIKI, VK, MAIL, DAILYMOTION ve diğerleri. Diğerlerinin fazla bir önemi yok cunku hepsi düşük bitrate veriyor. 4000 Kbits 1080p veya daha fazla bitrate destekleyenler ise "GDRIVE, GPLUS, YADISK, ODNOKLASSNIKI" dir. Saygılarımla

KebabLord commented 8 months ago

@Prohibitive ne demek istediğini anlıyorum, zaten 1080p videoların çoğu da gerçekten 1080p değil 720p'den upscale ölçeklendirilmiş videolar. Dediğin biçimde yeniden sıralandıracağım, tabi extra olarak MP4UPLOAD'ı da üst sıralara ekleyeceğim çünkü o da demux yapmıyor ve yüklenen bitrate'i koruyor bildiğim kadarıyla (yanlış biliyorsam düzelt)

Bu arada diğer alternatiflerin desteklenmesinin amacı da, hiçbir çalışan video bulunamamışsa yedek planı görevi görmeleri. Biliyorsun bazı egzotik seriler var ki tek fansub ve yalnızca 2-3 player'la sınırlı. Fazladan player desteğine sahip olmak sıralamayı doğru yaptığım sürece script'i yavaşlatmıyor.

Prohibitive commented 8 months ago

@KebabLord evet mp4upload da yukarılarda olmalı lakin sorun şu çalışan mp4upload linki bulmak zor. Adamlar hemen siliyorlar. Sadece bitrate daha doğrusu en kaliteli sıralaması yapacaksak ve diğer herşeyi gözardı edeceksek (ölü link vs) mp4upload ın Drive ve gplus dan hemen sonra yani 3. sıraya gelmesi lazım keza ok.ru dan daha fazla bitrate veriyor. En iyi örneği https://www.turkanime.co/video/cross-ange-tenshi-to-ryuu-no-rondo-1-bolum BD sürümü ile anlatabilirim sanırım. OK.ru neredeyse birebir aynı bitrateyi vermiş, diğerlerinden de fazla. Çok fazla alternatif eklemek demek, çok fazla fixlemek demek :D

KebabLord commented 8 months ago

@Prohibitive anlıyorum, bunlar değerli bilgiler. O zaman script'in çalışan video ararken ve kullanıcıya bağlı olarak 1080p ararken harcayacağı zamanı da göz önünde bulundurursak final sıralamayı nasıl yapmalı?

Bu iyi mi:

# Çalıştığı bilinen playerlar ve öncelikleri
SUPPORTED = [
    "GDRIVE",
    "GPLUS",
    "MP4UPLOAD",
    "YADISK",
    "ODNOKLASSNIKI",
    "VK",
    "MAIL",
    "DAILYMOTION",
    "SIBNET",
    "UQLOAD",
    "VIDMOLY",
    "YOURUPLOAD",
    "SENDVID",
    "MYVI",
]

daha fazla player demek daha fazla fix gerektirmesi demek

aslında gerektirmiyor çünkü 14 player'ın her biri için özel özel uğraşmadım, tüm işi yt-dlp hallediyor. MP4UPLOAD desteği de aslında yeni gelmedi, yt-dlp zaten destekliyormuş, yalnızca ben bunu yeni fark ettim ve bu listeye ekledim. Dediğim gibi dandik player'ların da kalması gerekiyor çünkü videonun düşük bitrate'de oynatılması, hiç oynatılamamasından iyidir. Düne kadar SIBNET en üst sıralardaydı, kullanıcılar özellikle bu sebepten düşük çözünürlük hakkında şikayet ediyordu.

Prohibitive commented 8 months ago

@KebabLord bitrate olarak düşündüğümüzde gayet makul. Bu değişiklikleri v8 de mi yayınlayacaksın yoksa şimdiki versiyonda aktif mi? Ek olarak sürüm güncellemeleri veya değişiklikler için bir update tools yapmaya ne dersin ? Kendisini update etse mesala ?

KebabLord commented 7 months ago

@Prohibitive @hakankarakis @OmerFaruk35-dot @chocolax @Idhtft @toprak Beyler 1080p'yi bulan yeni exe sürümü nihayet yayınladım, kodun çoğunu baştan yazdığım için pek çok bug olabilir, geri bildirimleriniz benim için önemli. https://github.com/KebabLord/turkanime-indirici/releases/tag/v8.1.0

@Prohibitive: update tools yapmaya ne dersin ?

Kodu baştan aşağı yazmamdandır muhtemelen, artık bıktığım söylenebilir. Şimdilik üşeniyorum ona dost.

ghost commented 7 months ago

@KebabLord dost windows 11 pro da test ettim sikinti yok.

Prohibitive commented 7 months ago

@KebabLord emeklerine sağlık. Hemen test etmeye başladım. Windows Server 2012 r2 de indirmeler başladı. Aynı anda 6 tane misler gibi şimdilik :) image

Çoklu Açınca da sorun çıkmadı. image

Gördüğüm kadarı ile OK.ru öncelikli değil. https://www.turkanime.co/video/machine-doll-wa-kizutsukanai-1-bolum burda anikeyf ok.ru olmasına rağmen mail.ru dan indiriyor. ok.ru nun bitratesi ve indirme hızı mail.ru ya kıyasla daha yüksektir (aynı firma olmasına rağmen:)) image

Ok.ru indirmiyor. https://www.turkanime.co/video/mo-dao-zu-shi-q-1-bolum image

KebabLord commented 7 months ago

@Prohibitive @toprak geri bildirimleriniz için çok teşekkür ederim

@Prohibitive OK.ru'nun bitrate'i dediğin gibi kesinlikle yüksek, lakin indirme hızı ve oynatma hızı o kadar düşük ki tahammül edemedim daha gerilere attım. Mo Dao Zu Shi Q'daki ok.ru problemini ben de gözlemledim, düzeltip bir exe daha yayınlayacağım, teşekkürler.

Prohibitive commented 7 months ago

@Prohibitive @toprak geri bildirimleriniz için çok teşekkür ederim

@Prohibitive OK.ru'nun bitrate'i dediğin gibi kesinlikle yüksek, lakin indirme hızı ve oynatma hızı o kadar düşük ki tahammül edemedim daha gerilere attım. Mo Dao Zu Shi Q'daki ok.ru problemini ben de gözlemledim, düzeltip bir exe daha yayınlayacağım, teşekkürler.

@KebabLord ok.ru daki indirme hızı 100 mbits den fazladır. Sanırım seninle alakalı bir durum bu. image

KebabLord commented 7 months ago

@Prohibitive idm kullanman sayesinde çok büyük aydınlanma yaşadım.

ok.ru'da videolar daha hızlı izlenebilmesi için fragmentler şeklinde tutuluyor, tek dosya olarak değil. youtube-dl de videoları indirirken bu fragmentleri tek tek sıra sıra indiriyor dolayısıyla aşırı yavaş indiriliyor. IDM ise muhtemelen fragmentleri paralel olarak indirerek yüksek hıza ulaşıyor. IDM'nin normalde ücretli olması ve bir API'ı olmamasından mütevellit script'e dahil edemem ancak yt-dlp'nin opensource bir IDM alternatifi olan Aria2c'yi desteklediğini öğrendim.

Alttaki örnekte hem standart ytdl hem de aria2c ile desteklenmiş ytdl'yi karşılaştırdım. aria2c 5 fragmenti paralel olarak indiriyor. image

ve sonuç mükemmel:

ytdlp generic:
217.57KiB/s ETA 12:27
ytdlp + aria2c:
2.85MiB/s ETA 00:01:04

bugünden başlayarak en kısa süre içinde script'e aria2c'yi entegre edeceğim ve senin zamanında açtığın #47 'de çözülmüş olacak.

Prohibitive commented 7 months ago

@KebabLord est hocam. Hasretle bekliyor olacağım ok.ru yu. Sanırım aynı problem mail.ru da da olabilir. Anlam veremediğim bir şekilde sadece ok.ru da değil farklı bir hostta ta problem var ama bir türlü yakalayamadım. Şuandaki Öncelik sıralaması nedir yazar mısın lütfen?

Prohibitive commented 7 months ago

@KebabLord Sibnet gibi birkaç vod sitesine sunuculardan yani datacenter sunucularından giriş yapsanız bile oynatma izni vermiyorlar biliyorsun. Bu yüzden acaba proxy veya shock5 desteği mi eklesek ? ip port username pass gibi ?

KebabLord commented 7 months ago

@Prohibitive Script desteklediği tüm player'ların videolarını rahatlıkla oynatabiliyor, bu konuda sırtını yt-dlp projesine dayıyor. Sibnet'de başarıyla oynatılabiliyor.

Ama illa birileri proxy kullanmak isterse, veya çerez falan yüklemek isterse scripti source koddan çalıştırıp object.py'yi editleyebilir: https://github.com/KebabLord/turkanime-indirici/blob/89c56c19ddf98d68e90f2254ec75c52964034ce4/turkanime_api/objects.py#L285-L294

Örneğin buraya şu satırı eklemek proxy'i açacaktır:

        'proxy': 'socks5://user:pass@127.0.0.1:1080/',
DogancanYr commented 3 months ago

Video oynatıcı modlu olarak mı gelse ? https://github.com/mpvnet-player/mpv.net https://github.com/1-minute-to-midnight/mpv-modern-x-compact https://github.com/po5/thumbfast https://github.com/bloc97/Anime4K

PsycOwl commented 1 month ago

Linux içinde yükleyip kurmak için yeterli tutorial yok. Linux sürümü olduğundan bile emin değilim. Home server içine kuracaktım ancak beceremedim. Window için olan exe ile indirip bölümleri sunucuya manuel atmak zorunda kaldım.

DogancanYr commented 1 month ago

Linux içinde yükleyip kurmak için yeterli tutorial yok. Linux sürümü olduğundan bile emin değilim. Home server içine kuracaktım ancak beceremedim. Window için olan exe ile indirip bölümleri sunucuya manuel atmak zorunda kaldım.

Linux sürümü yok Windows emulatorü kurup onda çalıştırman lazım. Wine ile de çalışabilir.

gokaybiz commented 1 month ago

@PsycOwl aslinda hizlica goz gezdirdigim kadariyla platform depend pek fazla bir sey gorunmuyor. Once projeyi forklayin, https://github.com/KebabLord/turkanime-indirici/blob/master/requirements.txt https://github.com/KebabLord/turkanime-indirici/blob/89c56c19ddf98d68e90f2254ec75c52964034ce4/turkanime_api/webdriver.py#L28 https://github.com/KebabLord/turkanime-indirici/blob/89c56c19ddf98d68e90f2254ec75c52964034ce4/turkanime_api/cli/gereksinimler.py#L16

yukaridaki baglantilardaki windows ilintili yerleri duzenledikten sonra python turkanime_api/cli/__main__.py seklinde calistirabiliyor olmaniz gerekiyor.

DogancanYr commented 1 month ago

@PsycOwl aslinda hizlica goz gezdirdigim kadariyla platform depend pek bir sey gorunmuyor. gereksinimler.json'u duzenleyin,

https://github.com/KebabLord/turkanime-indirici/blob/89c56c19ddf98d68e90f2254ec75c52964034ce4/turkanime_api/webdriver.py#L28

https://github.com/KebabLord/turkanime-indirici/blob/89c56c19ddf98d68e90f2254ec75c52964034ce4/turkanime_api/cli/gereksinimler.py#L16

yukaridaki baglantilardaki ilgili yerleri de duzenledikten sonra python turkanime_api/cli/__main__.py seklinde calistirabiliyor olmaniz gerekiyor.

Mesela indirme yolu veya mpv yolu Windows için ayarlanmış.

KebabLord commented 1 month ago

@gokaybiz @DogancanYr @PsycOwl Beyler yapmayın allah aşkına bu kadar zor olmamalı linux'ta kullanmak. Kendim bu scripti hiç windowsta kullanmadım bile.

# python paketini kurmak
pip install turkanime-cli
# gereksinimleri kurmak
sudo apt install mpv aria2c firefox
pip install yt_dlp
# Son olarak geckodriver'ı indireceksiniz ve $PATH içine taşıyacaksınız
# Ardından script'i direk başlatabilirsiniz
turkanime

Zaten wiki'de de yazıyor: https://github.com/KebabLord/turkanime-indirici/wiki/Gereksinimleri-Manuel-Kurmak

Linux için otomatik gereksinim kurulum sistemi eklemedim çünkü apt var, pacman var, yum var. Linux'ta zaten paket yöneticileri varken, ve kullanıcılar yazılım kurmaya teknik olarak daha hakimken benim otomatik bir sistem yaratmam biraz anlamsız olurdu.

İlaveten, script macos da olsa linux da olsa firefox dizinini tespit edebiliyor zaten hiç birşey modifiye etmeye gerek yok. https://github.com/KebabLord/turkanime-indirici/blob/89c56c19ddf98d68e90f2254ec75c52964034ce4/turkanime_api/webdriver.py#L32-L36

Üstelik script'i kurup çalıştırmayı denediğinizde ve bir gereksinim bulunamadığında script uyarı verip wiki'ye yönlendiriyor image

Script şuana dek raspberry pi 4'ten tutun, artix'e, devuan'dan tutun fedora'ya sayısız linux tabanlı dağıtımda yıllardır emülatörsüz ve düzenleme gerekmeden olduğu gibi kullanılabiliyor.

PsycOwl commented 3 weeks ago

@KebabLord biraz kurcaladıktan sonra kendi sunucumda da tek tuşla çalışması için docker görüntüsü oluşturmaya karar verdim.

Sistemin Docker imajını oluşturdum kendi lokalimde. Gerekli olan bütün şeyler yüklü ve ubuntu sandboxed çalışıyor.

https://github.com/user-attachments/assets/a5292ff5-c55f-46df-9352-158ed471a821

Bu repoya katkıda bulunabilir miyim? Ayrı bir fork mu açayım yoksa branch pull request mi göndereyim?

KebabLord commented 3 weeks ago

@PsycOwl öncelikle emeğini takdir ediyorum, ve katkın için teşekkür ediyorum. Anlamadığım tek konu bu scriptin bir docker konteynırı içinde ne kadar faydalı olacağı. Docker'dan mpv videosu oynatmak oldukça zor, hele windowsta. Docker'da indirilen dosyaları host'a aktarmak da hiç pratik değil. Script'in yalnızca API'ını kullanan için mantıklı olabilir de normal kullanici için benim kafamda bir senaryo canlanmadı.

yine de istersen forkla, dockerfile'ını ekle, pr yolla inceleyeyim

yakında bu başlığı kilitleyeceğim bu arada, buraya bir kere mesaj atmış herkese devamlı mail gidiyor aksi takdirde.