mirror of
https://codeberg.org/mclemens/colorspot.git
synced 2024-11-17 23:05:55 -05:00
added download of missing files
switched to cty.csv as data source
This commit is contained in:
parent
6b4672bd32
commit
de323722f4
774
colorspot.py
774
colorspot.py
@ -16,25 +16,85 @@ from colored import fg, bg, attr
|
||||
import configparser
|
||||
from collections import defaultdict
|
||||
import random
|
||||
import requests
|
||||
from os.path import exists
|
||||
import zipfile
|
||||
|
||||
class ColorSpot():
|
||||
|
||||
def __init__(self):
|
||||
self.version = "0.1.0"
|
||||
|
||||
self.print_banner()
|
||||
|
||||
self.config = configparser.ConfigParser()
|
||||
self.config_file = os.path.expanduser('~/.colorspot.ini')
|
||||
self.read_config(self.config, self.config_file)
|
||||
|
||||
self.qsl_countries = self.get_confirmed_countries()
|
||||
self.check_files()
|
||||
if self.check_lotw_confirmed:
|
||||
self.confirmed_entities = self.get_confirmed_entities()
|
||||
|
||||
self.print_banner()
|
||||
|
||||
if self.check_cty:
|
||||
self.cty = list(csv.reader(open(self.config['files']['cty'], "r"), delimiter=","))
|
||||
|
||||
@staticmethod
|
||||
def rnd_col():
|
||||
r = lambda: random.randint(0,255)
|
||||
return'#%02X%02X%02X' % (r(),r(),r())
|
||||
|
||||
@staticmethod
|
||||
def download_file(url, local_filename):
|
||||
#local_filename = url.split('/')[-1]
|
||||
# NOTE the stream=True parameter below
|
||||
with requests.get(url, stream=True) as r:
|
||||
r.raise_for_status()
|
||||
with open(local_filename, 'wb') as f:
|
||||
for chunk in r.iter_content(chunk_size=8192):
|
||||
# If you have chunk encoded response uncomment if
|
||||
# and set chunk_size parameter to None.
|
||||
#if chunk:
|
||||
f.write(chunk)
|
||||
return local_filename
|
||||
|
||||
def check_files(self):
|
||||
# check for lotw qsl information file
|
||||
self.check_lotw_confirmed = exists(self.config['files']['lotw_confirmed'])
|
||||
if not self.check_lotw_confirmed:
|
||||
print("The file " + self.config['files']['lotw_confirmed'] + " is missing.")
|
||||
|
||||
|
||||
# check for cty.csv file
|
||||
self.check_cty = exists(self.config['files']['cty'])
|
||||
if not self.check_cty:
|
||||
url = "https://www.country-files.com/bigcty/download/bigcty.zip"
|
||||
print("The file " + self.config['files']['cty'] + " is missing.")
|
||||
print("Trying to download " + url)
|
||||
zip_name = self.download_file(url, "bigcty.zip" )
|
||||
with zipfile.ZipFile(zip_name, 'r') as zip_ref:
|
||||
zip_ref.extract("cty.csv")
|
||||
os.remove(zip_name)
|
||||
self.check_cty = exists(self.config['files']['cty'])
|
||||
if self.check_cty:
|
||||
print("File successfully downloaded and extracted.")
|
||||
else:
|
||||
print("something went wrong while downloading " + url)
|
||||
|
||||
# check for lotw user activity file
|
||||
self.check_lotw_activity = exists(self.config['files']['lotw_activity'])
|
||||
if not self.check_lotw_activity:
|
||||
url = "https://lotw.arrl.org/lotw-user-activity.csv"
|
||||
print("The file " + self.config['files']['lotw_activity'] + " is missing.")
|
||||
print("Trying to download " + url)
|
||||
file_name = self.download_file(url, self.config['files']['lotw_activity'])
|
||||
self.check_lotw_activity = exists(self.config['files']['lotw_activity'])
|
||||
if self.check_lotw_activity:
|
||||
print("File successfully downloaded")
|
||||
else:
|
||||
print("something went wrong while downloading " + url)
|
||||
|
||||
|
||||
|
||||
def print_banner(self):
|
||||
"""print an awesome banner"""
|
||||
@ -45,6 +105,7 @@ class ColorSpot():
|
||||
print(fg(self.rnd_col())+" | (__/ _ \ / _ \ '_\__ \ '_ \/ _ \ _|")
|
||||
print(fg(self.rnd_col())+" \___\___/_\___/_| |___/ .__/\___/\__|")
|
||||
print(fg(self.rnd_col())+" -= DK1MI =- |_| ")
|
||||
print("")
|
||||
print(attr('reset'))
|
||||
|
||||
@staticmethod
|
||||
@ -60,6 +121,10 @@ class ColorSpot():
|
||||
'port': '7373',
|
||||
'user': 'N0CALL',
|
||||
'timeout': '100'}
|
||||
config['files'] = {
|
||||
'cty': 'cty.csv',
|
||||
'lotw_confirmed': 'lotw.adi',
|
||||
'lotw_activity': 'lotw-user-activity.csv'}
|
||||
config['lotw'] = {
|
||||
'user': 'N0CALL',
|
||||
'password': 'XXXXXXXXX',
|
||||
@ -96,653 +161,6 @@ class ColorSpot():
|
||||
'alert_bg': 'indian_red_1a',
|
||||
'alert_fg': 'white',
|
||||
'default_bg': 'black'}
|
||||
config['dxcc'] = {
|
||||
"1A": "Sov. Mil. Order of Malta,EU",
|
||||
"3A": "Monaco,EU",
|
||||
"3B6": "Agalega & St. Brandon Is.,AF",
|
||||
"3B7": "Agalega & St. Brandon Is.,AF",
|
||||
"3B8": "Mauritius,AF",
|
||||
"3B9": "Rodriguez I.,AF",
|
||||
"3C": "Equatorial Guinea,AF",
|
||||
"3C0": "Annobon I.,AF",
|
||||
"3D2": "Fiji,OC",
|
||||
"3D2": "Conway Reef,OC",
|
||||
"3D2": "Rotuma I.,OC",
|
||||
"3DA": "Swaziland,AF",
|
||||
"3V": "Tunisia,AF",
|
||||
"3W": "Viet Nam,AS",
|
||||
"XV": "Viet Nam,AS",
|
||||
"3X": "Guinea,AF",
|
||||
"3Y": "Bouvet,AF",
|
||||
"3Y": "Peter I I.,AN",
|
||||
"4J": "Azerbaijan,AS",
|
||||
"4K": "Azerbaijan,AS",
|
||||
"4L": "Georgia,AS",
|
||||
"4O": "Montenegro,EU",
|
||||
"4S": "Sri Lanka,AS",
|
||||
"4U_ITU": "ITU HQ,EU",
|
||||
"4U_UN": "United Nations HQ,NA",
|
||||
"4W": "Timor - Leste,OC",
|
||||
"4X": "Israel,AS",
|
||||
"4Z": "Israel,AS",
|
||||
"5A": "Libya,AF",
|
||||
"5B": "Cyprus,AS",
|
||||
"C4": "Cyprus,AS",
|
||||
"P3": "Cyprus,AS",
|
||||
"5H": "Tanzania,AF",
|
||||
"5I": "Tanzania,AF",
|
||||
"5N": "Nigeria,AF",
|
||||
"5R": "Madagascar,AF",
|
||||
"5T": "Mauritania,AF",
|
||||
"5U": "Niger,AF",
|
||||
"5V": "Togo,AF",
|
||||
"5W": "Samoa,OC",
|
||||
"5X": "Uganda,AF",
|
||||
"5Y": "Kenya,AF",
|
||||
"5Z": "Kenya,AF",
|
||||
"6V": "Senegal,AF",
|
||||
"6W": "Senegal,AF",
|
||||
"6Y": "Jamaica,NA",
|
||||
"7O": "Yemen,AS",
|
||||
"7P": "Lesotho,AF",
|
||||
"7Q": "Malawi,AF",
|
||||
"7T": "Algeria,AF",
|
||||
"7U": "Algeria,AF",
|
||||
"7V": "Algeria,AF",
|
||||
"7W": "Algeria,AF",
|
||||
"7X": "Algeria,AF",
|
||||
"7Y": "Algeria,AF",
|
||||
"8P": "Barbados,NA",
|
||||
"8Q": "Maldives,AF",
|
||||
"8R": "Guyana,SA",
|
||||
"9A": "Croatia,EU",
|
||||
"9G": "Ghana,AF",
|
||||
"9H": "Malta,EU",
|
||||
"9I": "Zambia,AF",
|
||||
"9J": "Zambia,AF",
|
||||
"9K": "Kuwait,AS",
|
||||
"9L": "Sierra Leone,AF",
|
||||
"9M2": "West Malaysia,AS",
|
||||
"9M4": "West Malaysia,AS",
|
||||
"9M6": "East Malaysia,OC",
|
||||
"9M8": "East Malaysia,OC",
|
||||
"9N": "Nepal,AS",
|
||||
"9Q": "Dem. Rep. of Congo,AF",
|
||||
"9R": "Dem. Rep. of Congo,AF",
|
||||
"9S": "Dem. Rep. of Congo,AF",
|
||||
"9T": "Dem. Rep. of Congo,AF",
|
||||
"9U": "Burundi,AF",
|
||||
"9V": "Singapore,AS",
|
||||
"9X": "Rwanda,AF",
|
||||
"9Y": "Trinidad & Tobago,SA",
|
||||
"9Z": "Trinidad & Tobago,SA",
|
||||
"A2": "Botswana,AF",
|
||||
"A3": "Tonga,OC",
|
||||
"A4": "Oman,AS",
|
||||
"A5": "Bhutan,AS",
|
||||
"A6": "United Arab Emirates,AS",
|
||||
"A7": "Qatar,AS",
|
||||
"A9": "Bahrain,AS",
|
||||
"AP": "Pakistan,AS",
|
||||
"B": "China,AS",
|
||||
"BS7": "Scarborough Reef,AS",
|
||||
"BV": "Taiwan,AS",
|
||||
"BV9P": "Pratas I.,AS",
|
||||
"C2": "Nauru,OC",
|
||||
"C3": "Andorra,EU",
|
||||
"C5": "The Gambia,AF",
|
||||
"C6": "Bahamas,NA",
|
||||
"C8": "Mozambique,AF",
|
||||
"C9": "Mozambique,AF",
|
||||
"CA": "Chile,SA",
|
||||
"CB": "Chile,SA",
|
||||
"CC": "Chile,SA",
|
||||
"CD": "Chile,SA",
|
||||
"CE": "Chile,SA",
|
||||
"CE0": "Easter I.,SA",
|
||||
"CE0": "Juan Fernandez Is.,SA",
|
||||
"CE0": "San Felix & San Ambrosio,SA",
|
||||
"CE9": "Antarctica,AN",
|
||||
"KC4": "Antarctica,AN",
|
||||
"3Y": "Antarctica,AN",
|
||||
"8j1": "Antarctica,AN",
|
||||
"AT0": "Antarctica,AN",
|
||||
"DP0": "Antarctica,AN",
|
||||
"VK0": "Antarctica,AN",
|
||||
"VP8": "Antarctica,AN",
|
||||
"R1AW": "Antarctica,AN",
|
||||
"CM": "Cuba,NA",
|
||||
"CO": "Cuba,NA",
|
||||
"CN": "Morocco,AF",
|
||||
"CP": "Bolivia,SA",
|
||||
"CT": "Portugal,EU",
|
||||
"CT3": "Madeira Is.,AF",
|
||||
"CU": "Azores,EU",
|
||||
"CV": "Uruguay,SA",
|
||||
"CW": "Uruguay,SA",
|
||||
"CX": "Uruguay,SA",
|
||||
"CY0": "Sable I.,NA",
|
||||
"CY9": "St. Paul I.,NA",
|
||||
"D2": "Angola,AF",
|
||||
"D3": "Angola,AF",
|
||||
"D4": "Cape Verde,AF",
|
||||
"D6": "Comoros,AF",
|
||||
"DA": "Federal Republic of Germany,EU",
|
||||
"DB": "Federal Republic of Germany,EU",
|
||||
"DC": "Federal Republic of Germany,EU",
|
||||
"DD": "Federal Republic of Germany,EU",
|
||||
"DE": "Federal Republic of Germany,EU",
|
||||
"DF": "Federal Republic of Germany,EU",
|
||||
"DG": "Federal Republic of Germany,EU",
|
||||
"DH": "Federal Republic of Germany,EU",
|
||||
"DI": "Federal Republic of Germany,EU",
|
||||
"DJ": "Federal Republic of Germany,EU",
|
||||
"DK": "Federal Republic of Germany,EU",
|
||||
"DL": "Federal Republic of Germany,EU",
|
||||
"DM": "Federal Republic of Germany,EU",
|
||||
"DN": "Federal Republic of Germany,EU",
|
||||
"DO": "Federal Republic of Germany,EU",
|
||||
"DP": "Federal Republic of Germany,EU",
|
||||
"DQ": "Federal Republic of Germany,EU",
|
||||
"DR": "Federal Republic of Germany,EU",
|
||||
"DU": "Philippines,OC",
|
||||
"DV": "Philippines,OC",
|
||||
"DW": "Philippines,OC",
|
||||
"DX": "Philippines,OC",
|
||||
"DY": "Philippines,OC",
|
||||
"DZ": "Philippines,OC",
|
||||
"E3": "Eritrea,AF",
|
||||
"E4": "Palestine,AS",
|
||||
"E5": "N. Cook Is.,OC",
|
||||
"E5": "S. Cook Is.,OC",
|
||||
"E7": "Bosnia-Herzegovina,EU",
|
||||
"EA": "Spain,EU",
|
||||
"EB": "Spain,EU",
|
||||
"EC": "Spain,EU",
|
||||
"ED": "Spain,EU",
|
||||
"EE": "Spain,EU",
|
||||
"EF": "Spain,EU",
|
||||
"EG": "Spain,EU",
|
||||
"EH": "Spain,EU",
|
||||
"EA6": "Balearic Is.,EU",
|
||||
"EB6": "Balearic Is.,EU",
|
||||
"EC6": "Balearic Is.,EU",
|
||||
"ED6": "Balearic Is.,EU",
|
||||
"EE6": "Balearic Is.,EU",
|
||||
"EF6": "Balearic Is.,EU",
|
||||
"EG6": "Balearic Is.,EU",
|
||||
"EH6": "Balearic Is.,EU",
|
||||
"EA8": "Canary Is.,AF",
|
||||
"EB8": "Canary Is.,AF",
|
||||
"EC8": "Canary Is.,AF",
|
||||
"ED8": "Canary Is.,AF",
|
||||
"EE8": "Canary Is.,AF",
|
||||
"EF8": "Canary Is.,AF",
|
||||
"EG8": "Canary Is.,AF",
|
||||
"EH8": "Canary Is.,AF",
|
||||
"EA9": "Ceuta & Melilla,AF",
|
||||
"EB9": "Ceuta & Melilla,AF",
|
||||
"EC9": "Ceuta & Melilla,AF",
|
||||
"ED9": "Ceuta & Melilla,AF",
|
||||
"EE9": "Ceuta & Melilla,AF",
|
||||
"EF9": "Ceuta & Melilla,AF",
|
||||
"EG9": "Ceuta & Melilla,AF",
|
||||
"EH9": "Ceuta & Melilla,AF",
|
||||
"EI": "Ireland,EU",
|
||||
"EJ": "Ireland,EU",
|
||||
"EK": "Armenia,AS",
|
||||
"EL": "Liberia,AF",
|
||||
"EP": "Iran,AS",
|
||||
"EQ": "Iran,AS",
|
||||
"ER": "Moldova,EU",
|
||||
"ES": "Estonia,EU",
|
||||
"ET": "Ethiopia,AF",
|
||||
"EU": "Belarus,EU",
|
||||
"EV": "Belarus,EU",
|
||||
"EW": "Belarus,EU",
|
||||
"EX": "Kyrgyzstan,AS",
|
||||
"EY": "Tajikistan,AS",
|
||||
"EZ": "Turkmenistan,AS",
|
||||
"F": "France,EU",
|
||||
"FG": "Guadeloupe,NA",
|
||||
"FH": "Mayotte,AF",
|
||||
"FJ": "Saint Barthelemy,NA",
|
||||
"FK": "New Caledonia,OC",
|
||||
"FK": "Chesterfield Is.,OC",
|
||||
"FM": "Martinique,NA",
|
||||
"FO": "Austral I.,OC",
|
||||
"FO": "Clipperton I.,NA",
|
||||
"FO": "French Polynesia,OC",
|
||||
"FO": "Marquesas Is.,OC",
|
||||
"FP": "St. Pierre & Miquelon,NA",
|
||||
"FR/G": "Glorioso Is.,AF",
|
||||
"FR/J": "Juan de Nova, Europa,AF",
|
||||
"FR/E": "Juan de Nova, Europa,AF",
|
||||
"FR": "Reunion I.,AF",
|
||||
"FR/T": "Tromelin I.,AF",
|
||||
"FS": "Saint Martin,NA",
|
||||
"FT/W": "Crozet I.,AF",
|
||||
"FT/X": "Kerguelen Is.,AF",
|
||||
"FT/Z": "Amsterdam & St. Paul Is.,AF",
|
||||
"FW": "Wallis & Futuna Is.,OC",
|
||||
"FY": "French Guiana,SA",
|
||||
"G": "England,EU",
|
||||
"GX": "England,EU",
|
||||
"M": "England,EU",
|
||||
"GD": "Isle of Man,EU",
|
||||
"GT": "Isle of Man,EU",
|
||||
"GI": "Northern Ireland,EU",
|
||||
"GN": "Northern Ireland,EU",
|
||||
"GJ": "Jersey,EU",
|
||||
"GH": "Jersey,EU",
|
||||
"GM": "Scotland,EU",
|
||||
"GS": "Scotland,EU",
|
||||
"GU": "Guernsey,EU",
|
||||
"GP": "Guernsey,EU",
|
||||
"GW": "Wales,EU",
|
||||
"GC": "Wales,EU",
|
||||
"H4": "Solomon Is.,OC",
|
||||
"H40": "Temotu Province,OC",
|
||||
"HA": "Hungary,EU",
|
||||
"HG": "Hungary,EU",
|
||||
"HB": "Switzerland,EU",
|
||||
"HB0": "Liechtenstein,EU",
|
||||
"HC": "Ecuador,SA",
|
||||
"HD": "Ecuador,SA",
|
||||
"HC8": "Galapagos Is.,SA",
|
||||
"HD8": "Galapagos Is.,SA",
|
||||
"HH": "Haiti,NA",
|
||||
"HI": "Dominican Republic,NA",
|
||||
"HJ": "Colombia,SA",
|
||||
"HK": "Colombia,SA",
|
||||
"5J": "Colombia,SA",
|
||||
"5K": "Colombia,SA",
|
||||
"HK0": "Malpelo I.,SA",
|
||||
"HK0": "San Andres & Providencia,NA",
|
||||
"HL": "Republic of Korea,AS",
|
||||
"6K": "Republic of Korea,AS",
|
||||
"6N": "Republic of Korea,AS",
|
||||
"HO": "Panama,NA",
|
||||
"HP": "Panama,NA",
|
||||
"HQ": "Honduras,NA",
|
||||
"HR": "Honduras,NA",
|
||||
"HS": "Thailand,AS",
|
||||
"E2": "Thailand,AS",
|
||||
"HV": "Vatican,EU",
|
||||
"HZ": "Saudi Arabia,AS",
|
||||
"I": "Italy,EU",
|
||||
"IS0": "Sardinia,EU",
|
||||
"IM0": "Sardinia,EU",
|
||||
"J2": "Djibouti,AF",
|
||||
"J3": "Grenada,NA",
|
||||
"J5": "Guinea-Bissau,AF",
|
||||
"J6": "St. Lucia,NA",
|
||||
"J7": "Dominica,NA",
|
||||
"J8": "St. Vincent,NA",
|
||||
"JA": "Japan,AS",
|
||||
"JB": "Japan,AS",
|
||||
"JC": "Japan,AS",
|
||||
"JD": "Japan,AS",
|
||||
"JE": "Japan,AS",
|
||||
"JF": "Japan,AS",
|
||||
"JG": "Japan,AS",
|
||||
"JH": "Japan,AS",
|
||||
"JI": "Japan,AS",
|
||||
"JJ": "Japan,AS",
|
||||
"JK": "Japan,AS",
|
||||
"JL": "Japan,AS",
|
||||
"JM": "Japan,AS",
|
||||
"JN": "Japan,AS",
|
||||
"JO": "Japan,AS",
|
||||
"JP": "Japan,AS",
|
||||
"JQ": "Japan,AS",
|
||||
"JR": "Japan,AS",
|
||||
"JS": "Japan,AS",
|
||||
"7J": "Japan,AS",
|
||||
"7K": "Japan,AS",
|
||||
"7L": "Japan,AS",
|
||||
"7M": "Japan,AS",
|
||||
"7N": "Japan,AS",
|
||||
"JD1": "Minami Torishima,OC",
|
||||
"JD1": "Ogasawara,AS",
|
||||
"JT": "Mongolia,AS",
|
||||
"JU": "Mongolia,AS",
|
||||
"JV": "Mongolia,AS",
|
||||
"JW": "Svalbard,EU",
|
||||
"JX": "Jan Mayen,EU",
|
||||
"JY": "Jordan,AS",
|
||||
"K": "United States of America,NA",
|
||||
"W": "United States of America,NA",
|
||||
"N": "United States of America,NA",
|
||||
"AA": "United States of America,NA",
|
||||
"AB": "United States of America,NA",
|
||||
"AC": "United States of America,NA",
|
||||
"AD": "United States of America,NA",
|
||||
"AE": "United States of America,NA",
|
||||
"AF": "United States of America,NA",
|
||||
"AG": "United States of America,NA",
|
||||
"AH": "United States of America,NA",
|
||||
"AI": "United States of America,NA",
|
||||
"AJ": "United States of America,NA",
|
||||
"AK": "United States of America,NA",
|
||||
"KG4": "Guantanamo Bay,NA",
|
||||
"KH0": "Mariana Is.,OC",
|
||||
"KH1": "Baker & Howland Is.,OC",
|
||||
"KH2": "Guam,OC",
|
||||
"KH3": "Johnston I.,OC",
|
||||
"KH4": "Midway I.,OC",
|
||||
"KH5": "Palmyra & Jarvis Is.,OC",
|
||||
"KH5K": "Kingman Reef,OC",
|
||||
"KH6": "Hawaii,OC",
|
||||
"KH7": "Hawaii,OC",
|
||||
"KH7K": "Kure I.,OC",
|
||||
"KH8": "American Samoa,OC",
|
||||
"KH8": "Swains I.,OC",
|
||||
"KH9": "Wake I.,OC",
|
||||
"KL": "Alaska,NA",
|
||||
"AL": "Alaska,NA",
|
||||
"NL": "Alaska,NA",
|
||||
"WL": "Alaska,NA",
|
||||
"KP1": "Navassa I.,NA",
|
||||
"KP2": "Virgin Is.,NA",
|
||||
"KP3": "Puerto Rico,NA",
|
||||
"KP4": "Puerto Rico,NA",
|
||||
"KP5": "Desecheo I.,NA",
|
||||
"LA": "Norway,EU",
|
||||
"LB": "Norway,EU",
|
||||
"LC": "Norway,EU",
|
||||
"LD": "Norway,EU",
|
||||
"LE": "Norway,EU",
|
||||
"LF": "Norway,EU",
|
||||
"LG": "Norway,EU",
|
||||
"LH": "Norway,EU",
|
||||
"LI": "Norway,EU",
|
||||
"LJ": "Norway,EU",
|
||||
"LK": "Norway,EU",
|
||||
"LL": "Norway,EU",
|
||||
"LM": "Norway,EU",
|
||||
"LN": "Norway,EU",
|
||||
"LO": "Argentina,SA",
|
||||
"LP": "Argentina,SA",
|
||||
"LQ": "Argentina,SA",
|
||||
"LR": "Argentina,SA",
|
||||
"LS": "Argentina,SA",
|
||||
"LT": "Argentina,SA",
|
||||
"LU": "Argentina,SA",
|
||||
"LV": "Argentina,SA",
|
||||
"LW": "Argentina,SA",
|
||||
"LX": "Luxembourg,EU",
|
||||
"LY": "Lithuania,EU",
|
||||
"LZ": "Bulgaria,EU",
|
||||
"OA": "Peru,SA",
|
||||
"OB": "Peru,SA",
|
||||
"OC": "Peru,SA",
|
||||
"OD": "Lebanon,AS",
|
||||
"OE": "Austria,EU",
|
||||
"OF": "Finland,EU",
|
||||
"OG": "Finland,EU",
|
||||
"OH": "Finland,EU",
|
||||
"OI": "Finland,EU",
|
||||
"OH0": "Aland Is.,EU",
|
||||
"OJ0": "Market Reef,EU",
|
||||
"OK": "Czech Republic,EU",
|
||||
"OL": "Czech Republic,EU",
|
||||
"OM": "Slovak Republic,EU",
|
||||
"ON": "Belgium,EU",
|
||||
"OO": "Belgium,EU",
|
||||
"OP": "Belgium,EU",
|
||||
"OQ": "Belgium,EU",
|
||||
"OR": "Belgium,EU",
|
||||
"OS": "Belgium,EU",
|
||||
"OT": "Belgium,EU",
|
||||
"OU": "Denmark,EU",
|
||||
"OV": "Denmark,EU",
|
||||
"OW": "Denmark,EU",
|
||||
"OZ": "Denmark,EU",
|
||||
"OX": "Greenland,NA",
|
||||
"OY": "Faroe Is.,EU",
|
||||
"P2": "Papua New Guinea,OC",
|
||||
"P4": "Aruba,SA",
|
||||
"P5": "DPR of Korea,AS",
|
||||
"PA": "Netherlands,EU",
|
||||
"PB": "Netherlands,EU",
|
||||
"PC": "Netherlands,EU",
|
||||
"PD": "Netherlands,EU",
|
||||
"PE": "Netherlands,EU",
|
||||
"PF": "Netherlands,EU",
|
||||
"PG": "Netherlands,EU",
|
||||
"PH": "Netherlands,EU",
|
||||
"PI": "Netherlands,EU",
|
||||
"PJ2": "Bonaire, Curacao,SA",
|
||||
"PJ4": "Bonaire, Curacao,SA",
|
||||
"PJ9": "Bonaire, Curacao,SA",
|
||||
"PJ5": "St. Maarten, Saba, St.Eustatius,NA",
|
||||
"PJ6": "St. Maarten, Saba, St.Eustatius,NA",
|
||||
"PJ7": "St. Maarten, Saba, St.Eustatius,NA",
|
||||
"PJ8": "St. Maarten, Saba, St.Eustatius,NA",
|
||||
"PP": "Brazil,SA",
|
||||
"PQ": "Brazil,SA",
|
||||
"PR": "Brazil,SA",
|
||||
"PS": "Brazil,SA",
|
||||
"PT": "Brazil,SA",
|
||||
"PU": "Brazil,SA",
|
||||
"PV": "Brazil,SA",
|
||||
"PW": "Brazil,SA",
|
||||
"PX": "Brazil,SA",
|
||||
"PY": "Brazil,SA",
|
||||
"PP0-PY0F": "Fernando de Noronha,SA",
|
||||
"PP0-PY0S": "St. Peter & St. Paul Rocks,SA",
|
||||
"PP0-PY0T": "Trindade & Martim Vaz Is.,SA",
|
||||
"PZ": "Suriname,SA",
|
||||
"R1FJ": "Franz Josef Land,EU",
|
||||
"R1MV": "Malyj Vysotskij I.,EU",
|
||||
"S0": "Western Sahara,AF",
|
||||
"S2": "Bangladesh,AS",
|
||||
"S5": "Slovenia,EU",
|
||||
"S7": "Seychelles,AF",
|
||||
"S9": "Sao Tome & Principe,AF",
|
||||
"SA": "Sweden,EU",
|
||||
"SB": "Sweden,EU",
|
||||
"SC": "Sweden,EU",
|
||||
"SD": "Sweden,EU",
|
||||
"SE": "Sweden,EU",
|
||||
"SF": "Sweden,EU",
|
||||
"SG": "Sweden,EU",
|
||||
"SH": "Sweden,EU",
|
||||
"SI": "Sweden,EU",
|
||||
"SJ": "Sweden,EU",
|
||||
"SK": "Sweden,EU",
|
||||
"SL": "Sweden,EU",
|
||||
"SM": "Sweden,EU",
|
||||
"SN": "Poland,EU",
|
||||
"SO": "Poland,EU",
|
||||
"SP": "Poland,EU",
|
||||
"SQ": "Poland,EU",
|
||||
"SR": "Poland,EU",
|
||||
"ST": "Sudan,AF",
|
||||
"SU": "Egypt,AF",
|
||||
"SV": "Greece,EU",
|
||||
"SW": "Greece,EU",
|
||||
"SX": "Greece,EU",
|
||||
"SY": "Greece,EU",
|
||||
"SZ": "Greece,EU",
|
||||
"J4": "Greece,EU",
|
||||
"SV/A": "Mount Athos,EU",
|
||||
"SV5": "Dodecanese,EU",
|
||||
"J45": "Dodecanese,EU",
|
||||
"SV9": "Crete,EU",
|
||||
"J49": "Crete,EU",
|
||||
"T2": "Tuvalu,OC",
|
||||
"T30": "W. Kiribati,OC",
|
||||
"T31": "C. Kiribati (British Phoenix Is.),OC",
|
||||
"T32": "E. Kiribati,OC",
|
||||
"T33": "Banaba I.,OC",
|
||||
"T5": "Somalia,AF",
|
||||
"6O": "Somalia,AF",
|
||||
"T7": "San Marino,EU",
|
||||
"T8": "Palau,OC",
|
||||
"TA": "Turkey,EU",
|
||||
"TB": "Turkey,EU",
|
||||
"TC": "Turkey,EU",
|
||||
"TF": "Iceland,EU",
|
||||
"TG": "Guatemala,NA",
|
||||
"TD": "Guatemala,NA",
|
||||
"TI": "Costa Rica,NA",
|
||||
"TE": "Costa Rica,NA",
|
||||
"TI9": "Cocos I.,NA",
|
||||
"TJ": "Cameroon,AF",
|
||||
"TK": "Corsica,EU",
|
||||
"TL": "Central Africa,AF",
|
||||
"TN": "???,AF",
|
||||
"TR": "Gabon,AF",
|
||||
"TT": "Chad,AF",
|
||||
"TU": "Cote d Ivoire,AF",
|
||||
"TY": "Benin,AF",
|
||||
"TZ": "Mali,AF",
|
||||
"UA": "Russia,EU",
|
||||
"UB": "Russia,EU",
|
||||
"UC": "Russia,EU",
|
||||
"UD": "Russia,EU",
|
||||
"UE": "Russia,EU",
|
||||
"UF": "Russia,EU",
|
||||
"UG": "Russia,EU",
|
||||
"UH": "Russia,EU",
|
||||
"UI": "Russia,EU",
|
||||
"R": "Russia,EU",
|
||||
"UA2": "Kaliningrad,EU",
|
||||
"UJ": "Uzbekistan,AS",
|
||||
"UK": "Uzbekistan,AS",
|
||||
"UL": "Uzbekistan,AS",
|
||||
"UM": "Uzbekistan,AS",
|
||||
"UN": "Kazakhstan,AS",
|
||||
"UO": "Kazakhstan,AS",
|
||||
"UP": "Kazakhstan,AS",
|
||||
"UQ": "Kazakhstan,AS",
|
||||
"UR": "Ukraine,EU",
|
||||
"US": "Ukraine,EU",
|
||||
"UT": "Ukraine,EU",
|
||||
"UU": "Ukraine,EU",
|
||||
"UV": "Ukraine,EU",
|
||||
"UW": "Ukraine,EU",
|
||||
"UX": "Ukraine,EU",
|
||||
"UY": "Ukraine,EU",
|
||||
"UZ": "Ukraine,EU",
|
||||
"EM": "Ukraine,EU",
|
||||
"EN": "Ukraine,EU",
|
||||
"EO": "Ukraine,EU",
|
||||
"V2": "Antigua & Barbuda,NA",
|
||||
"V3": "Belize,NA",
|
||||
"V4": "St. Kitts & Nevis,NA",
|
||||
"V5": "Namibia,AF",
|
||||
"V6": "Micronesia,OC",
|
||||
"V7": "Marshall Is.,OC",
|
||||
"V8": "Brunei Darussalam,OC",
|
||||
"VE": "Canada,NA",
|
||||
"VO": "Canada,NA",
|
||||
"VY": "Canada,NA",
|
||||
"VK": "Australia,OC",
|
||||
"VK0": "Heard I.,AF",
|
||||
"VK0": "Macquarie I.,OC",
|
||||
"VK9C": "Cocos Is.,OC",
|
||||
"VK9L": "Lord Howe I.,OC",
|
||||
"VK9M": "Mellish Reef,OC",
|
||||
"VK9N": "Norfolk I.,OC",
|
||||
"VK9W": "Willis I.,OC",
|
||||
"VK9X": "Christmas I.,OC",
|
||||
"VP2E": "Anguilla,NA",
|
||||
"VP2M": "Montserrat,NA",
|
||||
"VP2V": "British Virgin Is.,NA",
|
||||
"VP5": "Turks & Caicos Is.,NA",
|
||||
"VP6": "Pitcairn I.,OC",
|
||||
"VP6": "Ducie I.,OC",
|
||||
"VP8": "Falkland Is.,SA",
|
||||
"VP8": "South Shetland Is.,SA",
|
||||
"CE9": "South Shetland Is.,SA",
|
||||
"HF0": "South Shetland Is.,SA",
|
||||
"4K1": "South Shetland Is.,SA",
|
||||
"VP9": "Bermuda,NA",
|
||||
"VQ9": "Chagos Is.,AF",
|
||||
"VR": "Hong Kong,AS",
|
||||
"VU": "India,AS",
|
||||
"VU4": "Andaman & Nicobar Is.,AS",
|
||||
"VU7": "Lakshadweep Is.,AS",
|
||||
"XA": "Mexico,NA",
|
||||
"XB": "Mexico,NA",
|
||||
"XC": "Mexico,NA",
|
||||
"XD": "Mexico,NA",
|
||||
"XE": "Mexico,NA",
|
||||
"XF": "Mexico,NA",
|
||||
"XG": "Mexico,NA",
|
||||
"XH": "Mexico,NA",
|
||||
"XI": "Mexico,NA",
|
||||
"XA4": "Revillagigedo,NA",
|
||||
"XB4": "Revillagigedo,NA",
|
||||
"XC4": "Revillagigedo,NA",
|
||||
"XD4": "Revillagigedo,NA",
|
||||
"XE4": "Revillagigedo,NA",
|
||||
"XF4": "Revillagigedo,NA",
|
||||
"XG4": "Revillagigedo,NA",
|
||||
"XH4": "Revillagigedo,NA",
|
||||
"XI4": "Revillagigedo,NA",
|
||||
"XT": "Burkina Faso,AF",
|
||||
"XU": "Cambodia,AS",
|
||||
"XW": "Laos,AS",
|
||||
"XX9": "Macao,AS",
|
||||
"XY": "Myanmar,AS",
|
||||
"XZ": "Myanmar,AS",
|
||||
"YA": "Afghanistan,AS",
|
||||
"YB": "Indonesia,OC",
|
||||
"YC": "Indonesia,OC",
|
||||
"YD": "Indonesia,OC",
|
||||
"YE": "Indonesia,OC",
|
||||
"YF": "Indonesia,OC",
|
||||
"YG": "Indonesia,OC",
|
||||
"YH": "Indonesia,OC",
|
||||
"YI": "Iraq,AS",
|
||||
"YJ": "Vanuatu,OC",
|
||||
"YK": "Syria,AS",
|
||||
"YL": "Latvia,EU",
|
||||
"YN": "Nicaragua,NA",
|
||||
"H6": "Nicaragua,NA",
|
||||
"H7": "Nicaragua,NA",
|
||||
"HT": "Nicaragua,NA",
|
||||
"YO": "Romania,EU",
|
||||
"YP": "Romania,EU",
|
||||
"YQ": "Romania,EU",
|
||||
"YR": "Romania,EU",
|
||||
"YS": "El Salvador,NA",
|
||||
"HU": "El Salvador,NA",
|
||||
"YT": "Serbia,EU",
|
||||
"YU": "Serbia,EU",
|
||||
"YV": "Venezuela,SA",
|
||||
"YW": "Venezuela,SA",
|
||||
"YX": "Venezuela,SA",
|
||||
"YY": "Venezuela,SA",
|
||||
"4M": "Venezuela,SA",
|
||||
"YV0": "Aves I.,NA",
|
||||
"Z2": "Zimbabwe,AF",
|
||||
"Z3": "Macedonia,EU",
|
||||
"ZA": "Albania,EU",
|
||||
"ZB2": "Gibraltar,EU",
|
||||
"ZC4": "UK Sov. Base Areas on Cyprus,AS",
|
||||
"ZD7": "St. Helena,AF",
|
||||
"ZD8": "Ascension I.,AF",
|
||||
"ZD9": "Tristan da Cunha & Gough I.,AF",
|
||||
"ZF": "Cayman Is.,NA",
|
||||
"ZK2": "Niue,OC",
|
||||
"ZK3": "Tokelau Is.,OC",
|
||||
"ZL": "New Zealand,OC",
|
||||
"ZM": "New Zealand,OC",
|
||||
"ZL7": "Chatham Is.,OC",
|
||||
"ZL8": "Kermadec Is.,OC",
|
||||
"ZL9": "Auckland & Campbell Is.,OC",
|
||||
"ZP": "Paraguay,SA",
|
||||
"ZR": "South Africa,AF",
|
||||
"ZS": "South Africa,AF",
|
||||
"ZT": "South Africa,AF",
|
||||
"ZU": "South Africa,AF",
|
||||
"ZS8": "Prince Edward & Marion Is.,AF"
|
||||
}
|
||||
|
||||
with open(file_name, 'w') as configfile:
|
||||
config.write(configfile)
|
||||
@ -751,24 +169,21 @@ class ColorSpot():
|
||||
sys.exit()
|
||||
return config
|
||||
|
||||
def get_confirmed_countries(self):
|
||||
def get_confirmed_entities(self):
|
||||
ret = []
|
||||
#TODO: download file and/or tell user what to do
|
||||
file = open("lotw.adi", "r")
|
||||
file = open(self.config['files']['lotw_confirmed'], "r")
|
||||
for row in file:
|
||||
if re.search("COUNTRY", row):
|
||||
country = row.partition(">")[2].lower().rstrip()
|
||||
country = re.sub('European ', '', country, flags=re.IGNORECASE)
|
||||
country = re.sub('Asiatic ', '', country, flags=re.IGNORECASE)
|
||||
if country not in ret:
|
||||
ret.append(country)
|
||||
if re.search("<DXCC:", row):
|
||||
dxcc = row.partition(">")[2].lower().rstrip()
|
||||
if dxcc not in ret:
|
||||
ret.append(dxcc)
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def check_lotw(call):
|
||||
def check_lotw(self, call):
|
||||
ret = ""
|
||||
#TODO: download file and/or tell user what to do
|
||||
csv_file = csv.reader(open('lotw-user-activity.csv', "r"), delimiter=",")
|
||||
csv_file = csv.reader(open(self.config['files']['lotw_activity'], "r"), delimiter=",")
|
||||
#loop through the csv file
|
||||
for row in csv_file:
|
||||
if call == row[0]:
|
||||
@ -776,17 +191,21 @@ class ColorSpot():
|
||||
return ret
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def get_call_details(call, data):
|
||||
def get_cty_row(self, call):
|
||||
done = False
|
||||
while not done:
|
||||
if call in data:
|
||||
return data[call].split(',')
|
||||
for row in self.cty:
|
||||
entities = row[9].replace(";", "").replace("=", "").split(" ")
|
||||
# TODO: schauen ob = davor und match -> als special call anzeigen
|
||||
for prefix in entities:
|
||||
if call == prefix:
|
||||
return row
|
||||
call = call[:-1]
|
||||
if call == "":
|
||||
return ["-", "-"]
|
||||
return ["-", "-", "-", "-", "-", "-", "-"]
|
||||
return None
|
||||
|
||||
|
||||
def get_spots(self):
|
||||
with Telnet(self.config['cluster']['host'], int(self.config['cluster']['port']), \
|
||||
int(self.config['cluster']['timeout'])) as telnet:
|
||||
@ -816,15 +235,20 @@ class ColorSpot():
|
||||
call_dx = re.search(freq + ' +(.+?) ', line).group(1)
|
||||
time = re.search('[^ ]*$', line).group(0)[0:4]
|
||||
comment = re.search(call_dx + ' +(.+?) +' + time, line).group(1)
|
||||
#areaname = self.get_country(call_dx, self.dxcc)
|
||||
call_details = self.get_call_details(call_dx, self.config['dxcc'])
|
||||
areaname = call_details[0]
|
||||
continent = call_details[1]
|
||||
lotw_date = self.check_lotw(call_dx)
|
||||
|
||||
lotw = ""
|
||||
if lotw_date:
|
||||
if self.check_cty:
|
||||
cty_details = self.get_cty_row(call_dx)
|
||||
else:
|
||||
cty_details = ["-","-","-","-","-","-","-","-","-","-"]
|
||||
|
||||
areaname = cty_details[1]
|
||||
continent = cty_details[3]
|
||||
|
||||
if self.check_lotw_activity and self.check_lotw(call_dx):
|
||||
lotw = "✓"
|
||||
else:
|
||||
lotw = ""
|
||||
|
||||
try:
|
||||
if self.config['colors']['color_by'] == "band":
|
||||
foreground = self.config['band_colors'][freq[:-5]]
|
||||
@ -837,7 +261,7 @@ class ColorSpot():
|
||||
|
||||
freq = freq.replace('.0', '')
|
||||
|
||||
if areaname.lower() not in self.qsl_countries:
|
||||
if self.check_lotw_confirmed and cty_details[2] not in self.confirmed_entities:
|
||||
background = self.config['colors']['alert_bg']
|
||||
foreground = self.config['colors']['alert_fg']
|
||||
else:
|
||||
@ -858,9 +282,11 @@ class ColorSpot():
|
||||
# Main Routine #
|
||||
#####################################################
|
||||
def main():
|
||||
"""the main routine"""
|
||||
try:
|
||||
color_spot = ColorSpot()
|
||||
color_spot.get_spots()
|
||||
except KeyboardInterrupt:
|
||||
sys.exit(0) # or 1, or whatever
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user