Участник:CodeMonkBot/Бот загрузки описаний для файлов постеров к фильмамНазначениеБот загружает новые описания для файлов постеров к фильмам, а именно ставит шаблоны "Несвободный файл" и "Несвободный файл/ОДИ" и заполняет их параметры, используя информацию из статей Википедии и с IMDb. РеализацияБот написан на языке C# (Microsoft .NET 2.0) c использованием библиотеки DotNetWikiBot Framework версии 2.96. Описание алгоритмаБот берет список файлов постеров, расположенный на странице "Участник:Alex_Spade/4CodeMonkBot", по очереди открывает описание каждого файла, затем открывает статью о фильме, к которому загружен данный постер, и пытается найти там нужную информацию о годе создания и кинокомпании в шаблоне "Фильм". Если в шаблоне "Фильм" нужной информации нет, то бот берет из статьи ссылку на IMDb, открывает страницу фильма на IMDb и находит необходимую информацию там. Затем собранная информация подставляется в виде параметров в заготовку описания из файла "\Cache\posterDescrTemplate.txt", и новое описание сохраняется в Википедии. Исходный кодusing System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using DotNetWikiBot;
class PosterDescriptionBot : Bot
{
public static void Main()
{
Site site = new Site("http://ru.wikipedia.org", "CodeMonkBot", "********");
string template = File.ReadAllText("Cache\\posterDescrTemplate.txt", Encoding.UTF8);
Page list = new Page(site, "Участник:Alex_Spade/4CodeMonkBot");
list.Load();
PageList images = list.GetLinks();
string startImage = "";
askConfirm = true;
PageList films = new PageList(site);
foreach (Page p in images) {
Console.WriteLine(p.title);
if (startImage != "" && p.title != startImage)
continue;
else
startImage = "";
p.Load();
if (!p.text.Contains("Disputed-fairuse") && !p.text.Contains("disputed-fairuse"))
continue;
films.Clear();
films.FillFromPagesUsingImage(p.title);
if (films.Count() == 0)
continue;
films[0].Load();
string type = "Обложка", source = "", year = "", imdbId = "", title = "", company = "";
title = films[0].title + (films[0].title.EndsWith(")") ? "|" : "");
if (p.text.Contains("Постер") || p.text.Contains("постер"))
type = "Постер";
year = films[0].GetFirstTemplateParameter("Фильм", "Год");
company = films[0].GetFirstTemplateParameter("Фильм", "Компания");
imdbId = films[0].GetFirstTemplateParameter("Фильм", "imdb_id");
if (imdbId != "" && (company == "" || year == "")) {
string imdbData = Bot.GetWebResource(
new Uri ("http://www.imdb.com/title/tt" + imdbId + "/"), "");
if (year == "")
year = Regex.Match(imdbData,
"(?s)Release Date:.+? ((19|20)\\d\\d) ").Groups[1].Value;
if (company == "")
company = Regex.Match(imdbData, "<div class=\"info-content\">" +
"<a href=\"/company/co\\d+/\">(.+?)<").Groups[1].Value;
}
if (company == "") {
company = "Правообладателем является кинокомпания.";
source = "кинокомпания";
}
else
source = company;
p.text = string.Format(template, type, title, source, year, company, films[0].title);
p.Save(p.text, "обоснование добросовестного использования", false);
}
}
}
{{{{Несвободный файл
| описание = {0} к фильму «[[{1}]]»
| источник = {2}
| время создания = {3}
| автор = {4}
| часть = Материал используется полностью.
| разрешение = Разрешение многократно уменьшено по сравнению с оригиналом.
}}}}
{{{{Несвободный файл/ОДИ
| статья = {5}
| цель =
# Это изображение дает наглядное представление о визуальной стилистике фильма, которое невозможно получить из текстового описания, и без которого статья о фильме не может считаться полной.
# Это изображение не ограничивает обладателей авторских прав в возможности извлекать выгоду из продажи изображения в его оригинальном напечатанном виде. Разрешение изображения многократно уменьшено по сравнению с оригиналом, поэтому печать данного изображения не может сравниться с оригиналом по качеству.
# Изображение было специально предназначено правообладателем для широкого распространения в целях рекламы фильма. Использование изображения соответствует [[Википедия:Критерии добросовестного использования|принятым в Википедии критериям добросовестного использования]]. Изображение также используется на множестве других сайтов.
| заменяемость = Все материалы непосредственно относящиеся к этому произведению защищены авторским правом.
| прочее = нет
}}}}
# [[:Файл:007CasinoRoyaleUS1sheet.jpg]]
# [[:Файл:007DAFposter.jpg]]
# [[:Файл:007DrNoposter.jpg]]
# [[:Файл:007FRWLposter.jpg]]
# [[:Файл:007FYEOposter.jpg]]
# [[:Файл:007GEposter.jpg]]
# [[:Файл:007Goldfingerposter.jpg]]
# ...
|
Portal di Ensiklopedia Dunia