- 16 Mar 2022
- 1,490
- 1,649
(Yaptığım proje Windows'a özgüdür. Linux için ayrıca düşünülmedi)
Herkese merhaba. Nasılsınız ? Umarım keyifler yerindedir ve umarım çevrenizde toxic insanlar yoktur. Zira internet ortamında fazlaca var
Bugün size Python ile .EXE Güncelleme Sistemi adlı açtığım konudan sonra aklıma bir fikir geldi.
Kendi kendime "Güncelleme yapacak biri neden bu kadar zahmet çeksin ki zaten bir proje yaparken gereğinden fazla efor sarf ediyor" dedim. Bu düşünceyle hareket ederek bir modül oluşturdum.
(Bu arada açıklamasına aldanmayın birkaç şey denerken değiştirmeyi unutmuşum ŞŞşş olur öyle arada)
Oluşturduğum modüle spesifik bir isim haliyle bulamayınca updater yerine pydater dedim.(pytube misali )
.
.
Güzel iyi hoş isim bulduktan sonra kodlamaya başladım. Bugün haliyle bitip Pypiye yükledim.
Size özelliklerinden ve kullanılabilecek bazı alanlardan bahsediyim ardından kullanışına geçelim.
Özelliklerini kısaca açıklamak gerekirse;Herkese merhaba. Nasılsınız ? Umarım keyifler yerindedir ve umarım çevrenizde toxic insanlar yoktur. Zira internet ortamında fazlaca var
Bugün size Python ile .EXE Güncelleme Sistemi adlı açtığım konudan sonra aklıma bir fikir geldi.
Kendi kendime "Güncelleme yapacak biri neden bu kadar zahmet çeksin ki zaten bir proje yaparken gereğinden fazla efor sarf ediyor" dedim. Bu düşünceyle hareket ederek bir modül oluşturdum.
Oluşturduğum modüle spesifik bir isim haliyle bulamayınca updater yerine pydater dedim.(pytube misali )
.
.
Güzel iyi hoş isim bulduktan sonra kodlamaya başladım. Bugün haliyle bitip Pypiye yükledim.
Size özelliklerinden ve kullanılabilecek bazı alanlardan bahsediyim ardından kullanışına geçelim.
- Uzun kod yazmaktan kurtarıyor
- anlamsal bir bütünlüğü olan tek bir sınıftan oluşan modül kendisi.
- methodların açıklamaları ile kullanımı daha da kolay kılıyor.
- kendisi bir adet versiyon dosyası oluşturuyor. Oluşturduğu dosyaya sizin eklediğiniz başlangıç sürümü/versiyon numarasını ekliyor.
- Githubda güncel tutulan programınızı/yazılımınızı/dosyasınızı belirlediğiniz ve o doğrultuda formatlanmış uzantı ile indirebiliyorsunuz
Hangi Alanda Kullanılabilir ?
- Yani hemen hemen bütün alanlarda kullanılabilir diyebilirim.
- Forumda da birçok insan bir program geliştirip onu "v0.1 sürümü" ile belirtip indiren insanların daha sonraki çıkacak versiyonlarını indirmeleri için indiren insanlarla iletişime geçmeli ya da hatırlatma yapmalı ki çıkardığı yeni versiyonunu indirtebilsin. Bu modül bu dertten de kurtarıyor. Yani forumdaki arkadaşlara çok yarayacak diyebilirim.
- Masaüstü programlarınızda işinize yarayabilir(ikinci maddede belirttim gibi)
- Yaptığınız herhangi bir tool'da işe yarayabilir.
Şimdi açıklamalarımın ardından Kullanışını adım adım gösteriyorum
Öncelikle modülü kullanabilmek için terminal ekranımızı açıp
pip install pydater
yazalım
Kod:
pip install pydater
Evet modülümüzü yükledik şimdi sizde var olan text editörünüzü ya da kullandığınız IDE yi açın ve yazmaya başlayalım.
Python:
from Pydate import pydate
Bir adet instance/örnekleme (nesne de diyebilirsiniz) oluşturmamız gerekiyor
Python:
from Pydate import pydate
pd = pydate.PyDate()
Pydate Sınıfımız bizden iki adet arguman bekliyor. Biri path(dosya yolu) ikincisi github raw linki.
O halde onanları da yazarak kodumuz şu hale gelsin:
Python:
from Pydate import pydate
raw_link = "https://raw.githubusercontent.com/Arif-Helmsys/guncelleme-sistemi/main/version.json"
klasörüm = f"C:\\Users\\...\\Desktop\\Yeni klasör"
pd = pydate.PyDate(path=klasörüm,rawlink=raw_link)
Artık sıra dosya oluşturma versiyon belirleme ve dosyanın kontrolüne geldi.
Python:
if pd.create_version_file(0.1):
print("Güncelleme dosyası oluşturuldu versiyon 0.1 olarak ayarlandı")
else:
print("Güncelleme dosyası zaten var")
Karşımıza create_version_file adında bir method çıktı. Neyin nesidir bu method ?
eğer versiyon dosyanız yoksa False döndürür ve dosyayı oluşturur. Dosya zaten varsa True döndürür.
float veri tipi dışında başka bir veri tipi girilirse TypeError: Float value is required! Hatası verir.
Şimdi Githubdan yeni bir repo oluşturuyorum(isterseniz halihazırda reponuzu kullanabilirsiniz) ve içerisine "version.json" bu isimde (bu isim mecburi) bir ".json" dosyası oluşturuyorum.
İçeriğini şöyle yazıyorum:
JSON:
{
"version" : "0.5"
}
raw_linki
adında bir değişkenimiz vardı. İşte bu değişkenimize atanan değer bu .json dosyasının linki idi. Bu linki de şöyle alıyoruz; İlgili repomuza gidip version.json dosyamıza tıklayıp açılan yeni pencerenin sağında bulunan "RAW" butonuna tıklayıp url kısmından kopyalayarak gerçekleştiriyoruz..
.
.
Şimdi Kontrol işlemi gerçekleştirelim.
Python:
if pd.isUpdate:
print("Güncel")
else:
print("Güncel Değil")
Güncelliğini anlıyorsak güncelleyebiliriz de. Ama güncellemeden önce son bir işlemimiz bulunuyor. Birşey güncelleyeceksek githubda tuttuğumuz henüz yayınlamadığımız güncel sürüm olan uygulamamızı(yada herhangi bir şey) yüklemek. Bunun için güncel tuttuğunuz herneyse onu indirmek için json dosyasına yaptığımız gibi üzerine tıklayıp ilgili pencere açılınca sağ tarafta bulunan DOWNLOAD butonun bağlantısını kopyalamak.
O zaman uygulamamızı indirelim:
Python:
if pd.isUpdate:
print("Güncel")
else:
print("Güncel Değil")
pd.downloadLink(url="https://github.com/Arif-Helmsys/guncelleme-sistemi/raw/main/program.exe",extension=".exe")
pd.writeNewVersion()
downloadLink: Aldığı ilk arguman indirme linki oluyor ikinci arguman ise uygulamanın dosyasına bağlı olan uzantısı. Yaptığınız projenizde indirteceğiniz dosyanın uzantısı ne ise ikinci parametreye noktasıyla belirtmelisiniz. eğer yanlış veya olmayan bir uzantı yazarsanız size TypeError: There is no such extension hatası verecektir.
writeNewVersion: Herhangi bir arguman almaz. Yaptığı özellik, lokalde oluşturulan versiyon numaranızı githubdaki belirlediğiniz versiyon numarasına yükseltir. downloadLink methodu ile kullanılması mantıklı olur.
Son hali:
Python:
from Pydate import pydate
raw_link = "https://raw.githubusercontent.com/Arif-Helmsys/guncelleme-sistemi/main/version.json"
klasörüm = f"C:\\Users\\...\\Desktop\\Yeni klasör"
pd = pydate.PyDate(path=klasörüm,rawlink=raw_link)
if pd.create_version_file(0.1):
print("oluşturuldu")
else:
print("zaten vardı")
if pd.isUpdate:
print("güncel")
else:
print("güncel değil")
pd.downloadLink(url="https://github.com/Arif-Helmsys/guncelleme-sistemi/raw/main/program.exe",extension="..exe")
pd.writeNewVersion()
Sizce ne gibi özellikler eklenebilir ?
Neler değiştirilebilir yazarsanız çok sevinirim.
Github linkini bırakıyorum olurda yıldızlamak istersiniz
GitHub - Arif-Helmsys/pydate-update
Contribute to Arif-Helmsys/pydate-update development by creating an account on GitHub.
github.com
Dilim döndüğünce bilgim yettiğince ve hala geliştirilebilir olduğunu, konumu okudukça şunlar şunlar eklenmeliymiş dediklerimin çıktığını gördüğüm size de anlatmaya ve göstermeye çalıştığım bu konunda sonuna gelmiş bulunuyoruz.
Bir dahaki bilmem ney üzerine olacak konumda görüşmek üzere.
Bir dahaki bilmem ney üzerine olacak konumda görüşmek üzere.
Son düzenleme: