Hallettim, sistem çok güzel çalışıyor. Beklediğimden biraz daha fazla zaman harcadım ve beklediğimden çok daha iyi bir sistem oldu.

--

2 hafta sonra sınavım var ve bunu takip eden 3 hafta boyunca boş olacağım. Bu süreçte bir proje yapmak istiyorum. Okulumuzun uzaktan eğitim sisteminden çok memnun değilim, sürekli çökmeler yaşanıyor ve hiç düzen yok. (https://uzaktanegitim.erbakan.edu.tr)

Şuanda Google Spreadsheet üzerinden telegram botu yazdım ve entegre ettim. Kendisinden not isteyince (Mesela "Farmakoloji 15" diyince) benim daha önceden elimle indirip bota eklediğim notu gönderiyor.

Ben şöyle birşey yapmak istiyorum: Kendisi 1 saat arayla yeni not yüklenmiş mi diye kontrol edecek. Yeni not yüklenmiş ise okuldan bunu indirip bana telegramda dosyayı gönderecek ve hangi kategoriye eklemem gerektiğini soracak. Ben de cevap vereceğim (misal Bu not patolojinin 30. notu diyeceğim) ve onu o kategoriye koyacak.

Ancak ben daha önce hiç herhangi bir siteden veri çekmedim ve nasıl yapılacağını bilmiyorum. Bu Google Spreadsheet üzerinde çalışır mı onu da bilmiyorum çalışmaz ise belki ucuza 15-20 liraya kiralayabileceğim bir sunucu bulursam oraya da taşıyabilirim.

Siteden veri çekme ile ilgili şöyle detaylı bir yazı varsa talibim. Ayrıca Spreadsheet üzerinde bunu yapabilir miyim, onu da size sormak istiyorum. (Ben biraz arama yaptım lakin henüz aramayı bilmiyorum galiba. Hiçbir sonuca ulaşamadım.)

BeğenFavori PaylaşYorum yap
  • Eminentia @eminentia

    Sizin belki bilginiz vardır. Beni bilgilendirirseniz sevinirim 🙂
    @ozgurg @erenhatirnaz

  • cestlavie @cestlavie

    python ile yapıyordu benim arkadaşlar bu veri alma verme kontrol işlerini üninin sisteminden. dolu derste yer açılınca bildirim atardı mesela telefonlarımıza. detayını maalesef bilemiyorum ama python ile veri çekme vs diye aratabilirsin

  • Eren Hatırnaz @erenhatirnaz

    Daha önce bir bot geliştirmedim. Google Spreadsheet üzerinden Telegram botu nasıl yazılır bilmiyorum. Ancak programlama olarak aklıma gelen akış şöyle:

    0. Google drive API'lerini kullanarak spreadsheet'deki ders notu verileri getir.
    1. Bu veriler ile sitedeki ders notlarını karşılaştırarak yeni ders notu yüklenmiş mi kontrol et. (Siteye kullanıcı adı ve şifre gibi şeylerle girmek gerekiyorsa puppeteer gibi kütüphaneler kullanmak gerekebilir)
    2. Yeni ders notları eklenmişse bunları indir. (Nereye indirecek? Bot nerede çalışacak?)
    3. Telegram Bot API'lerini kullanarak dosyayı kendine gönder ve bot'un senden cevap beklemesini sağla.
    4. Cevap verdiğinde başlığı ve ders notunu google drive api'lerini kullanarak spreadsheet'e satır olarak ekle. (Burada anlamadığım ders notunu tabloya nasıl ekliyorsun? Üniversitenin sitesindeki dosya linkini mi veriyorsun yoksa nasıl?)
    5. Yeni satır eklendiğinde zaten Google Spreadsheet'de yazdığın telegram botu onu görecektir. Artık onu da isteyebilecekler kullanıcılar.

    Aslında bu tam FaaS (Function as a Service) hizmetlerinden faydalanabileceğin bir tür iş. Telegram'da senden cevap bekleme kısmı biraz sıkıntı sadece. Betik direkt çalışıp işini bitirse çok daha kolay ve daha az maliyetli olurdu. FaaS hizmetleri böyle basit çalıştır-bitir işleri için çok verimli. Senin tetiklemenle ya da bir zamanlayıcı kurarak bu fonksiyonu çalıştırabilirsin. Kısa süreli işler olduğu için maaliyeti de çok az oluyor ama botun senden cevap bekleme kısmı fonksiyonun çalışma süresini uzatıyor maalesef. Öyle olmasa ücretsiz kullanım limitinden faydalanarak da bu veri çekme işlerini otomatikleştirebilirsin.

    Biraz karışık bi' senaryo ama benim aklıma ilk bu geldi. Belki başka arkadaşlardan daha basit çözümler gelebilir.

    • Eminentia @eminentia

      1. Bu konuyu esas açma sebebim buydu aslında. Siteden verileri nasıl getireceğimi bilmiyorum ve doğru düzgün bir kaynak da bulamadım. (Google Spreadsheet sanırım Java kullanıyor, ben normalde C++ kullanıyorum hiç yabancılık çekmedim.)
      2. Evet, bu da bir merak konusu. Bu dosyayı indirmek için illaki bir hosting almam gerekli mi? Dosyayı oradan doğrudan Google Drive'a indirmem mümkün değil mi? (Esasında siteden veri çekmeyi ve yüklenen yeni notun sadece linkini kendime atsam dahi büyük başarı olarak kabul edeceğim. Çünkü o karışıklığın içinde günde 3-4 kez yeni not yüklenmiş mi diye kontrol ediyorum. Yine de dosyayı doğrudan telegrama 1 kereliğine yükleyebilsem iş yükünü bayağı azaltacak ama olmasa da 1-2 ay daha idare edebilirim.)
      4. Dosya telegrama 1 kez yüklendikten sonra telegram bu dosyaya özgü bir kimlik atıyor. Bu kimliği veritabanında saklayıp birisi istediğinde kimliği atınca dosyayı atmış oluyorsun. Dosyayı saklamak gerekmiyor, 1 kez telegrama yüklenmesi kâfii.

      FaaS konusunu araştıracağım hocam. Değerli bilgiler için teşekkürler.

    • Eren Hatırnaz @erenhatirnaz

      @eminentia Web siteden içerik çekme vb. işler için Java/C++ gibi diller biraz ağır kaçabilir. Bu tarz işler için daha çok Python vb. script dilleri tavsiye ediliyor. "Web crawling python" gibi anahtar kelimeler ile istediğiniz türden içerikler bulabilirsiniz.
      Eğer telegramda dediğiniz gibi bir yapı varsa bu script nerede çalışıyorsa oraya bir kez indirme yapması yeterlidir. Google Drive'a indirtmekte mümkün olabilir. Dediğim gibi Google Drive API'lerine bakmak gerek.

      Söylediğinize göre biraz daha basitleştirmek gerekirse şu şekilde olabilir: "Web crawling" yöntemleri ile siteden içeriği indiren ve bir klasöre atan bir script yazabilirsiniz. Günde 3-4 kez çalıştıracaksanız kendi bilgisayarınızda çalışması yeterlidir. Bunu yapmak diğerine kadar çok daha kolaydır aslında.

    • Eminentia @eminentia

      @erenhatirnaz API denilen şeyin ne olduğunu bilmiyordum. Bu yönlendirmeniz çok işe yaradı. Ne arıyorsam bulabiliyorum bu sayede. Telegram ve Google Drive apilerini kullanarak istediğimi yapabiliyorum. Ancak bu konu dışında başka bir sorun var. Okulumuzun sitesine üye girişi yapmaya çalışıyorum ancak site her girişte token denilen yeni bir kod tanımlıyor. Üye girişinde başa onu da yazmak gerekiyor. "https://uzaktanegitim.erbakan.edu.tr/login/index.php?anchor=&token=32satirbirkod&username=username&password=password"
      Bu kod doğru değilse site girişi reddediyor. İlk önce sadece siteye bağlanıp veriyi çekiyorum tokeni elde etmek için. Ancak üye girişi yapmak için yaptığım ikinci girişimde bağlantı kopmuş ve yeniden kurulmuş olduğu için yeni bir token veriyor ve bu sebeple bağlanamıyorum. 8 saat buna uğraştım ama nafile. Nasıl bir çözüm bulabilirim buna bir fikriniz var mı?

      Kullandığım dil: Google Apps Script, yani JavaScript
      Google üzerinde python ile çalışma yapılamıyormuş, tek desteklenen buymuş.

    • Eren Hatırnaz @erenhatirnaz

      @eminentia Üzerinde çalıştığınız platform hakkında bilgim yok. Ne tarz işlevsellikleri olduğunu bilmediğim için bir yöntem öneremeyeceğim maalesef. Platformdan bağımsız olarak bu tarz işlerde genelde Puppeteer gibi çözümler kullanılıyor ama dediğim gibi üzerinde çalıştığınız platformda kullanabilir misiniz bilmiyorum.