Installation

Diese Software ist in der Programmiersprache Python geschrieben. Wenn der Memory Channels Processor lokal installiert werden soll, um selbst Codeplugs zu generieren oder für eigene Bedürfnisse anzupassen, bitte einfach folgenden Schritte befolgen.

Die bereits automatisch erstellten Codeplugs für diverse Geräte finden sich jedoch im Abschnitt Downloads.

Installation von Python

Python selbst kann unter https://www.python.org/downloads/ bezogen werden.

  • Windows (Binary)

  • Windows (Git)

  • Debian/Ubuntu (Git)

Wenn das Programm memory-channels-processor als ausführbare Datei (als sog. Binary) heruntergeladen wird, muss Python nicht extra installiert werden.

Das Installationsprogramm installiert Python in Ihrem Benutzerordner und fügt seine ausführbaren Verzeichnisse Ihrem Benutzerpfad hinzu.

Weitere Informationen zu den Installationsoptionen finden Sie auf der Seite Using Python on Windows auf der Python-Website.

  1. Laden Sie die Installationsdatei für Python 3.12 Windows installer (64-bit) von der Downloads-Seite von Python.org Webseite herunter.

  2. Führen Sie die ausführbare Installationsdatei aus, die Sie im vorherigen Schritt heruntergeladen haben.

  3. Wählen Sie, dass Sie die ausführbare Python-Datei zu Ihrem Pfad hinzufügen möchten (Add python.exe to PATH).

  4. Wählen Sie Customize installation aus.

  5. Bei Optional Features wählen sie pip aus und bestätigen mit Next

  6. Nun installieren Sie mit Install die ausgewählte Python Version.

  7. Verwenden Sie die folgenden Befehle, um zu prüfen, ob Python und pip korrekt installiert sind.

    C:\Users\myname> python --version
    Python 3.12
    
    C:\Users\myname> pip --version
    pip 23.1.2 from C:\Users\myname\AppData\Local\Programs\Python\Python312\Lib\site-packages\pip (python 3.12)

Unter Debian oder Ubuntu ist Python meist schon installiert. Sollte es nicht installiert sein, kann es wie folgt installiert werden:

Installation von Python 3
sudo apt update
sudo apt install python3
Python Version überprüfen
python3 --version

Installation des Memory Channels Processor

Es gibt mehrere Möglichkeiten den memory-channels-processor auszuführen.

Für die einzelnen Betriebssysteme bitte die folgenden Schritte befolgen:

  • Windows (Binary)

  • Windows (Git)

  • Debian/Ubuntu (Git)

  1. Download der ausführbaren Datei 📦 memory-channels-processor.exe (gezippt)

  2. Zip-Datei entpacken

  3. Öffnen einer Konsole (Windows+R, cmd + Enter) bzw. PowerShell (Windows+R, powershell + Enter)

  4. Wechseln in das Verzeichnis in das der memory-channels-processor.exe entpwckt wurde

    Wechseln in das Verzeichnis des memory-channels-processor.exe
    C:\Users\myname> cd C:\Users\myname\Downloads
    C:\Users\myname\Downloads>
  5. Den Befehl memory-channels-processor.exe --version ausführen um zu sehen, ob alles geklappt hat. Die Ausgabe sollte in etwa so aussehen:

    C:\Users\myname\Downloads> memory-channels-processor.exe --version
    0.0.29 (1)
    1 Hier sollte die aktuelle Version des memory-channels-processor stehen
  1. Klonen des Git repositories https://gitlab.com/oe3lrt/memory-channels-processor.git

  2. In den geklonten Ordner wechseln

  3. Das Python-Paket und seine Abhängigkeiten installieren.

    Installieren Sie das Paket memory-channels-processor mit pip
    C:\Users\myname> pip install --upgrade --user .
  4. Den Befehl memory-channels-processor --version ausführen um zu sehen, ob alles geklappt hat. Die Ausgabe sollte in etwa so aussehen:

    C:\Users\myname> memory-channels-processor --version
    0.0.29 (1)
    1 Hier sollte die aktuelle Version des memory-channels-processor stehen
  1. Klonen des Git repositories https://gitlab.com/oe3lrt/memory-channels-processor.git

  2. In den geklonten Ordner wechseln

  3. Das Python-Paket und seine Abhängigkeiten installieren.

    Installieren Sie das Paket memory-channels-processor mit pip (Ubuntu 22.04)
    sudo apt update
    sudo apt install python3 python3-pip
    pip install . (1)
    1 Der . (Punkt) verweist auf das aktuelle Verzeichnis und darf nicht weggelassen werden!
    Installieren Sie das Paket memory-channels-processor mit pipx (Ubuntu 24.04)
    sudo apt update
    sudo apt install python3 python3-pip python3-pipx
    pipx install . (1)
    1 Der . (Punkt) verweist auf das aktuelle Verzeichnis und darf nicht weggelassen werden!
  4. Den Befehl memory-channels-processor --version ausführen um zu sehen, ob alles geklappt hat. Die Ausgabe sollte in etwa so aussehen:

    memory-channels-processor --version
    0.0.29 (1)
    1 Hier sollte die aktuelle Version des memory-channels-processor stehen

Der Befehl memory-channels-processor --help gibt Auskunft über alle zur Auswahl stehenden Parameter:

$ memory-channels-processor --help
usage: memory-channels-processor [-h]
                                 [--source {cb-channels,csv,fm-channels-iaru-r1,ha2to-repeater-list,ircddb-repeaters,json,oevsv-repeater-db,pmr-channels,rtr-radio-db,slovakia-repeater-list,sota-summits,tsv,uska-repeater-list,xml} [{cb-channels,csv,fm-channels-iaru-r1,ha2to-repeater-list,ircddb-repeaters,json,oevsv-repeater-db,pmr-channels,rtr-radio-db,slovakia-repeater-list,sota-summits,tsv,uska-repeater-list,xml} ...]]
                                 [--output-file <file>]
                                 [--output-format {chirp,cpeditor,csv,icom,icom-ic-705,icom-ic-9700,icom-id-52,icom-rs-ba1v2,icom-rs-ms1,json,kenwood-th-d74,map,opengd77,rtsystems-wcs-705,tsv,wfview,xlsx,xml}]
                                 [--output-columns <Column 1,Column 2,...>]
                                 [--output-no-header]
                                 [--band [{13cm,23cm,pmr,70cm,2m,radio,6m,10m,cb,12m,15m,20m,40m,80m} ...]]
                                 [--country [<country - ISO 3166-1 alpha-3> ...]]
                                 [--type [{fm,d-star,dmr} ...]]
                                 [--distance-max <distance>]
                                 [--filter [<key>=<value> ...]]
                                 [--sort {band,callsign,country,country_code,ctcss,ctcss_rx,ctcss_tx,distance,dmr,dmr_id,dstar,dstar_rpt1,dstar_rpt2,dup,fm,freq_rx,freq_tx,heading,landmark,lat,loc_exact,locator,long,multimode,name,name_formatted,offset,scan_group,sea_level,simplex,source_id,source_license,source_name,source_provider,source_type,source_url,split,state} [{band,callsign,country,country_code,ctcss,ctcss_rx,ctcss_tx,distance,dmr,dmr_id,dstar,dstar_rpt1,dstar_rpt2,dup,fm,freq_rx,freq_tx,heading,landmark,lat,loc_exact,locator,long,multimode,name,name_formatted,offset,scan_group,sea_level,simplex,source_id,source_license,source_name,source_provider,source_type,source_url,split,state} ...]]
                                 [--sort-descending]
                                 [--merge-on {band,callsign,country,country_code,ctcss,ctcss_rx,ctcss_tx,distance,dmr,dmr_id,dstar,dstar_rpt1,dstar_rpt2,dup,fm,freq_rx,freq_tx,heading,landmark,lat,loc_exact,locator,long,multimode,name,name_formatted,offset,scan_group,sea_level,simplex,source_id,source_license,source_name,source_provider,source_type,source_url,split,state} [{band,callsign,country,country_code,ctcss,ctcss_rx,ctcss_tx,distance,dmr,dmr_id,dstar,dstar_rpt1,dstar_rpt2,dup,fm,freq_rx,freq_tx,heading,landmark,lat,loc_exact,locator,long,multimode,name,name_formatted,offset,scan_group,sea_level,simplex,source_id,source_license,source_name,source_provider,source_type,source_url,split,state} ...]]
                                 [--merge-file <file>] [--locator <locator>]
                                 [--name-format {callsign,5-char,6-char,7-char,name,name-5-char,name-6-char,name-7-char,callsign-name,callsign-mode-name,name-callsign,name-mode-callsign,custom}]
                                 [--name-format-custom <name format template>]
                                 [--csv-input-file [<file> ...]]
                                 [--json-input-file [<file> ...]]
                                 [--tsv-input-file [<file> ...]]
                                 [--xml-input-file [<file> ...]]
                                 [--jinja2-extension <name> [<name> ...]]
                                 [--jinja2-lenient]
                                 [--icom-type {fm,d-star,fm-radio,gps}]
                                 [--icom-group-number <number>]
                                 [--icom-group-name <name>]
                                 [--kenwood-type {fm,d-star}]
                                 [--kenwood-world-number <number>]
                                 [--kenwood-world-name <name>]
                                 [--kenwood-country-number <number>]
                                 [--kenwood-country-name <name>]
                                 [--kenwood-group-number <number>]
                                 [--kenwood-group-name <name>]
                                 [--rtsystems-type {fm,d-star}]
                                 [--rtsystems-group-number <number>]
                                 [--rtsystems-group-name <name>] [--offline]
                                 [--no-cache] [--verbose] [--version]

Process memory channels

options:
  -h, --help            show this help message and exit
  --source {cb-channels,csv,fm-channels-iaru-r1,ha2to-repeater-list,ircddb-repeaters,json,oevsv-repeater-db,pmr-channels,rtr-radio-db,slovakia-repeater-list,sota-summits,tsv,uska-repeater-list,xml} [{cb-channels,csv,fm-channels-iaru-r1,ha2to-repeater-list,ircddb-repeaters,json,oevsv-repeater-db,pmr-channels,rtr-radio-db,slovakia-repeater-list,sota-summits,tsv,uska-repeater-list,xml} ...]
                        The data source (default: [])
  --output-file <file>  The output file (default: None)
  --output-format {chirp,cpeditor,csv,icom,icom-ic-705,icom-ic-9700,icom-id-52,icom-rs-ba1v2,icom-rs-ms1,json,kenwood-th-d74,map,opengd77,rtsystems-wcs-705,tsv,wfview,xlsx,xml}
                        The output format (default: csv)
  --output-columns <Column 1,Column 2,...>
                        The column names to output. If multiple are defines
                        separate with ",". (default: [])
  --output-no-header    Disable output of header row with column names
                        (default: True)
  --band [{13cm,23cm,pmr,70cm,2m,radio,6m,10m,cb,12m,15m,20m,40m,80m} ...]
                        Filter for a specific band (default: None)
  --country [<country - ISO 3166-1 alpha-3> ...]
                        Filter for a specific country (default: [])
  --type [{fm,d-star,dmr} ...]
                        Filter for a specific type (default: [])
  --distance-max <distance>
                        Filter for a specific maximum distance (in kilometers)
                        (default: None)
  --filter [<key>=<value> ...]
                        Filter for specific key value combinations (Available
                        keys: callsign, name, band, dmr, dstar, dstar_rpt1,
                        dstar_rpt2, fm, landmark, state, country,
                        country_code, loc_exact, locator, source_id,
                        source_name, source_provider, source_type,
                        source_license, source_url, dup, ctcss, simplex,
                        split, multimode, name_formatted) (default: {})
  --sort {band,callsign,country,country_code,ctcss,ctcss_rx,ctcss_tx,distance,dmr,dmr_id,dstar,dstar_rpt1,dstar_rpt2,dup,fm,freq_rx,freq_tx,heading,landmark,lat,loc_exact,locator,long,multimode,name,name_formatted,offset,scan_group,sea_level,simplex,source_id,source_license,source_name,source_provider,source_type,source_url,split,state} [{band,callsign,country,country_code,ctcss,ctcss_rx,ctcss_tx,distance,dmr,dmr_id,dstar,dstar_rpt1,dstar_rpt2,dup,fm,freq_rx,freq_tx,heading,landmark,lat,loc_exact,locator,long,multimode,name,name_formatted,offset,scan_group,sea_level,simplex,source_id,source_license,source_name,source_provider,source_type,source_url,split,state} ...]
                        The key used for sorting (default: [])
  --sort-descending     The sorting direction (default: True)
  --merge-on {band,callsign,country,country_code,ctcss,ctcss_rx,ctcss_tx,distance,dmr,dmr_id,dstar,dstar_rpt1,dstar_rpt2,dup,fm,freq_rx,freq_tx,heading,landmark,lat,loc_exact,locator,long,multimode,name,name_formatted,offset,scan_group,sea_level,simplex,source_id,source_license,source_name,source_provider,source_type,source_url,split,state} [{band,callsign,country,country_code,ctcss,ctcss_rx,ctcss_tx,distance,dmr,dmr_id,dstar,dstar_rpt1,dstar_rpt2,dup,fm,freq_rx,freq_tx,heading,landmark,lat,loc_exact,locator,long,multimode,name,name_formatted,offset,scan_group,sea_level,simplex,source_id,source_license,source_name,source_provider,source_type,source_url,split,state} ...]
                        The key(s) used for merging (default: [])
  --merge-file <file>   The merge csv input file (default: None)
  --locator <locator>   The locator used as reference for calculating
                        distances (default: None)
  --name-format {callsign,5-char,6-char,7-char,name,name-5-char,name-6-char,name-7-char,callsign-name,callsign-mode-name,name-callsign,name-mode-callsign,custom}, --chirp-name {callsign,5-char,6-char,7-char,name,name-5-char,name-6-char,name-7-char,callsign-name,callsign-mode-name,name-callsign,name-mode-callsign,custom}
                        The name format (default: callsign)
  --name-format-custom <name format template>
                        The custom name format (default: )
  --csv-input-file [<file> ...], --csv [<file> ...]
                        The csv input file (default: None)
  --json-input-file [<file> ...], --json [<file> ...]
                        The JSON input file (default: None)
  --tsv-input-file [<file> ...], --tsv [<file> ...]
                        The tsv input file (default: None)
  --xml-input-file [<file> ...], --xml [<file> ...]
                        The XML input file (default: None)
  --jinja2-extension <name> [<name> ...]
                        Jinja2 extension name (default: [])
  --jinja2-lenient      Disable strict mode (default: False)
  --icom-type {fm,d-star,fm-radio,gps}
                        The output type (default: None)
  --icom-group-number <number>
                        The group number (default: 0)
  --icom-group-name <name>
                        The group name (default: Default Group Name)
  --kenwood-type {fm,d-star}
                        The output type (default: None)
  --kenwood-world-number <number>
                        The world number (1-6) (default: 4)
  --kenwood-world-name <name>
                        The world name (default: Europe)
  --kenwood-country-number <number>
                        The country number (1-150) (default: 9)
  --kenwood-country-name <name>
                        The country name (default: Austria)
  --kenwood-group-number <number>
                        The group number (1-300) (default: 75)
  --kenwood-group-name <name>
                        The group name (default: Default)
  --rtsystems-type {fm,d-star}
                        The output type (default: None)
  --rtsystems-group-number <number>
                        The group number (default: 0)
  --rtsystems-group-name <name>
                        The group name (default: Default Group Name)
  --offline             Enable offline mode (default: False)
  --no-cache            Disable caching of web requests (default: True)
  --verbose             Enable verbosity (default: False)
  --version             Show the version (default: False)

Nützliche Befehle

Folgende Befehle können bei der Verwendung des Memory Channels Processor nützlich sein:

Nützliche Befehle
# FM: Export from ÖVSV Repeater-DB to CSV
memory-channels-processor --source "oevsv-repeater-db" --band 70cm --type "fm" --output-file "fm_70cm_gen_oevsv-repeater-db.csv" --output-format="csv"
memory-channels-processor --source "oevsv-repeater-db" --band 2m --type "fm" --output-file "fm_2m_gen_oevsv-repeater-db.csv" --output-format="csv"

# D-STAR: Export from ÖVSV Repeater-DB to CSV
memory-channels-processor --source "oevsv-repeater-db" --band 23cm --band 70cm --band 2m --type "d-star" --output-file "d-star_23cm_70cm_2m_gen_oevsv-repeater-db.csv" --output-format="csv" --sort "callsign" --sort "freq_tx" --sort "name"

# FM: Input from CSV, filter and export to CSV - should be the same data - just for testing
memory-channels-processor --source "csv" --band 70cm --type "fm" --csv-input-file "fm_70cm_gen_oevsv-repeater-db.csv" --output-file "fm_70cm_gen_oevsv-repeater-db_dup.csv" --output-format="csv"

# FM + Additional data: Export from ÖVSV Repeater-DB mixed with additional entries to Icom
memory-channels-processor --source "oevsv-repeater-db" --source "csv" --band 70cm --type "fm" --csv-input-file "fm_additional.csv" --output-file "icom_ic705_id52_fm_70cm_gen_oevsv-repeater-db_additional.csv" --output-format="icom" --icom-group-number "02" --icom-group-name "OE 70cm"

# D-STAR: Export from ÖVSV Repeater-DB to Icom
memory-channels-processor --source "oevsv-repeater-db" --band 23cm --band 70cm --band 2m --type "d-star" --output-file "icom_ic705_id52_d-star_23cm_70cm_2m_gen_oevsv-repeater-db.csv" --output-format="icom" --icom-group-number "1" --icom-group-name "Austria" --icom-type="d-star" --sort "name"  --sort "callsign" --sort "freq_tx"