MediaWiki API ile ilgili makaleleri oluşturmak için muhtemelen istediğiniz bir bot. Muhtemelen bilinen en iyi bot çerçevesi Python için pywikipedia'dur, fakat diğer birçok dil için de API libraries and bot frameworks vardır. Aslında, pywikipedia, ne istediğinize oldukça yakın bir şey yapan pagefromfile.py adlı bir betik ile gelir. Varsayılan olarak, tek bir dosyadan birden çok sayfa oluşturur, ancak bazı Python'ları biliyorsanız, bunu değiştirmek çok zor olmamalıdır.
Aslında dosyalar wiki üzerinde çalışan aynı sunucuda ise (ya da orada yükleyebilirsiniz), o zaman hatta hiç bir bot gerekmez: importTextFile.php o olabilir adında bir MediaWiki maintenance script var Kendin için yap. Sen mesela, basit bir kabuk komut dosyası ile verilen bir dizindeki tüm dosyalar için bunu çalışabilir:
for file in directory/*.txt; do
php /path/to/your/mediawiki/maintenance/importTextFile.php "$file";
done
(Açıkçası, MediaWiki tesisatın gerçek yolu ile metin dosyaları ve /path/to/your/mediawiki
içeren dizine ile directory
değiştirin.
Varsayılan olarak, importTextFile.php, oluşturulan sayfanın adını, dosya adı üzerine, herhangi bir dizin önekini ve uzantılarını sıyıracak şekilde temel alır. Ayrıca, standart MediaWiki sayfa adlandırma kurallarına göre altçizgi boşluklarla değiştirilecek ve ilk harf büyük harfle yazılacaktır (LocalSettings.php'de turned that off değilseniz); bu nedenle, örneğin, directory/foo_bar.txt
dosyası "Foo çubuğu" sayfası olarak içe aktarılır. Sayfa adının daha iyi denetlenmesini istiyorsanız, importTextFile.php ayrıca bir --title
parametresini de destekler. Ya da her zaman komut dosyasını kopyalayabilir ve sayfa adlandırma kurallarını değiştirmek için kendiniz değiştirebilirsiniz.
Ps. Ayrıca, standart girdiden sayfa metnini okur ve importTextFile.php'nin uygun varsayılan sayfa adlandırma kurallarına sahip olmaması dışında, importadlı bir MediaWiki bakım komut dosyası da vardır. Yine de, Unix boru hatlarını kullanan otomatik düzenlemeler için oldukça kullanışlı olabilir.
Zeyilname: importTextFile.php komut dosyası adları ve içeriği UTF-8 kodlamasında olmasını bekler. Dosyalarınız başka bir kodlamadaysa, önce bunları düzeltmeniz veya dönüştürmeyi yapmak için komut dosyasını değiştirmeniz gerekir. mb_convert_encoding() kullanıyor.
altına yakın, titleFromFilename() fonksiyonunu düzenlemek, dosyayı isimleri UTF-8'e dönüştürmek için: Özellikle
, komut dosyasına aşağıdaki modifikasyonlar yapmak gerektiğini script ve bunun son satırı değiştirin:
return $parts[0];
ile:
dosya adları için kullanılan character encoding olmalıdır 210 return mb_convert_encoding($parts[0], "UTF-8", "your-encoding");
(veya auto
otomatik algılama girişimi).
$text = file_get_contents($filename);
ile:
$text = file_get_contents($filename);
$text = mb_convert_encoding($text, "UTF-8", "your-encoding");
da çizgi yerine senaryonun ana kod içinde daha yukarı yapmak, benzer bir değişiklik dosyalarının içeriğini dönüştürmek için
@llmari Karonen Çok teşekkür ederim sooooooooooo. Sadece hangi yöntemin en hızlı olduğunu bulmak istiyorum. Hangisi en hızlı gönderimi garanti eder. Ve orada MultiUpload, UploadLocal, UploadWizard gibi birçok uzantı gördüm. Bunlar, bahsettiğin yöntemlerden daha hızlı olabilir mi? – user1849133
@llmari Karonen Ve gerçekten en hızlı yöntem varsa, ne kadar hızlı? Her biri 10 KB boyutunda 10000 txt dosyam varsa ne kadar hızlı olur? Benim ftp yüklemelerim, sunucuya ortalama olarak 1 saniye başına 10KB txt dosyası 1.2 test ettim. Ancak bu yüklenen dosyaları medyawiki'ye göndermek ne kadar hızlı olacak? – user1849133
Bu bir _really_ yavaş yükleme hızı. 90'lardan eski bir modem kullanıyor musunuz? Dosyaları MediaWiki'ye içe aktarırken, dosyaları sunucuya yüklemek (daha hızlı yapmak için belki de bir .zip/.tar.gz arşivinde) daha hızlı olmalı ve importTextFile.php (veya edit.php) kullanılmalıdır. bir bot kullanmaktan daha eşit olmak. Komut dosyalarını bir çağrıda tüm dosyaları içe aktarmak için değiştirmeyi daha da hızlandıracağımı farz etmeliyim, ancak muhtemelen değişiklik yapmak ve test etmek için harcayacağı süreyi telafi etmek için yeterli değildir. –