Import baofeng2gqrx
This commit is contained in:
parent
1c284ee98c
commit
8ae787014b
95
scripts/baofeng2gqrx
Normal file
95
scripts/baofeng2gqrx
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
import csv
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> int:
|
||||||
|
|
||||||
|
# Handle program arguments
|
||||||
|
ap = argparse.ArgumentParser(
|
||||||
|
prog="baofeng2gqrx",
|
||||||
|
description="Converts Baofeng configuration CSV files to GQRX bookmarks",
|
||||||
|
)
|
||||||
|
ap.add_argument("infile", help="Input radio CSV file")
|
||||||
|
ap.add_argument(
|
||||||
|
"-o",
|
||||||
|
"--outfile",
|
||||||
|
help="Optional output file (if not set, stdout is used)",
|
||||||
|
default="-",
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
ap.add_argument(
|
||||||
|
"--simplex-overrides",
|
||||||
|
help="Comma-seperated list of channel prefixes to specify as SIMPLEX",
|
||||||
|
default="VCALL,UCALL,SMPX,ARES",
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
# Ensure valid infile
|
||||||
|
if not os.path.isfile(args.infile):
|
||||||
|
print(f"Invalid input file: {args.infile}")
|
||||||
|
return 1
|
||||||
|
|
||||||
|
# Load the Baofeng file
|
||||||
|
baofeng_reader = csv.reader(open(args.infile, "r"))
|
||||||
|
|
||||||
|
# Create an output buffer
|
||||||
|
output = []
|
||||||
|
|
||||||
|
# Parse the baofeng file
|
||||||
|
for i, row in enumerate(baofeng_reader):
|
||||||
|
if i > 0:
|
||||||
|
output.append(
|
||||||
|
{
|
||||||
|
"Name": row[1],
|
||||||
|
"Frequency": int(float(row[2]) * 1000000),
|
||||||
|
# These are the same for all FM channels
|
||||||
|
"Modulation": "Narrow FM",
|
||||||
|
"Bandwidth": 10000,
|
||||||
|
# The tag depends on the name
|
||||||
|
"Tags": (
|
||||||
|
"HAM: Simplex"
|
||||||
|
if any(
|
||||||
|
[
|
||||||
|
True
|
||||||
|
for prefix in args.simplex_overrides.split(",")
|
||||||
|
if row[1].startswith(prefix)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
else "HAM: Repeaters"
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Build file contents
|
||||||
|
file = """
|
||||||
|
# AUTO-GENERATED
|
||||||
|
# Tag name ; color
|
||||||
|
HAM: Simplex; #0394fc
|
||||||
|
HAM: Repeaters; #fcc203
|
||||||
|
|
||||||
|
# Frequency ; Name ; Modulation ; Bandwidth; Tags
|
||||||
|
"""
|
||||||
|
for entry in output:
|
||||||
|
file += "{frequency}; {name}; {modulation}; {bandwidth}; {tags}\n".format(
|
||||||
|
frequency=entry["Frequency"],
|
||||||
|
name=entry["Name"],
|
||||||
|
modulation=entry["Modulation"],
|
||||||
|
bandwidth=entry["Bandwidth"],
|
||||||
|
tags=entry["Tags"],
|
||||||
|
)
|
||||||
|
|
||||||
|
# Handle output
|
||||||
|
if args.outfile == "-":
|
||||||
|
print(file)
|
||||||
|
else:
|
||||||
|
with open(args.outfile, "r") as fp:
|
||||||
|
fp.write(file)
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
Loading…
x
Reference in New Issue
Block a user