Hocam şu sıra pek müsait değilim o yüzden buradan yardımcı olmaya çalışayım. Öncelikle attığınız link bir IDE, kodları derlemeye yarayan bir yazılım. Ücretsiz versiyonu ile Kotlin kodlayabilirsiniz. İkincisi attığınız görseldeki terimlerin çoğu da ilk mesajımda söylediğim OOP konusu ile alakalı. Mesela override anahtar sözcüğü ve constructor kullanılmış. Şimdi hiç tecrübeniz olmadığı için bu terimlerden hiçbir şey anlamayacaksınız farkındayım ancak bunun kestirme bir yolu yok. OOP üniversitelerde teorik tarafı ayrı işlenen bir ders ve kredisi de gerçekten yüksek olabiliyor.
Attığınız görselde API'den çağırma methodları falan da kullanılmış ama sanırım buraya girmeyeceksiniz, girecek olsanız işiniz çok daha zorlaşırdı. Size tavsiyem BTK'da 8 saatlik bir kurs var, buranın temelini aldıktan sonra fonksiyonlardan fonksiyonel programlamaya kadar olan bölümünü bitirirseniz bana bahsettiğiniz videodan bakıp benzeterek eminim yazarsınız. Synxtaxı farklı ancak Java kursu da alıp bu terimleri öğrenebilirsiniz, bunu söyleme sebebim Java çok daha yaygın bir dil olduğu için eminim daha çok kurs bulursunuz. Bu terimleri öğrendikten sonra herhangi bir dilde bu terimleri kullanmak için tek ihtiyacınız olan o dilin syntaxını yani söz dizim kurallarını öğrenmek oluyor. Yapay zekadan destek alma fikri de bence gayet yerinde, çalıştığınız projenin çalıştığınız yerlerindeki kodları örnek olarak yapay zekaya tanıtıp kendi yazdıklarınızı o şekilde yeniden formatlamasını isteyebilirsiniz. Eninde sonunda yaptığınız değişiklik GitHub tarafında kontrol edilecek yanlışlarınız varsa da düzeltilip öyle onaylanacaktır.
Keşke yapay zeka ile dataset oluşturmak kadar kolay yolları olsaydı.
Değerli öneriler için teşekkür ederim.
Videonun gidişatını sessiz de olsa NLP ile çıkardım:
## Uygulama Adım Adım Rehberi (Step-by-Step Guide)
### 1. Depoyu açıyoruz
- Açılış (Open) → “Repository” veya proje klasörünü aç.
### 2. IntelliJ kullanıyorum
- IntelliJ IDEA IDE içinde çalışıyoruz.
### 3. IntelliJ içinde terminali açıyoruz
-
Ctrl + Alt + T veya ekranın alt kısmındaki
Terminal
sekmesine tıklayıp açıyoruz.
### 4. Yapacağım eklentinin adını giriyorum (Enter the name of the plugin)
- Terminale eklenti adı yazılır:
myPluginName
### 5. Varsayılan gelen dosyaların isimlerini değiştiriyorum (Rename default files)
- Dosyaya sağ-tık (Right-click) →
Rename (
Yeniden Adlandır
) seçeneği.
### 6. Dosya adlarını düzenli olarak değiştiriyorum (Use Rename)
- Örneğin
DefaultClass.java
→
MyPluginClass.java
### 7. Yolun sonunda bulunan “/” işaretini siliyorum (
/
removal)
- metin içinde
mainUrl/
→ sondaki
/
işaretini sil.
### 8. “Türler” (genres) bölümüne gidiyorum (Navigate to “genres” section)
- İlgili dosya veya kod satırına tıklayıp açıyoruz.
### 9. İlgili alanları seçip
Ctrl + Backspace
ile siliyorum (Delete fields with Ctrl + Backspace)
- Tüm metni seç (Shift + Arrow) →
Ctrl + Backspace
### 10. Aynı işlemi diğer alanlarda da tekrarlıyorum
- Gereken tüm yerlerde aynısını uyguluyoruz.
### 11. Fare orta tuşu ile seçim yapıyorum (Select with middle-click)
- Orta fare tuşuna basılı tutarak sürükleyip metni seçiyorum.
### 12. Orta tuş ile seçip “to” yazıyor ve
Ctrl + Del
ile hizalıyorum
- Seçim sonrası
to
yazılır →
Ctrl + Del
ile metni hizala.
### 13. Liste sonlarında virgül olduğundan emin oluyorum (Ensure commas at ends)
- Her satır sonunda
,
(virgül) var mı kontrol et.
### 14. Sadece
mainUrl
değişince hepsinin etkilenmemesi için fonksiyonu kopyalıyorum (Copy function to isolate mainUrl)
- İlgili fonksiyonu seç → Ctrl + C → başka yere Ctrl + V.
### 15. Ana URL kısmına bu kopyayı yapıştırıyorum (Paste into main URL section)
-
mainUrl
alanına Ctrl + V ile yapıştır.
### 16. Diğer sayfaları almak için URL yapısına bakıyorum (Check URL structure for pagination)
- URL örneği:
...?page=1
### 17.
?page=
varsa diğer sayfalar için bunu ekliyoruz
-
?page=1
→
?page=$page
### 18. Sayfa sayısı yerine
$page
yazıyoruz (Use variable
$page
)
- Değişkenle yapılandır:
$mainUrl?page=$page
### 19. Arama kısmında bulduğumuz yapıyı (ör.
div.class
) tarıyoruz (Search via selector)
- Kodda
div.class
gibi CSS seçicisini arama/kullanma.
### 20. “Enter” bastıkça içerik değişiyorsa doğru div’dır (Test selector)
- Enter ile test, içerik değişiyorsa seçici
div.col
olarak doğrulandı.
### 21. Ana sayfa kısmına bu
div.col
seçiciyi ekliyoruz (Add selector to homepage scraping)
- Kodda homepage element tanımına ekle.
### 22. Başlık için
a.list-title
kullanıyoruz (Use
a.list-title
for title)
- Eğer
a
etiketi içinde
class="list-title"
varsa, bu seçiciyle başlık çekilir.
### 23.
img
yoksa biraz ileride arıyoruz (Look beyond for image tags)
- Kodda ilerleyerek
img
veya
data-src
attribute kontrolü.
### 24. Verinin
data-src
içinde geldiğini buluyoruz (Find data in
data-src
)
- Poster bilgisinin burada olduğunu tespit et.
### 25. Posterleri
div.media.cover
içinden alıyoruz (Extract poster from
div.media.cover
)
- Selector:
div.media.cover
→ attribute
data-src
.
### 26. URL’de “film” varsa tipini film olarak ayarlıyoruz (If URL contains “film”, mark type film)
- Koşul:
if (url.contains("film")) type = "film";
### 27–28.
if / else
ile koşulları ayarlıyoruz (Set
if/else
logic)
- Kodda mantıkla ayrıştır ve tür belirle.
### 29–31. “search” fonksiyonu hazırlığı (Configure search function)
-
search(query)
fonksiyonunda
query
kullanıcı deyimi: "ne arayacak".
### 32. Emülatöre gönderip test ediyorum (Test on emulator)
- Emulator çalıştır → test.
### 33–36. Poster sorunu varsa logla ve düzelt (Log and fix poster issues)
- Log: poster alanı boşsa, log at → incele → düzelt.
### 37–41.
load
fonksiyonu içinde film sayfasını inceliyoruz (Inspect in load function)
- Detaylı veri çekimi için adım adım doğrula: açıklama, başlık, poster vs.
### 42–45. Diğer alanları kontrol et (Check other fields like rating, duration)
- Sayfa kaynağında yoksa ignore et.
### 46–49. “Önerilenler” ve oyuncuları ekle/sil (Manage recommendations and actors)
- Gerekli olanları ekle, olmayana geç.
### 50–55. Bölümler ve sezonları ayarla (Handle episodes & seasons)
-
episodes
div içindeki
a
etiketleri, sezon/bölüm bilgilerini substring veya attribute içinden çıkar.
### 56–60. Bölüm adı ayarlama (Set episode names)
- Boşsa “Bölüm X”, doluysa name kullan.
### 61–67. Test et, düzelt, tekrar test et (Test, fix, retest)
- Her adımda test et → sorun varsa düzelt → tekrar dene.
### 68–72. Anime için benzer süreç (Repeat process for anime)
- Farklı element yapısı varsa benzer mantık uygulanır: title, description, subtitles.
### 73–77. Videoların iframe yolunu bul (Extract video from iframe)
-
iframe src
çek → log → test.
### 78–87. Video oynatma ve play test (Play video)
- iframe URL’i doğruysa video oynar.
### 88–91. build.gradle ve authors bölümünü düzenle (Update build.gradle & authors)
- Gerekli bağımlılıklar ve yazar açıklamasını ekle.