<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://thirdworldcup.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A7%D0%A2%D0%9C%3A%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8%2F%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2</id>
	<title>ЧТМ:Центр управления модулями/скрипт сбора статистики турниров - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://thirdworldcup.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A7%D0%A2%D0%9C%3A%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8%2F%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2"/>
	<link rel="alternate" type="text/html" href="http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;action=history"/>
	<updated>2026-06-06T19:36:53Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=69225&amp;oldid=prev</id>
		<title>LordBot: Замена текста — «lang=&quot;py&quot;&gt;» на «lang=&quot;python&quot; line&gt;»</title>
		<link rel="alternate" type="text/html" href="http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=69225&amp;oldid=prev"/>
		<updated>2026-05-30T11:49:16Z</updated>

		<summary type="html">&lt;p&gt;Замена текста — «lang=&amp;quot;py&amp;quot;&amp;gt;» на «lang=&amp;quot;python&amp;quot; line&amp;gt;»&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 14:49, 30 мая 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;py&lt;/del&gt;&quot;&amp;gt;import re&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;python&lt;/ins&gt;&quot; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;line&lt;/ins&gt;&amp;gt;import re&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# ==========================================&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# ==========================================&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>LordBot</name></author>
	</entry>
	<entry>
		<id>http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=69191&amp;oldid=prev</id>
		<title>Гиперболоид инженера Мошонкина в 01:00, 30 мая 2026</title>
		<link rel="alternate" type="text/html" href="http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=69191&amp;oldid=prev"/>
		<updated>2026-05-30T01:00:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 04:00, 30 мая 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;py&amp;gt;import re&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;py&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;&amp;gt;import re&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# ==========================================&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# ==========================================&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Гиперболоид инженера Мошонкина</name></author>
	</entry>
	<entry>
		<id>http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=64824&amp;oldid=prev</id>
		<title>Burato в 00:52, 17 апреля 2026</title>
		<link rel="alternate" type="text/html" href="http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=64824&amp;oldid=prev"/>
		<updated>2026-04-17T00:52:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;amp;diff=64824&amp;amp;oldid=64815&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Burato</name></author>
	</entry>
	<entry>
		<id>http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=64815&amp;oldid=prev</id>
		<title>Burato: Burato переименовал страницу ЧТМ:ЧТМ:Центр управления модулями/скрипт сбора статистики турниров в ЧТМ:Центр управления модулями/скрипт сбора статистики турниров без оставления перенаправления</title>
		<link rel="alternate" type="text/html" href="http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=64815&amp;oldid=prev"/>
		<updated>2026-04-17T00:05:09Z</updated>

		<summary type="html">&lt;p&gt;Burato переименовал страницу &lt;a href=&quot;/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ЧТМ:ЧТМ:Центр управления модулями/скрипт сбора статистики турниров (страница не существует)&quot;&gt;ЧТМ:ЧТМ:Центр управления модулями/скрипт сбора статистики турниров&lt;/a&gt; в &lt;a href=&quot;/index.php/%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&quot; title=&quot;ЧТМ:Центр управления модулями/скрипт сбора статистики турниров&quot;&gt;ЧТМ:Центр управления модулями/скрипт сбора статистики турниров&lt;/a&gt; без оставления перенаправления&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 03:05, 17 апреля 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Burato</name></author>
	</entry>
	<entry>
		<id>http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=64814&amp;oldid=prev</id>
		<title>Burato: Burato переименовал страницу Участник:Burato/скрипт в ЧТМ:ЧТМ:Центр управления модулями/скрипт сбора статистики турниров без оставления перенаправления</title>
		<link rel="alternate" type="text/html" href="http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=64814&amp;oldid=prev"/>
		<updated>2026-04-17T00:04:56Z</updated>

		<summary type="html">&lt;p&gt;Burato переименовал страницу &lt;a href=&quot;/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Burato/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Участник:Burato/скрипт (страница не существует)&quot;&gt;Участник:Burato/скрипт&lt;/a&gt; в &lt;a href=&quot;/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ЧТМ:ЧТМ:Центр управления модулями/скрипт сбора статистики турниров (страница не существует)&quot;&gt;ЧТМ:ЧТМ:Центр управления модулями/скрипт сбора статистики турниров&lt;/a&gt; без оставления перенаправления&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 03:04, 17 апреля 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Burato</name></author>
	</entry>
	<entry>
		<id>http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=64800&amp;oldid=prev</id>
		<title>Burato: Новая страница: «&lt;syntaxhighlight lang=&quot;py&gt;import re  # ========================================== # 1. НАСТРОЙКИ ТУРНИРА # =======================================...»</title>
		<link rel="alternate" type="text/html" href="http://thirdworldcup.ru/index.php?title=%D0%A7%D0%A2%D0%9C:%D0%A6%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8/%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82_%D1%81%D0%B1%D0%BE%D1%80%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D1%82%D1%83%D1%80%D0%BD%D0%B8%D1%80%D0%BE%D0%B2&amp;diff=64800&amp;oldid=prev"/>
		<updated>2026-04-16T23:10:19Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&amp;lt;syntaxhighlight lang=&amp;quot;py&amp;gt;import re  # ========================================== # 1. НАСТРОЙКИ ТУРНИРА # =======================================...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;py&amp;gt;import re&lt;br /&gt;
&lt;br /&gt;
# ==========================================&lt;br /&gt;
# 1. НАСТРОЙКИ ТУРНИРА&lt;br /&gt;
# ==========================================&lt;br /&gt;
TOURNAMENT = &amp;quot;ЧТМ&amp;quot; # Укажите название турнира&lt;br /&gt;
YEAR = &amp;quot;2042&amp;quot;      # Укажите год&lt;br /&gt;
IS_QUALIFICATION = True  # True = Квалификация (_Qual), False = Финальный турнир&lt;br /&gt;
&lt;br /&gt;
# ==========================================&lt;br /&gt;
# 2. ВСТАВЬТЕ ВАШ ТЕКСТ СЮДА&lt;br /&gt;
# ==========================================&lt;br /&gt;
DATA = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# ==========================================&lt;br /&gt;
# ДАЛЬШЕ НИЧЕГО НЕ ТРОГАЙТЕ&lt;br /&gt;
# ==========================================&lt;br /&gt;
&lt;br /&gt;
ROUND_MAP = {&lt;br /&gt;
    &amp;quot;Предварительный раунд&amp;quot;: &amp;quot;Qual&amp;quot;,&lt;br /&gt;
    &amp;quot;Первый раунд&amp;quot;: &amp;quot;1R&amp;quot;,&lt;br /&gt;
    &amp;quot;Второй раунд&amp;quot;: &amp;quot;2R&amp;quot;,&lt;br /&gt;
    &amp;quot;Третий раунд&amp;quot;: &amp;quot;3R&amp;quot;,&lt;br /&gt;
    &amp;quot;Стыковые матчи&amp;quot;: &amp;quot;Playoffs&amp;quot;,&lt;br /&gt;
    &amp;quot;Дополнительный турнир&amp;quot;: &amp;quot;AddTournament&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
STAGE_MAP = {&lt;br /&gt;
    &amp;quot;Первый тур&amp;quot;: &amp;quot;Stage1&amp;quot;,&lt;br /&gt;
    &amp;quot;Второй тур&amp;quot;: &amp;quot;Stage2&amp;quot;,&lt;br /&gt;
    &amp;quot;Третий тур&amp;quot;: &amp;quot;Stage3&amp;quot;,&lt;br /&gt;
    &amp;quot;1/16 финала&amp;quot;: &amp;quot;16thfinal&amp;quot;,&lt;br /&gt;
    &amp;quot;1/8 финала&amp;quot;: &amp;quot;8thfinal&amp;quot;,&lt;br /&gt;
    &amp;quot;1/4 финала&amp;quot;: &amp;quot;Quarterfinal&amp;quot;,&lt;br /&gt;
    &amp;quot;Полуфиналы&amp;quot;: &amp;quot;Semifinal&amp;quot;,&lt;br /&gt;
    &amp;quot;Полуфинал&amp;quot;: &amp;quot;Semifinal&amp;quot;,&lt;br /&gt;
    &amp;quot;Финалы&amp;quot;: &amp;quot;Final&amp;quot;,&lt;br /&gt;
    &amp;quot;Финал&amp;quot;: &amp;quot;Final&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
def parse_score(score_str, team1, team2, c1, c2, venue, is_second_leg=False):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Превращает счет из Вики-формата в формат Lua&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    m = re.match(r&amp;#039;\s*(\d+):(\d+)(?:\(((?:ET|ЕT|пен\.)(?:(\d+):(\d+))?)\))?\s*&amp;#039;, score_str)&lt;br /&gt;
    if not m:&lt;br /&gt;
        return None&lt;br /&gt;
    &lt;br /&gt;
    g1, g2 = m.group(1), m.group(2)&lt;br /&gt;
    spec = &amp;quot;nil&amp;quot;&lt;br /&gt;
    p1, p2 = &amp;quot;nil&amp;quot;, &amp;quot;nil&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if m.group(3):&lt;br /&gt;
        spec_text = m.group(3)&lt;br /&gt;
        if &amp;quot;ET&amp;quot; in spec_text or &amp;quot;ЕT&amp;quot; in spec_text:&lt;br /&gt;
            spec = &amp;#039;&amp;quot;aet&amp;quot;&amp;#039;&lt;br /&gt;
        elif &amp;quot;пен.&amp;quot; in spec_text:&lt;br /&gt;
            spec = &amp;#039;&amp;quot;pen&amp;quot;&amp;#039;&lt;br /&gt;
            p1, p2 = m.group(4), m.group(5)&lt;br /&gt;
&lt;br /&gt;
    if is_second_leg:&lt;br /&gt;
        return f&amp;#039;                {{&amp;quot;{team2}&amp;quot;, &amp;quot;{team1}&amp;quot;, {g2}, {g1}, {spec}, {p2}, {p1}, &amp;quot;{c2}&amp;quot;, &amp;quot;{c1}&amp;quot;, {venue}}}&amp;#039;&lt;br /&gt;
    else:&lt;br /&gt;
        return f&amp;#039;                {{&amp;quot;{team1}&amp;quot;, &amp;quot;{team2}&amp;quot;, {g1}, {g2}, {spec}, {p1}, {p2}, &amp;quot;{c1}&amp;quot;, &amp;quot;{c2}&amp;quot;, {venue}}}&amp;#039;&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    lines = DATA.strip().split(&amp;#039;\n&amp;#039;)&lt;br /&gt;
    out = []&lt;br /&gt;
    &lt;br /&gt;
    # Определяем название корневого ключа&lt;br /&gt;
    tournament_key = f&amp;quot;{TOURNAMENT}_{YEAR}&amp;quot;&lt;br /&gt;
    if IS_QUALIFICATION:&lt;br /&gt;
        tournament_key += &amp;quot;_Qual&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
    out.append(f&amp;#039;return {{\n    [&amp;quot;{tournament_key}&amp;quot;] = {{\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    current_round = &amp;quot;&amp;quot;&lt;br /&gt;
    current_stage = &amp;quot;&amp;quot;&lt;br /&gt;
    is_add_matches = False&lt;br /&gt;
    is_neutral_global = False&lt;br /&gt;
&lt;br /&gt;
    in_group = False&lt;br /&gt;
    in_knockout = False&lt;br /&gt;
    &lt;br /&gt;
    group_teams = []&lt;br /&gt;
    group_colors = []&lt;br /&gt;
    group_matrix = []&lt;br /&gt;
    group_type = &amp;quot;A2&amp;quot;&lt;br /&gt;
    knockout_matches = []&lt;br /&gt;
&lt;br /&gt;
    def flush_group():&lt;br /&gt;
        if not group_teams: return&lt;br /&gt;
        key = f&amp;quot;{current_round}_{current_stage}&amp;quot;.strip(&amp;quot;_&amp;quot;)&lt;br /&gt;
        if not current_round and current_stage: key = current_stage&lt;br /&gt;
        &lt;br /&gt;
        out.append(f&amp;#039;        [&amp;quot;{key}&amp;quot;] = {{&amp;#039;)&lt;br /&gt;
        out.append(&amp;#039;            type = &amp;quot;group&amp;quot;,&amp;#039;)&lt;br /&gt;
        out.append(&amp;#039;            standings = {&amp;#039;)&lt;br /&gt;
        for tm, col in zip(group_teams, group_colors):&lt;br /&gt;
            out.append(f&amp;#039;                {{&amp;quot;{tm}&amp;quot;, &amp;quot;{col}&amp;quot;}},&amp;#039;)&lt;br /&gt;
        out.append(&amp;#039;            },&amp;#039;)&lt;br /&gt;
        out.append(&amp;#039;            matches = {&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        venue = 1 if group_type == &amp;quot;A2&amp;quot; and not is_neutral_global else 0&lt;br /&gt;
        num_teams = len(group_teams)&lt;br /&gt;
        &lt;br /&gt;
        for i, row in enumerate(group_matrix):&lt;br /&gt;
            col_idx = 0&lt;br /&gt;
            for j in range(num_teams):&lt;br /&gt;
                if i == j: continue&lt;br /&gt;
                if col_idx &amp;lt; len(row):&lt;br /&gt;
                    score = row[col_idx]&lt;br /&gt;
                    if &amp;quot;:&amp;quot; in score:&lt;br /&gt;
                        g1, g2 = score.split(&amp;quot;:&amp;quot;)&lt;br /&gt;
                        out.append(f&amp;#039;                {{&amp;quot;{group_teams[i]}&amp;quot;, &amp;quot;{group_teams[j]}&amp;quot;, {g1}, {g2}, {venue}}},&amp;#039;)&lt;br /&gt;
                col_idx += 1&lt;br /&gt;
                &lt;br /&gt;
        out.append(&amp;#039;            }\n        },&amp;#039;)&lt;br /&gt;
        group_teams.clear(); group_colors.clear(); group_matrix.clear()&lt;br /&gt;
&lt;br /&gt;
    def flush_knockout():&lt;br /&gt;
        if not knockout_matches: return&lt;br /&gt;
        key = f&amp;quot;{current_round}_{current_stage}&amp;quot;.strip(&amp;quot;_&amp;quot;)&lt;br /&gt;
        if not current_round and current_stage: key = current_stage&lt;br /&gt;
        &lt;br /&gt;
        if is_add_matches and &amp;quot;AddMatches&amp;quot; not in key:&lt;br /&gt;
            key = f&amp;quot;{current_round}_AddMatches_{current_stage}&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
        out.append(f&amp;#039;        [&amp;quot;{key}&amp;quot;] = {{&amp;#039;)&lt;br /&gt;
        out.append(&amp;#039;            type = &amp;quot;knockout&amp;quot;,&amp;#039;)&lt;br /&gt;
        out.append(&amp;#039;            matches = {&amp;#039;)&lt;br /&gt;
        for m in knockout_matches:&lt;br /&gt;
            out.append(m + &amp;quot;,&amp;quot;)&lt;br /&gt;
        out.append(&amp;#039;            }\n        },&amp;#039;)&lt;br /&gt;
        knockout_matches.clear()&lt;br /&gt;
&lt;br /&gt;
    for line in lines:&lt;br /&gt;
        line = line.strip()&lt;br /&gt;
        if not line: continue&lt;br /&gt;
        &lt;br /&gt;
        # ЗАЩИТА ОТ &amp;quot;ПРИЛИПШИХ&amp;quot; СКОБОК (исправление вашего бага)&lt;br /&gt;
        close_table_now = False&lt;br /&gt;
        if line.endswith(&amp;quot;}}&amp;quot;):&lt;br /&gt;
            close_table_now = True&lt;br /&gt;
            line = line[:-2].strip() # отрезаем }} с конца строки&lt;br /&gt;
            &lt;br /&gt;
        # Если строка состояла только из }}, теперь она пустая — закрываем таблицу и идём дальше&lt;br /&gt;
        if not line and close_table_now:&lt;br /&gt;
            if in_group: flush_group()&lt;br /&gt;
            if in_knockout: flush_knockout()&lt;br /&gt;
            in_group = False&lt;br /&gt;
            in_knockout = False&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        if &amp;quot;нейтральном поле&amp;quot; in line.lower() or &amp;quot;на нейтральном&amp;quot; in line.lower():&lt;br /&gt;
            is_neutral_global = True&lt;br /&gt;
&lt;br /&gt;
        m_round = re.match(r&amp;#039;===\s*(.+?)\s*===&amp;#039;, line)&lt;br /&gt;
        if m_round:&lt;br /&gt;
            flush_group()&lt;br /&gt;
            flush_knockout()&lt;br /&gt;
            raw_round = m_round.group(1)&lt;br /&gt;
            current_round = ROUND_MAP.get(raw_round, &amp;quot;Round&amp;quot;)&lt;br /&gt;
            is_add_matches = False&lt;br /&gt;
            if current_round in [&amp;quot;Playoffs&amp;quot;, &amp;quot;AddTournament&amp;quot;, &amp;quot;Qual&amp;quot;]:&lt;br /&gt;
                current_stage = current_round&lt;br /&gt;
                current_round = &amp;quot;&amp;quot;&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        if &amp;quot;; Дополнительные матчи&amp;quot; in line:&lt;br /&gt;
            is_add_matches = True&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        m_stage = re.match(r&amp;#039;;:?\s*(.+)&amp;#039;, line)&lt;br /&gt;
        if m_stage and &amp;quot;Дополнительные&amp;quot; not in m_stage.group(1):&lt;br /&gt;
            flush_group()&lt;br /&gt;
            flush_knockout()&lt;br /&gt;
            raw_stage = m_stage.group(1)&lt;br /&gt;
            &lt;br /&gt;
            if &amp;quot;Группа&amp;quot; in raw_stage:&lt;br /&gt;
                current_stage = raw_stage.replace(&amp;quot;Группа &amp;quot;, &amp;quot;Group&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                current_stage = STAGE_MAP.get(raw_stage, raw_stage)&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        m_g_start = re.search(r&amp;#039;\{\{Группа\s*\d+-А(\d)&amp;#039;, line)&lt;br /&gt;
        if m_g_start:&lt;br /&gt;
            in_group = True&lt;br /&gt;
            group_type = &amp;quot;A&amp;quot; + m_g_start.group(1)&lt;br /&gt;
            continue&lt;br /&gt;
            &lt;br /&gt;
        if re.search(r&amp;#039;\{\{И\d+&amp;#039;, line):&lt;br /&gt;
            in_knockout = True&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        if in_group:&lt;br /&gt;
            m_row = re.match(r&amp;#039;^([A-Za-z]{1,2})\|([А-ЯЁ]{3})\|(.*?)\|*$&amp;#039;, line)&lt;br /&gt;
            if m_row:&lt;br /&gt;
                color, team, scores_str = m_row.groups()&lt;br /&gt;
                group_colors.append(color)&lt;br /&gt;
                group_teams.append(team)&lt;br /&gt;
                scores = [s for s in scores_str.split(&amp;#039;|&amp;#039;) if s.strip() != &amp;#039;&amp;#039;]&lt;br /&gt;
                group_matrix.append(scores)&lt;br /&gt;
&lt;br /&gt;
        if in_knockout:&lt;br /&gt;
            m_ko = re.match(r&amp;#039;^\|?([A-Za-z]{1,2})\|([А-ЯЁ]{3})\|([^\|]+)\|([А-ЯЁ]{3})\|([A-Z-a-z]{1,2})&amp;#039;, line)&lt;br /&gt;
            if m_ko:&lt;br /&gt;
                c1, t1, score_str, t2, c2 = m_ko.groups()&lt;br /&gt;
                venue = 0 if is_neutral_global else 1&lt;br /&gt;
                &lt;br /&gt;
                legs = [s.strip() for s in score_str.split(&amp;#039;,&amp;#039;)]&lt;br /&gt;
                for idx, leg in enumerate(legs):&lt;br /&gt;
                    is_second = (len(legs) == 2 and idx == 1)&lt;br /&gt;
                    parsed_leg = parse_score(leg, t1, t2, c1, c2, venue, is_second_leg=is_second)&lt;br /&gt;
                    if parsed_leg:&lt;br /&gt;
                        knockout_matches.append(parsed_leg)&lt;br /&gt;
&lt;br /&gt;
        # Если в конце этой строки были }}, закрываем всё&lt;br /&gt;
        if close_table_now:&lt;br /&gt;
            if in_group: flush_group()&lt;br /&gt;
            if in_knockout: flush_knockout()&lt;br /&gt;
            in_group = False&lt;br /&gt;
            in_knockout = False&lt;br /&gt;
&lt;br /&gt;
    # Сбрасываем всё, что осталось в самом конце&lt;br /&gt;
    flush_group()&lt;br /&gt;
    flush_knockout()&lt;br /&gt;
&lt;br /&gt;
    out.append(&amp;quot;    }\n}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    result = &amp;quot;\n&amp;quot;.join(out)&lt;br /&gt;
    print(result)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Burato</name></author>
	</entry>
</feed>