Yardım:Bot oluşturma

Robotlar veya botlar, Vikipedi (ve diğer Wikimedia projeleriyle) insan editörleri gibi etkileşimde bulunan otomatik işlemlerdir. Bu sayfa Wikimedia projelerinde kullanılmak üzere bir botun geliştirilmesinin nasıl gerçekleştirileceğini açıklamaya çalışır ve bunun çoğu MediaWiki'ye dayanan diğer wikilere aktarılabilir. Bu açıklama temel olarak bazı önceki programlama deneyimlerine sahip olanlara yöneliktir, ancak bu bilgiyi bir Vikipedi botu oluşturmak için nasıl kullanacağından emin değil.

Neden bir bot oluşturmam gerekiyor? değiştir

Botlar görevleri otomatikleştirebilir ve insanlardan çok daha hızlı bir şekilde gerçekleştirebilir. Çok kez yapmanız gereken basit bir göreviniz varsa (örneğin, 1000 sayfalık bir kategorideki tüm sayfalara şablon eklemek bir örnek olabilir), o zaman bu daha uygun bir görevdir. bir insandan çok bir bot için.

Bir bot oluşturmadan önce dikkat edilmesi gerekenler değiştir

Mevcut bir bottan bir bot işi istemek genellikle çok daha kolaydır. Yalnızca periyodik talepleriniz varsa veya programlamadan rahatsızsanız, bu genellikle en iyi çözümdür. Bu talepler Vikipedi:Botlar/İstekler'de yapılabilir. Ayrıca, herkesin kullanabileceği çok sayıda araç vardır. Bunların çoğu MediaWiki'ye özgü işlevselliğe sahip gelişmiş web tarayıcıları biçimini alıyor. Bunlardan en popüler olanları AutoWikiBrowser (AWB), özellikle Vikipedi ve diğer Wikimedia projelerinde düzenlemelere yardımcı olmak için tasarlanmış bir tarayıcıdır. Çoğunlukla eksiksiz bir takım listesi Vikipedi:Araçlar/Düzenleme araçları altında bulunabilir. AWB gibi araçlar çoğu zaman programlama konusunda çok az veya hiç anlamadan çalıştırılabilir.

Gereksinimlerinizin sıklığı veya yenilikçiliği nedeniyle kendi botunuza ihtiyacınız olduğuna karar verirseniz, sıfırdan bir tane yazmak zorunda değilsiniz. Zaten bir Vikipedi'de çalışan botların sayısı ve bu botların çoğu kaynak kodunu yayınlar, bu da bazen çok az geliştirme süresiyle tekrar kullanılabilir. Ayrıca birkaç standart bot iskeleti mevcuttur. Mevcut bir botu değiştirmek veya bir çerçeve kullanmak, geliştirme süresini büyük ölçüde hızlandırır. Ayrıca, bu kod tabanları ortak kullanımda olduğundan ve topluluk projeleri sürdürüldüğünden, kullanım için onaylanan bu çerçevelere dayanarak bot elde etmek çok daha kolaydır. Bu çerçevelerin en popüler ve yaygın olanı Pywikibot (PWB), Python ile yazılmış bir bot çerçevedir. İyice belgelendirilmiş ve test edilmiştir ve birçok standartlaştırılmış Pywikibot komut dosyası (bot talimatları) zaten mevcuttur. Bot çerçevelerinin diğer örnekleri aşağıda bulunabilir. PWB gibi bu bot çerçevelerinden bazıları için, botu başarıyla çalıştırmak için gerekli olan komut dosyalarına genel bir aşinalık (bu çerçevelerin düzenli olarak güncellenmesi önemlidir).

Yeni bir bot yazmak, önemli programlama yeteneği gerektirir. Tamamen yeni bir bot düzenli çalışma için onaylanmadan önce önemli testlerden geçirilmelidir. Başarılı bir bot yazmak için planlama çok önemlidir. Aşağıdaki hususlar önemlidir:

  • Bot elle yardım edilecek mi yoksa tamamen otomatik mi olacak?
  • Botu tek başına mı yoksa diğer programcıların yardımıyla mı oluşturacaksınız?
  • Botun istekleri, düzenlemeleri veya diğer eylemleri kaydedilebilir mi? Öyleyse, kayıtlar yerel medyada mı yoksa wiki sayfalarında mı saklanır?
  • Bot bir web tarayıcısının içinde mi çalışacak (örneğin, JavaScript ile yazılmış), yoksa bağımsız bir program mı olacak?
  • Eğer bot bağımsız bir programsa, yerel bilgisayarınızda mı yoksa Toolforge gibi uzak bir sunucuda mı çalışacak?
  • Eğer bot uzak bir sunucuda çalışıyorsa, diğer editörler botu çalıştırabilir veya çalışmaya başlayabilir mi?

Vikipedi botu nasıl çalışır? değiştir

Operasyona genel bakış değiştir

 

Tıpkı bir insan editörü gibi, bir Vikipedi botu da Wikipedia sayfalarını okuyor ve değişikliklerin yapılması gerektiğini düşündüğü yerlerde değişiklikler yapıyor. Aradaki fark, botların insanlardan daha hızlı ve daha az yorgun olmalarına rağmen, bizim kadar parlak bir yerde olmadıklarıdır. Robotlar, çok az karar verilmesi gereken, kolayca tanımlanmış modelleri olan tekrarlayan görevlerde iyidir.

En tipik durumda, bir bot kendi hesabına giriş yapar ve Vikipedi'den sayfaları bir tarayıcıda olduğu gibi aynı şekilde gösterir, ancak sayfayı ekranda görüntülemiyor, ancak bellekte çalışıyor ve ardından programatik olarak inceliyor. herhangi bir değişiklik yapılması gerekip gerekmediğini görmek için kodu girin. Daha sonra yapmak için ne tür bir düzenleme yapıldıysa, yine bir tarayıcıda olduğu gibi yapar ve sunar.

Botlar, sayfalara insanların yaptıkları gibi eriştiğinden, botlar insan kullanıcılarının yaptığı gibi zorluklarla da karşılaşabilir. Sayfalar talep ederken veya düzenlemeler yaparken düzenleme çatışmalarına yakalanabilir, sayfa zaman aşımına uğrayabilir veya diğer beklenmeyen komplikasyonlarla karşılaşabilirler. Bir bot tarafından yapılan iş hacmi, canlı bir insan tarafından yapılandan daha büyük olduğundan, botun bu sorunlarla karşılaşması daha muhtemeldir. Bu nedenle, bot yazarken bu durumları dikkate almak önemlidir.

API'ler için botlar değiştir

Vikipedi sayfalarında değişiklik yapmak için, bir botun mutlaka Vikipedi'den sayfaları alıp düzenlemeleri geri göndermesi gerekir. Bu amaçla kullanılabilen birkaç Uygulama programlama arayüzü (API) vardır.

  • MediaWiki API (api.php). Bu kütüphane özellikle sorgulama yapmak ve değişiklik yapmak için botlar gibi otomatik işlemlere izin vermek için yazılmıştır. Veri JSON formatında döndürülür (daha fazla ayrıntı için çıkış formatları bölümüne bakın).
    Durum: Tüm Wikimedia sunucularında mevcut olan MediaWiki'nin yerleşik özelliği. Wikimedia dışındaki diğer wikiler yazma erişimini engelleyebilir veya kısıtlayabilir.
    Api.php'nin özelliklerini test etmek isteyenler için API sandbox'da var.
  • Özel:DışaAktar sayfa içeriğinin toplu ihracatını XML biçiminde elde etmek için kullanılabilir. Argümanlar için Özel:DışaAktar parametreleri bölümüne bakın;
    Durum: Tüm Wikimedia sunucularında mevcut olan MediaWiki'nin yerleşik özelliği.
  • Ham (Wiki metin) sayfa işleme: bir action=raw veya bir action=raw&templates=expand index.php'ye GET isteği göndermek, bir sayfanın işlenmemiş wiki metin kaynak kodunu verir. action=query&prop=revisions&rvprop=content veya action=query&prop=revisions&rvprop=content&rvexpandtemplates=1 olan bir API sorgusu kabaca eşdeğerdir ve ek bilgi almanıza izin verir.
    Durum: Tüm Wikimedia sunucularında mevcut olan MediaWiki'nin yerleşik özelliği.

Bazı Vikipedi web sunucuları, sıkıştırılmış (gzip) içerik için istekleri sağlayacak şekilde yapılandırılmıştır. Bu, HTTP istek başlığında bir "Kabul Kodlaması: gzip" satırı eklenerek yapılabilir; HTTP cevap başlığı "İçerik Kodlaması: gzip" içeriyorsa, belge gzip biçimindedir, aksi halde normal sıkıştırılmamış biçimindedir. Bunun web sunucusuna özgü olduğunu ve MediaWiki yazılımına özgü olmadığını unutmayın. MediaWiki'yi kullanan diğer siteler bu özelliğe sahip olmayabilir. Mevcut bir bot çerçevesi kullanıyorsanız, bunun gibi düşük seviye işlemlerle ilgilenmelidir.

Giriş yapma değiştir

Düzenleme yapmak için onaylanmış botların oturum açması gerekir. Bir bot giriş yapmadan okuma talebinde bulunabilse de, testi tamamlamış olan botların tüm aktiviteler için giriş yapması gerekir. Bot işaretiyle bir hesaptan giriş yapan botlar Mediawiki API'sinden (api.php) sorgu başına daha fazla sonuç alabilir. Çoğu bot çerçevesi giriş ve çerezleri otomatik olarak işlemelidir, ancak mevcut bir çerçeveyi kullanmıyorsanız, bu adımları izlemeniz gerekir.

Güvenlik için, oturum açma verilerinin POST (HTTP) yöntemi kullanılarak iletilmesi gerekir. HTTP isteklerinin parametreleri URL'de kolayca görülebildiğinden, GET üzerinden girişler devre dışı bırakılır.

Bir botu MediaWiki API kullanarak giriş yapmak için 2 istek gereklidir:

İstek 1 - bu bir giriş belirteci edinmek için bir GET isteğidir
İstek 2 - bu giriş işlemini tamamlamak için bir POST'dur

TOKEN önceki sonucun belirtecidir. Önceki istekten gelen HTTP çerezleri de ikinci istekte iletilmelidir.

Başarılı bir oturum açma girişimi, Wikimedia sunucusunun birkaç Çerez (İnternet) ayarlaması ile sonuçlanacaktır. Bot bu çerezleri kaydetmeli ve talepte bulunduğunda bunları geri göndermelidir (bu düzenleme için çok önemlidir). İngilizce Vikipedi'de, aşağıdaki çerezler kullanılmalıdır: enwikiUserID, enwikiToken, ve enwikiUserName. enwiki_session gerçekten bir düzenleme göndermek veya değişiklik yapmak için bir çerez gereklidir, aksi takdirde MediaWiki:Session fail Preview hata mesajı döndürülür.

"action=login" üzerinden ana hesap girişi kaldırılmıştır ve uyarı vermeden çalışmayı durdurabilir. "action=login" ile giriş yapmaya devam etmek için, Özel:BotPasswords bölümüne bakın.

düzenleme; belirteçleri düzenle değiştir

Vikipedi sayfalarında düzenlemeler yapmak ve geri alma gibi mevcut içerikleri değiştiren diğer işlemleri yapmak için token'leri düzenle sistemini kullanıyor. Belirteç uzun onaltılık bir sayıya benziyor, ardından '+\', örneğin:

d41d8cd98f00b204e9800998ecf8427e+\

Belirteçleri düzenleme rolü, kullanıcıların tek bir bağlantıyı tıklatarak düzenleme yapmaya kandırıldıkları "düzenleme esirgemeyi" engellemektir.

Düzenleme işlemi iki HTTP isteğini içerir. İlk önce, düzenleme belirteci için bir istek yapılmalıdır. Ardından, sayfanın yeni içeriğini yeni elde edilen düzenleme simgesiyle birlikte gönderen ikinci bir HTTP isteği yapılmalıdır. Tek bir HTTP isteğinde düzenleme yapmak mümkün değildir. Düzenleme belirteci oturum açmış bir oturum süresince aynı kalır, bu nedenle düzenleme belirtecinin yalnızca bir kez alınması gerekir ve sonraki tüm düzenlemeler için kullanılabilir.

Bir düzenleme belirteci edinmek için aşağıdaki adımları izleyin:

  • MediaWiki API (api.php). Aşağıdaki parametrelerle bir istek yapın (see mw:API:Edit - Create&Edit pages).
    • action=query
    • prop=info
    • titles=PAGENAME
    • intoken=edit

    Belirteç, yanıtın edittoken özniteliğinde döndürülür.

Eğer botun düzenlediği düzenleme belirteci onaltılık dizgeye sahip değilse (i.e., düzenleme belirteci sadece '+\' dır), o zaman en büyük olasılıkla bot giriş yapmaz. Bu, birkaç faktöre bağlı olabilir: sunucu ile kimlik doğrulamada başarısızlık, kesik bir bağlantı, bir çeşit zaman aşımı veya doğru çerezleri saklamada veya iade etmede hata. Bir programlama hatası nedeniyle değilse, giriş çerezlerini yenilemek için tekrar giriş yapmanız yeterlidir. Botlar, giriş yaptıklarından emin olmak için Uzatma Düzenleme Uzantısı öğesini kullanabilir.

Düzenleme çakışması değiştir

Düzenleme çakışmaları aynı sayfada birden çok, üst üste gelen düzenleme denemesi yapıldığında ortaya çıkar. Neredeyse her bot olacak sonunda bir sıralama veya başka bir düzenleme çatışmasına yakalanır ve bu sorunları test etmek ve barındırmak için bazı mekanizmalar içermelidir.

Mediawiki API'sini (api.php) kullanan botlar, düzenleme metnini, starttimestamp ve son revizyon "base" timestamp ile birlikte, sayfa metnini sayfa hazırlığı için yüklemeden önce almalı; prop=info|revisions hem sorgu hem de sayfa içeriğini tek bir sorguda almak için kullanılabilir (içerik). Düzenlemeyi gönderirken, starttimestamp ve basetimestamp niteliklerini ayarlayın ve hata bildirimleri için sunucu yanıtlarını kontrol edin. Daha fazla ayrıntı için, mw:API:Edit - Create&Edit pages bakınız.

Genel olarak konuşursak, bir düzenleme botu tamamlayamazsa, düzenlemenin hala uygun olduğundan emin olmak için yeni bir düzenleme yapmadan önce sayfayı tekrar kontrol etmelidir. Ayrıca, bir bot bir değişikliği tekrar göndermek için bir sayfayı tekrar kontrol ederse, sonsuz bir döngüye yol açabilecek herhangi bir davranıştan ve hatta buna benzeyen herhangi bir davranıştan kaçınmak değişiklik savaşını için dikkatli olunmalıdır.

Bir bot geliştirme sürecine genel bakış değiştir

Aslında, bir botu kodlamak veya yazmak bir bot geliştirmenin yalnızca bir parçasıdır. Botunuzun Vikipedi'nin bot politikasını takip etmesini sağlamak için genellikle aşağıdaki geliştirme döngüsünü takip etmelisiniz. Politikaya uymamak, botunuzun onaylanmamasına veya Vikipedi'nin düzenlenmesi engellenmesine neden olabilir.

 
Vikipedi bot geliştirme döngüsüne genel bakış.

Fikir değiştir

  • Bir Vikipedi botu yaratmada ilk görev gereksinimleri ortaya çıkarmak veya bir fikir bulmaktır. Eğer bir bot için ne yazacağınız hakkında bir fikriniz yoksa, bir bot tarafından yapılması gereken işlemler fikir alabilirsiniz.
  • Mevcut bir botun zaten botunuzun yapması gerektiğini düşündüğünüz şeyi yapmadığından emin olun. Hangi botların daha önce bir bot tarafından gerçekleştirildiğini görmek için, çalışan botların listesi bakınız.

Şartname değiştir

  • Şartname, muhtemelen titiz bir şekilde yazılacak yazılımı tam olarak tanımlama görevidir. Ne yapmasını istediğinin detaylı bir önerisini bulmalısın. Bu teklifi bazı editörler ile tartışmaya çalışın ve geri bildirimlere dayanarak düzeltin. Harika bir fikir bile diğer editörlerin fikirlerini dahil ederek daha iyi olabilir.
  • En basit biçimde, belirttiğiniz botunuz aşağıdaki kriterlere uymalıdır:
  • Bot zararsızdır (ansiklopedinin düzgün çalışması için rahatsız edici olduğu düşünülen düzenlemeler yapmamalıdır)
  • Bot yararlıdır (insan editöründen daha etkili bir hizmet sunar)
  • Bot, sunucu kaynaklarını harcamaz.

Yazılım mimarisi değiştir

  • Nasıl ifadesini yaratabilir ve hangi programlama dillerini ve araçlarını kullanacağınızı düşünün. Mimari, yazılım sisteminin ürünün gereksinimlerini karşılayacağından ve gelecekteki gereksinimlerin karşılanabileceğinden emin olmakla ilgilenmektedir. Bazı programlama dilleri bazı görevlere diğerlerinden daha uygundur, daha fazla ayrıntı için § Programlama dilleri ve kütüphaneler bölümüne bakın.

Programlama değiştir

Programlama (veya kodlama) tasarımın ve planlamanın kod haline getirilmesini içerir. Yazılım mühendisliği işinin en belirgin kısmı olabilir, ancak mutlaka en büyük kısım olması gerekmez. Uygulama aşamasında yapmanız gerekenler:

  • Botunuz için bir hesap oluşturun. Hesabı oluşturmak için giriş yaptığınızda, hesabınızı kendinize bağlayarak burayı tıklayın. (Giriş yaparken bot hesabı oluşturmazsanız, mülkiyeti doğrulayana kadar olası bir [[Vikipedi:|kukla]] veya yetkisiz botlardan bloke edilmesi muhtemeldir)
  • Botunuz için bir kullanıcı sayfası oluşturun. Botunuzun düzenlemeleri kendi hesabınız altında yapılmamalıdır. Botunuzun kendi kullanıcı adı ve şifresiyle kendi hesabına ihtiyacı olacak.
  • Aynı bilgiyi botun kullanıcı sayfasına ekleyin. Her işlev için onay sayfasına (onaylanmış olsun veya olmasın) bir bağlantı eklemek iyi bir fikirdir.

Test etme değiştir

Botunuzu geliştirirken test etmenin iyi bir yolu, aslında canlı wikiyi düzenlemek yerine bir sayfada yapacağı değişiklikleri (varsa) göstermesini sağlamaktır. Bazı bot çerçeveleri (pywikibot gibi) gibi farklılıkları göstermek için önceden kodlanmış yöntemler vardır. onay süreci sırasında, botta büyük olasılıkla, gerçekte düzenleyebileceği bir deneme süresi (genellikle çalışacağı düzenleme veya gün sayısı sınırlamasıyla birlikte) verilir. ince ayarları etkinleştirin ve hataları giderin. Deneme süresinin sonunda, her şey plana göre giderse, bot tam ölçekli operasyon için onay almalıdır.

Belgelendirme değiştir

Önemli (ve genellikle gözden kaçan) bir görev, gelecekteki bakım ve geliştirme amacıyla botunuzun iç tasarımını belgelemedir. Bu, botunuzun klonlarına izin verecekseniz özellikle önemlidir. İdeal olarak, başkalarının klonlarını çalıştırmasını istiyorsanız, botunuzun kaynak kodunu kullanıcı sayfasına veya revizyon kontrol sistemine (bakınız #Açık kaynak botları) göndermelisiniz. Bu kod kullanım kolaylığı için iyi belgelenmelidir (genellikle yorumlar kullanılarak).

Sorgular/Şikayetler değiştir

Özellikle kullanımlı görüntü temizleme gibi potansiyel olarak hassas bir alanda çalışıyorsa, botunuzla ilgili sorulara veya itirazlara kullanıcı konuşma sayfanızda cevap vermeye hazır olmalısınız.

Bakım değiştir

Bakım ve botunuzu yeni keşfedilen hatalarla veya yeni gereksinimlerle başa çıkacak şekilde geliştirmek, yazılımın ilk geliştirilmesinden çok daha fazla zaman alabilir. Bakımı kolaylaştırmak için kodunuzu en baştan belgelendirin.

Onaylı botların önemli işlevsellik değişiklikleri onaylı olmalıdır.

Bir bot çalıştırmak için genel kurallar değiştir

Botunuzu geliştirirken göz önünde bulundurulması gereken ana noktaları kapsayan resmi bot politikasına ek olarak, botunuzu geliştirirken göz önünde bulundurmanız gereken bir takım daha genel danışma noktaları bulunmaktadır.

Bot en iyi uygulamaları değiştir

  • Wikimedia Kullanıcı-Ajan politikası uyarınca, botunuz için özel bir Kullanıcı Aracısı başlığı ayarlayın. Bunu yapmazsanız, botunuz hatalarla karşılaşabilir ve sunucudaki teknik personel tarafından engellenebilir.
  • Maxlag parametresi ile maksimum 5 saniyelik bir gecikme kullanın. Bu, sunucu yükü düşük olduğunda botun hızlı çalışmasını ve sunucu yükü yüksek olduğunda botu boğmasını sağlar.
    • Maxlag'ı desteklemeyen bir çerçevede bot yazıyorsanız, toplam istekleri (birlikte okuyun ve istekleri birlikte yazınız) en fazla 10/dakika ile sınırlayın.
  • Mümkün oldukça API kullanın ve yapılması gereken toplam istek sayısını en aza indirmek için sorgu sınırlarını sunucunun izin verdiği en yüksek değerlere ayarlayın.
  • Düzenleme (yazma) istekleri sunucu zamanında okuma isteklerinden daha pahalıdır. Düzenleme konusunda hafif olun ve düzenlemeleri minimumda tutmak için kodunuzu tasarlayın.
    • Düzenlemeleri birleştirmeyi deneyin. Tek bir büyük düzenleme 10 küçükten daha iyidir.
  • Mümkünse, HTTP istemci kütüphanenizde HTTP kalıcı bağlantı ve sıkıştırmayı etkinleştirin.
  • Çok iş parçacıklı istekler yapmayın. Başka bir sunucuya başlamadan önce bir sunucu isteğinin tamamlanmasını bekleyin.
  • Sunucudan hatalar alındıktan sonra geri dönün. Kalamar zaman aşımları gibi hatalar genellikle ağır sunucu yükünün bir göstergesidir. tekrarlanan istekler arasında giderek daha uzun gecikmeler dizisi kullanın.
  • Vikipedi'de etkin olan belirli koşulları kontrol etmek için açıkça botlar için tasarlanmış bir uzantı olan Belirti Düzenleme Uzantısı ürününü kullanın.
  • Büyük otomatik işlemler yapmadan önce kodunuzu iyice test edin. Mükemmel olduklarını doğrulamak için deneme sürümlerinde tüm düzenlemeleri ayrı ayrı inceleyin.

Uygulamayı düşünmeniz gereken genel bot özellikleri değiştir

Manüel yardım değiştir

Botunuz bağlamın değerlendirilmesini veya değerlendirilmesini gerektiren herhangi bir şey yapıyorsa (örneğin, hecelemeyi düzeltmek), botunuzu elle destekli hale getirmeyi düşünmelisiniz, bu da bir insanın tüm düzenlemeleri kaydedilmeden önce doğruladığı anlamına gelir. Bu, botun hızını önemli ölçüde azaltır ancak aynı zamanda hataları da azaltır.

Botu devre dışı bırakma değiştir

Botunuzu hızlıca devre dışı bırakmak kolay olmalı. Botunuz kötü giderse, ondan sonra temizlemek sizin sorumluluğunuzdadır! Eğer konuşma sayfasında bir mesaj bırakılmışsa, mesajın faaliyetlerine karşı bir şikayet olabileceği varsayımıyla botun kaçmasını reddedebilirsiniz; Bu, API meta=userinfo sorgusu kullanılarak kontrol edilebilir (örnek). Veya botu değiştirildiği zaman kapatan bir sayfanız olabilir; Bu, her bir düzenlemeden önce sayfa içeriğini yükleyerek kontrol edilebilir.

İmza değiştir

Tıpkı bir insan gibi, eğer botunuz Vikipedi'deki bir konuşma sayfasında düzenlemeler yaparsa, gönderisini dört tilde (~~~~) imzalamalıdır. İmzalar, tartışma için kullanılan proje sayfaları hariç, sadece tartışma adlarına aittir. (ör, silme makaleleri).

Bot Bayrağı değiştir

Bir botun düzenlemeleri, bir bot belirtecek şekilde ayarlanmadıkça, Özel:SonDeğişiklikler altında görünecektir. Bot onaylandıktan ve bot bayrağı iznini verdikten sonra, bir API çağrısına "bot-True" eklenebilir - botun düzenlemelerini Özel:SonDeğişiklikler'de gizlemek için mw:API:Edit#Parameters bölümüne bakın. Python'da, mwclient veya wikitools kullanarak, sonra Bot=True düzenle/kaydet komutuna eklemek, düzenlemeyi bot düzenleme olarak ayarlayacaktır - örn. ​PageObject.edit(text=pagetext, bot=True, summary=pagesummary)​.

Açık kaynak botları değiştir

Birçok bot operatörü kodlarını açık kaynak yapmayı seçmektedir ve bazen özellikle karmaşık botlar için onaylanmadan önce gerekli olabilir. Kodunuzu açık kaynak yapmanın bazı avantajları vardır:

  • Başkalarının olası hatalar için kodunuzu incelemesine olanak tanır. Nesir ile olduğu gibi, kod yazarı için de yeterince inceleme yapmak zordur.
  • Diğerleri kendi botlarını oluşturmak için kodunu kullanabilir. Bot yazmaya yeni başlayan bir kullanıcı kodunuzu örnek olarak veya kendi botları için şablon olarak kullanabilir.
  • İyi güvenlik uygulamaları, belirsizlik yoluyla güvenlik yerine teşvik eder.
  • Projeyi terk ederseniz, diğer kullanıcıların bot görevlerinizi yeni kod yazmanıza gerek kalmadan yürütmesine izin verir.

Açık kaynak kodu, nadiren gerekli olmakla birlikte, tipik olarak Vikipedi'nin açık ve şeffaf doğasına uygun olarak teşvik edilir.

Kod paylaşmadan önce, şifreler gibi hassas bilgilerin halka açık olmayan bir dosyaya ayrıldığından emin olun.

Kodlarını açmak isteyen kullanıcılar için birçok seçenek vardır. Kodu botun kullanıcı alanının bir alt sayfasında barındırmak, otomatikleştirilmemesi durumunda ve kodun, Vikipedi'de belirtilen diğer lisans şartlarına ek olarak çoklu lisanslı lisans koşulları altında çoklu lisanslı olmasıyla sonuçlanmasını sağlamak için bir güçlük olabilir. Daha iyi bir çözüm, SVN, Git veya Mercurial gibi bir sürüm kontrolü kullanmaktır. Vikipedi'de, birçoğunun hiçbir maliyeti olmayan yazılım seçenekleri ve kod barındırma için web siteleridir.

Programlama dilleri ve kütüphaneleri değiştir

Botlar hemen hemen her programlama dilinde yazılabilir. Dil seçimi, bot yazarının deneyimine ve tercihlerine ve bot gelişimi ile ilgili kütüphanelerin mevcudiyetine bağlıdır. Aşağıdaki liste, botlar için yaygın olarak kullanılan bazı dilleri içerir:

Awk değiştir

GNU Awk OAuth dahil küçük ve büyük botlar için kolay bir dildir.

Perl değiştir

Bir web sunucusunda bulunuyorsa, tarayıcınızdan Common Gateway Interface üzerinden çalışırken programınızı çalıştırmaya başlayabilir ve programınızla arabirim oluşturabilirsiniz. İnternet servis sağlayıcınız size web alanı sağlıyorsa, Perl programlarınızı çalıştırabileceğiniz web sunucusu üzerinde bir perl oluşturmaya erişme ihtimaliniz iyidir.

Kütüphaneler

  • MediaWiki::Bot – Perl ile yazılmış oldukça eksiksiz bir MediaWiki bot çerçevesi. MediaWiki::API'den daha yüksek bir soyutlama düzeyi sağlar. Uzantılar yönetici ve yönetici işlevselliği sağlar.

PHP değiştir

PHP botları programlamak için de kullanılabilir. MediaWiki geliştiricileri zaten PHP'ye aşinadır, çünkü bu MediaWiki ve uzantılarının yazıldığı dildir. PHP, botunuza webform tabanlı bir arayüz sağlamak istiyorsanız özellikle iyi bir seçimdir. Örneğin, kategorileri yeniden adlandırmak için bir bot oluşturmak istediğinizi varsayalım. Bir kategorinin geçerli ve istenen adlarını gireceğiniz bir HTML formu oluşturabilirsiniz. Form gönderildiğinde, botunuz bu girdileri okuyabilir, ardından geçerli kategorideki tüm makaleleri düzenleyebilir ve istediğiniz kategoriye taşıyabilir. (Açıkçası, form arayüzüne sahip herhangi bir botun bir şekilde rastgele web sörfçülerinden korunması gerekir.)

PHP bot işlevleri tablosu, ana bot çerçevelerinin yetenekleri hakkında bazı bilgiler verebilir.

Mevcut PHP Bot çerçeveleri
Kilit kişiler[php 1] İsim PHP Sürümü son güncelleme API kullanır[php 2] Hariç tutma uyumlu Yönetici fonksiyonları Eklentiler Depo Notlar
Kullanıcı:Cyberpower678, Kullanıcı:Addshore, ve Kullanıcı:Jarry1250 GitHub 5.2.1 2017 Evet Evet Evet Evet GitHub Geniş çerçeve, şu anda yeniden yazıldı. Belgeler şu anda mevcut değil, bu yüzden yardım için Kullanıcı:Cyberpower678 sorun.
Kullanıcı:Addshore mediawiki-api-base 7.4+ 2021 Evet Bilinmiyor Bilinmiyor fazladan lib GitHub Mediawiki api ile etkileşime giren temel kitaplık, belirteçlerin giriş, çıkış ve taşıma işlemlerinin yanı sıra istekleri kolayca alma ve gönderme işlemlerini yapmanıza olanak sağlar.
Kullanıcı:Addshore mediawiki-api 7.4+ 2021 Evet Hayır bazı fazladan lib GitHub Mediawiki-api-base üzerine kurulu bu, RevisionGetter, UserGetter, PageDeleter, RevisionPatroller, RevisionSaver vb. api

yığın yükleme için daha gelişmiş hizmetler sunar.

w:User:nzhamstar ve w:User:Xymph Wikimate 5.3+ 2023 Evet Hayır Hayır Hayır GitHub Ana makale ve dosya sayfalarını destekler. Kimlik doğrulama, sayfa olup olmadığını kontrol etme, sayfaları/bölümleri okuma ve düzenleme. Dosya bilgisi alma, dosya indirme ve yükleme. Test edildi ve çalışıyor. Kullanımı kolay olmayı hedefler.
Григор Гачев Apibot 5.1 2015 Evet Evet Evet Evet Wikide MW 1.21'e kadar tam API desteği, kalıcı bağlantılar, gzip xfers, HTTPS, HTTP auth, GET sıralama, otomatik site/kullanıcı/paraminfo önbelleğe alma ve kullanım, sayfa bot dışlama uyumu, 1000 fonksiyona yakın, DB desteği vb. Kolayca genişletilebilir modüler yapı. UNIX benzeri bindirilmiş 'montaj hattı' çerçevesi. AGPL 3.0 veya üstü.
Kullanıcı:Chris G botclasses.php,
botclasses.php
7.4 2023,
2019
Evet Evet Evet Hayır on wiki (2023),
GitHub (2019)
Eski wikibot.classes Çatal (ClueBot ve SoxBot tarafından kullanılır). 2010 ve 2015 API değişiklikleri için güncellendi. Dosya yüklemeyi destekler.
  1. ^ Listelenen bir çerçeve oluşturmak için çatal üzerinde çalışanlar içermez.
  2. ^ Nerede mümkünse. Şu anda API tarafından desteklenmeyen görüntülerin ve diğer bu tür görevlerin yüklenmesini içermez.

Python değiştir

Kütüphaneler

  • Pywikibot – Muhtemelen en çok kullanılan bot çerçevesi.
  • ceterach - MediaWiki ile etkileşime geçmek için bir arayüz.
  • wikitools—Yalnızca Mr.Z-man tarafından kullanılan ve sürdürülen, veri almak ve düzenlemek için yalnızca MediaWiki API'sini kullanan Python-2 yalnızca hafif bot çerçevesi (indirmeler)
  • mwclientBryan tarafından sağlanan API tabanlı bir çerçeve
  • mwparserfromhell - Bir wiki metin ayrıştırıcısı, The Earwig tarafından yönetilir.
  • pymediawiki - Python'da salt okunur bir MediaWiki API sarmalayıcısıdır ve kullanımı kolaydır.

MATLAB değiştir

  • MatWiki - sadece bot girişleri ve semantik #ask sorgularını destekleyen bir ön (Şubat 2019 itibarıyla) MATLAB R2016b (9.1.x) istemcisi.

Microsoft .NET değiştir

Microsoft .NET stratejisi, C#, C++/CLI, Visual Basic .NET, J# JScript .NET, IronPython ve Windows PowerShell dahil olmak üzere bir dizi dildir. Mono Proje kullanımı, .NET programlar Linux, Unix, BSD, Solaris ve macOS altında ve Windows altında da çalışabilir.

Kütüphaneler

  • DotNetWikiBot Framework – .NET üzerinde tam özellikli bir istemci API, MediaWiki destekli sitelerdeki bilgileri kolayca yönetmek için programlar ve web robotları oluşturmanıza olanak sağlar. Şimdi birkaç dile çevrildi. Ayrıntılı derlenmiş belgeler İngilizce olarak mevcuttur.
  • WikiFunctions .NET library – AWB ile birlikte verilenler, listeler oluşturma, makale yükleme / düzenleme, son değişiklikler IRC kanalına bağlanma ve daha fazlası gibi botlar için faydalı bir kitaplıktır.

Java değiştir

Kütüphaneler

  • Java Wiki Bot Framework - Java wiki bot çerçevesi
  • wiki-java - Yalnızca bir dosya olan bir Java wiki bot çerçevesi
  • WPCleaner - WPCleaner aracı tarafından kullanılan kütüphane
  • jwiki - Basit ve kullanımı kolay bir Java wiki bot çerçevesi

JavaScript değiştir

JavaScript, çoğunlukla web sayfalarında kullanılan bir betik dilidir. JavaScript, siz common.js sayfasına komut dosyaları ekleyerek Vikipedi'yi geliştirmek için kullanılabilir.

Kütüphaneler

  • Node.js için bir MediaWiki modülü var. Modül common.js sayfasına da eklenebilir ve wikideki JS aramaları için kütüphane olarak kullanılabilir. MediaWiki API için genel bir sarmalayıcı yönteminin yanı sıra standart isteklerin (örneğin, giriş, çıkış vb.) Bir çerçevesi yanı sıra genel bir sarmalayıcı yöntemi sağlar ve azaltmayı içerir.
  • GitHub'da Bot oluşturma – Node.js veya JScript üzerinde çalışan botlar oluşturmak için GitHub'da MediaWiki fonksiyonları içeren bir JavaScript çerçevesi. Bakınız GitHub'da Vikipedi bot örnekler.

Ruby değiştir

Kütüphaneler:

  • MediaWiki::Gateway – API için Ruby çerçevesi. Korunması gereken, ancak artık aktif gelişimde olmadığı için, Wikimedia wiki ile uyumlu olan MediaWiki 1.22'ye kadar test edildi.
  • wikipedia-client - API kullanarak Ruby framework.
  • mediawiki/ruby/api, Nisan 2014 itibarıyla aktif geliştirilmekte olan Ruby API istemci kütüphanesi
  • MediaWiki::Butt – API için Ruby framework, çok aktif bir gelişim içinde.

Common Lisp değiştir

  • CL-MediaWiki MediaWiki API'sini Common Lisp paketi olarak uygular. Sorgu veri biçimi olarak JSON kullanılması planlanmaktadır. Maxlag ve assert düzenleme uzantılarını destekler.

Haskell değiştir

VBScript değiştir

VBScript, Visual Basic programlama diline dayanan bir betik dili'dir. VBScript için yayınlanmış bir bot çerçevesi mevcut değildir, ancak onu kullanan bazı bot örnekleri aşağıda görülmektedir:

Lua değiştir

  • Lua Yıllık Çalıştayı 2016 boyunca Jim Carter ve Dfavro, Lua'nın Wikimedia projeleri için bot çerçevesini geliştirmeye başladı. Gelişim hakkında tartışmak için lütfen konuşma sayfalarındaki Jim Carter ile iletişime geçin.
  • mwtest basit API ile Kullanıcı: Alexander Misel tarafından oluşturulan bir wikibot yazmak için Lua kullanan bir örnektir.