upload.pl

Материал из Викиреальностя
Перейти к: навигация, поиск

Бот на Perl для загрузки картинок через API на основе текстового файла, на каждой строке которого указаны URL картинки, название для загрузки и краткое описание, разделённые символами табуляции.

Для работы бота необходимо наличие у него флага «upload_by_url» и включенной опции $wgAllowCopyUploads в настройках MediaWiki. Возможность загрузки файлов через API появилась в версии MediaWiki 1.16.

Написан при технической поддержке Профиль «suspected_one» в ЖЖ suspected_one.

[править] Исходный код

use utf8;
use MediaWiki::API;
my $mw = MediaWiki::API->new({ api_url => 'http://wikireality.ru/w/api.php' });
$mw->login({ lgname => 'Моё имя', lgpassword => 'Мой пароль' }) || die;
 
# Получение upload token
my $res = $mw->api({ 
        action => 'query', 
        prop => 'info', 
        intoken => 'edit', 
        titles => 'Labuda' 
}) || die "Не могу получить upload token"; 
my $upload_token = (values %{$res->{query}->{pages}})[0]->{edittoken};
 
# Чтение файла и загрузка картинок
open F, "имя_файла.допустим_txt";
while(my $line = <F>)
{
        chomp $line;
        my($url, $title, $descr) = split /\t/, $line;
 
        # ...
        $mw->api({
                action => 'upload', 
                url => $url, 
                token => $upload_token, 
                asyncdownload => 1, 
                filename => $title,
                comment => 'Бот: заливка лабуды', 
                text => $descr 
        });
}
close F;
Upload.pl относится к теме «Техники и викиботы»   ±