Files
OpsLog/internal/award/catalog/h26.json
T
rouggy bf4fba484a feat: H26 award recognises each canton by its main cities (regex per reference)
Operators rarely write the canton in their address/QTH but do write the city.
Add a per-reference city regex to every one of the 26 cantons (same mechanism as
WAPC): the description match now fires on the canton NAME or any of its main
cities (Genève→GE, Lausanne→VD, Zürich→ZH, Bellinzona→TI, …), with accented and
ASCII/localised spellings. Scoped to DXCC 287 so cross-border city-name clashes
can't misfire. Catalog version bumped 1→2 so the update reaches anyone already
running H26 v1 (unless they've edited it).
2026-07-24 16:29:59 +02:00

287 lines
7.2 KiB
JSON

{
"def": {
"code": "H26",
"name": "The Helvetia 26 Award HF",
"description": "26 Cantons of Switzerland",
"valid": true,
"url": "https://uska.ch/en/contest/uska-diplome/",
"ref_url": "https://uska.ch/en/contest/uska-diplome/",
"valid_from": "1980-01-01",
"valid_to": "9999-12-01",
"ref_display": "name",
"type": "QSOFIELDS",
"field": "address",
"match_by": "description",
"pattern": "",
"or_rules": [
{
"field": "qth",
"match_by": "description"
}
],
"dxcc_filter": [
287
],
"valid_bands": [
"2190m",
"630m",
"160m",
"80m",
"40m",
"30m",
"20m",
"17m",
"15m",
"12m",
"10m"
],
"confirm": [
"lotw",
"qsl"
],
"validate": [
"lotw",
"qsl"
],
"total": 0,
"builtin": true,
"version": 2
},
"references": [
{
"code": "AG",
"name": "Aargau",
"pattern": "\\b(Aarau|Baden|Wettingen|Wohlen|Rheinfelden|Zofingen|Lenzburg|Brugg|Oftringen|Suhr|Spreitenbach)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "AI",
"name": "Appenzell Innerrhoden",
"pattern": "\\b(Appenzell|Oberegg)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "AR",
"name": "Appenzell Ausserrhoden",
"pattern": "\\b(Herisau|Teufen|Speicher|Heiden|Gais|Urnäsch|Waldstatt)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "BE",
"name": "Bern",
"pattern": "\\b(Bern|Berne|Thun|Biel|Bienne|Köniz|Burgdorf|Langenthal|Steffisburg|Münsingen|Spiez|Interlaken|Ostermundigen|Lyss|Zollikofen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "BL",
"name": "Basel-Landschaft",
"pattern": "\\b(Liestal|Allschwil|Reinach|Muttenz|Pratteln|Binningen|Münchenstein|Birsfelden|Aesch|Sissach|Oberwil)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "BS",
"name": "Basel-Stadt",
"pattern": "\\b(Basel|Bâle|Bale|Riehen|Bettingen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "FR",
"name": "Fribourg",
"pattern": "\\b(Fribourg|Freiburg|Bulle|Marly|Düdingen|Estavayer|Murten|Morat|Villars-sur-Glâne|Guin)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "GE",
"name": "Geneva",
"pattern": "\\b(Genève|Geneve|Geneva|Genf|Carouge|Vernier|Lancy|Meyrin|Onex|Thônex|Thonex|Versoix|Bernex|Plan-les-Ouates)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "GL",
"name": "Glarus",
"pattern": "\\b(Glarus|Glaris|Näfels|Netstal|Ennenda|Mollis)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "GR",
"name": "Graubünden (Grisons)",
"pattern": "\\b(Chur|Coire|Davos|Sankt Moritz|St\\.? Moritz|Landquart|Arosa|Klosters|Ilanz|Thusis|Poschiavo|Domat|Ems)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "JU",
"name": "Jura",
"pattern": "\\b(Delémont|Delemont|Porrentruy|Bassecourt|Courroux|Saignelégier|Alle)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "LU",
"name": "Lucerne",
"pattern": "\\b(Luzern|Lucerne|Emmen|Kriens|Horw|Ebikon|Sursee|Hochdorf|Willisau|Rothenburg)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "NE",
"name": "Neuchâtel",
"pattern": "\\b(Neuchâtel|Neuchatel|Neuenburg|La Chaux-de-Fonds|Chaux-de-Fonds|Le Locle|Peseux|Boudry|Colombier|Marin)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "NW",
"name": "Nidwalden",
"pattern": "\\b(Stans|Hergiswil|Buochs|Stansstad|Beckenried|Ennetbürgen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "OW",
"name": "Obwalden",
"pattern": "\\b(Sarnen|Kerns|Alpnach|Engelberg|Sachseln|Giswil)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "SG",
"name": "St. Gallen",
"pattern": "\\b(Sankt Gallen|Saint-Gall|Rapperswil|Wil|Gossau|Rorschach|Uzwil|Flawil|Altstätten|Jona)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "SH",
"name": "Schaffhausen",
"pattern": "\\b(Schaffhausen|Schaffhouse|Neuhausen|Stein am Rhein|Thayngen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "SO",
"name": "Solothurn",
"pattern": "\\b(Solothurn|Soleure|Olten|Grenchen|Zuchwil|Dornach|Oensingen|Balsthal|Biberist)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "SZ",
"name": "Schwyz",
"pattern": "\\b(Schwyz|Einsiedeln|Freienbach|Küssnacht|Arth|Lachen|Wollerau|Brunnen|Goldau)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "TG",
"name": "Thurgau",
"pattern": "\\b(Frauenfeld|Kreuzlingen|Arbon|Amriswil|Weinfelden|Romanshorn|Sirnach|Aadorf|Münchwilen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "TI",
"name": "Ticino",
"pattern": "\\b(Lugano|Bellinzona|Locarno|Mendrisio|Chiasso|Biasca|Ascona|Losone|Minusio|Giubiasco|Massagno)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "UR",
"name": "Uri",
"pattern": "\\b(Altdorf|Schattdorf|Erstfeld|Andermatt|Flüelen|Bürglen)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "VD",
"name": "Vaud",
"pattern": "\\b(Lausanne|Yverdon|Montreux|Nyon|Vevey|Renens|Morges|Gland|Pully|Prilly|Ecublens|Aigle|Payerne|Rolle|Lutry|Bussigny)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "VS",
"name": "Valais",
"pattern": "\\b(Sion|Sitten|Martigny|Monthey|Sierre|Brig|Brigue|Naters|Visp|Viège|Conthey|Fully|Verbier|Zermatt|Crans-Montana|Saas-Fee|Savièse|Bagnes)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "ZG",
"name": "Zug",
"pattern": "\\b(Zug|Zoug|Baar|Cham|Steinhausen|Risch|Rotkreuz|Hünenberg|Unterägeri|Oberägeri)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
},
{
"code": "ZH",
"name": "Zurich",
"pattern": "\\b(Zürich|Zurich|Winterthur|Uster|Dübendorf|Dietikon|Wetzikon|Kloten|Wädenswil|Horgen|Thalwil|Opfikon|Küsnacht|Meilen|Bülach|Regensdorf|Schlieren|Adliswil|Volketswil)\\b",
"dxcc": 287,
"group": "",
"subgrp": "",
"valid": true
}
]
}