<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://interfaces3.hunter.cryptograss.live/index.php?action=history&amp;feed=atom&amp;title=Template%3AFestival_source</id>
	<title>Template:Festival source - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://interfaces3.hunter.cryptograss.live/index.php?action=history&amp;feed=atom&amp;title=Template%3AFestival_source"/>
	<link rel="alternate" type="text/html" href="https://interfaces3.hunter.cryptograss.live/index.php?title=Template:Festival_source&amp;action=history"/>
	<updated>2026-11-15T07:08:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://interfaces3.hunter.cryptograss.live/index.php?title=Template:Festival_source&amp;diff=9296&amp;oldid=prev</id>
		<title>Magent: config template for Artificial Dumb festival lineup readers</title>
		<link rel="alternate" type="text/html" href="https://interfaces3.hunter.cryptograss.live/index.php?title=Template:Festival_source&amp;diff=9296&amp;oldid=prev"/>
		<updated>2026-10-07T20:57:08Z</updated>

		<summary type="html">&lt;p&gt;config template for Artificial Dumb festival lineup readers&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Festival source ==&lt;br /&gt;
Marks a page as a place an [[PickiPedia:Artificial Dumb|Artificial Dumb]] tool&lt;br /&gt;
can read a festival lineup from, and says how to read it.&lt;br /&gt;
&lt;br /&gt;
One source page per festival per year. The page is config, not an article: it&lt;br /&gt;
exists so that the knowledge of &amp;#039;&amp;#039;where a lineup is published&amp;#039;&amp;#039; lives with the&lt;br /&gt;
people who go to festivals rather than with the people who have commit access.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Festival source&lt;br /&gt;
|url=https://example.com/festivals/thing-2026/&lt;br /&gt;
|kind=html-list&lt;br /&gt;
|festival=Thing&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, on the same page, the patterns:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;pre class=&amp;quot;lineup-patterns&amp;quot;&amp;amp;gt;&lt;br /&gt;
scope-from: class=&amp;quot;lineupblock&amp;quot;&lt;br /&gt;
scope-to: &amp;amp;lt;/ul&amp;amp;gt;&lt;br /&gt;
^(?P&amp;amp;lt;artist&amp;amp;gt;[A-Z0-9][^|]{1,70})$&lt;br /&gt;
&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Why the patterns go in a &amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt; block ===&lt;br /&gt;
Because &amp;quot;|&amp;quot; is syntax to template parameters &amp;#039;&amp;#039;and&amp;#039;&amp;#039; to SMW properties, and a&lt;br /&gt;
regex made of alternations is mostly pipes. A pattern containing&lt;br /&gt;
&amp;lt;code&amp;gt;(?:Main Stage|Dance Tent)&amp;lt;/code&amp;gt; comes back truncated from either. Read as&lt;br /&gt;
raw wikitext, a &amp;lt;nowiki&amp;gt;&amp;lt;pre class=&amp;quot;lineup-patterns&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt; block survives&lt;br /&gt;
byte for byte. The podcast parsers learned this first and the hard way.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;url&amp;#039;&amp;#039;&amp;#039; - Where the lineup is published.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;kind&amp;#039;&amp;#039;&amp;#039; - How to read it. In order of preference:&lt;br /&gt;
** &amp;lt;code&amp;gt;json-ld&amp;lt;/code&amp;gt; — the site&amp;#039;s own schema.org markup. Best: it cannot be broken by a redesign.&lt;br /&gt;
** &amp;lt;code&amp;gt;ical&amp;lt;/code&amp;gt; — a calendar feed. Unambiguous dates.&lt;br /&gt;
** &amp;lt;code&amp;gt;html-table&amp;lt;/code&amp;gt; — a schedule table. Needs a &amp;lt;code&amp;gt;cols:&amp;lt;/code&amp;gt; line.&lt;br /&gt;
** &amp;lt;code&amp;gt;html-list&amp;lt;/code&amp;gt; — anything else, read with regexes. Needs a scope.&lt;br /&gt;
** &amp;lt;code&amp;gt;pdf-text&amp;lt;/code&amp;gt; — not implemented. Many schedules are only a PDF poster; this is left undone rather than done badly.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;festival&amp;#039;&amp;#039;&amp;#039; - The series page, for the wikitext the reader offers to write.&lt;br /&gt;
&lt;br /&gt;
=== Directives ===&lt;br /&gt;
These go in the pattern block alongside the regexes.&lt;br /&gt;
* &amp;lt;code&amp;gt;scope-from:&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;scope-to:&amp;lt;/code&amp;gt; - Regexes bounding the region the lineup is in. &amp;#039;&amp;#039;&amp;#039;Use them.&amp;#039;&amp;#039;&amp;#039; A pattern loose enough to match a bare band name is loose enough to match &amp;quot;Privacy Policy&amp;quot;, and a scope that stops matching is treated as an error so that a redesign halts the run instead of quietly shortening the lineup.&lt;br /&gt;
* &amp;lt;code&amp;gt;cols:&amp;lt;/code&amp;gt; - For &amp;lt;code&amp;gt;html-table&amp;lt;/code&amp;gt;: the column meanings, in order, e.g. &amp;lt;code&amp;gt;cols: time, artist, stage&amp;lt;/code&amp;gt;. Deliberately not read from the table&amp;#039;s own headers, which work until a festival writes &amp;quot;Who&amp;quot; instead of &amp;quot;Artist&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== A caution about aggregators ===&lt;br /&gt;
A listing site is a &amp;#039;&amp;#039;&amp;#039;secondary source&amp;#039;&amp;#039;&amp;#039; and should be marked as one on the&lt;br /&gt;
pages it feeds. It is often the only machine-readable lineup available —&lt;br /&gt;
festival sites are frequently a single poster image — but it is one remove from&lt;br /&gt;
the festival, and festivals change their lineups.&lt;br /&gt;
&lt;br /&gt;
[[Category:Festival templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; background: #f4f4f0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;background: #cc9; text-align: left;&amp;quot; | Festival source{{#if:{{{festival|}}}| for [[{{{festival}}}]]}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 7em;&amp;quot; | Lineup at&lt;br /&gt;
| {{#if:{{{url|}}}|[{{{url}}} {{{url}}}]|&amp;#039;&amp;#039;(no url given)&amp;#039;&amp;#039;}}&lt;br /&gt;
|-&lt;br /&gt;
! Read as&lt;br /&gt;
| &amp;lt;code&amp;gt;{{{kind|json-ld}}}&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Festival sources]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Magent</name></author>
	</entry>
</feed>