diff --git a/CHANGELOG.md b/CHANGELOG.md index bef3d3a..e93d3ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [5.8.0-beta.2] 2025-07-06 +## Added +- Filter servers by official/unofficial status +## Changed +- Updated internal versioning of helper files + ## [5.8.0-beta.1] 2025-06-05 ## Added - Automatically fetch geolocation records diff --git a/dzgui.sh b/dzgui.sh index 62ae41f..05505d4 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -o pipefail -version=5.8.0-beta.1 +version=5.8.0-beta.2 #CONSTANTS aid=221100 @@ -585,10 +585,10 @@ fetch_helpers_by_sum(){ [[ -f "$config_file" ]] && source "$config_file" declare -A sums sums=( - ["ui.py"]="a6fdbf3e3eb92b7bc78e6ae23882b10b" + ["ui.py"]="f128a97e744e9e11036d707198feb8a8" ["query_v2.py"]="55d339ba02512ac69de288eb3be41067" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" - ["funcs"]="f6e8b113e586a4bb2ea40c9ee56ebc95" + ["funcs"]="94287c75a5ae0a06a95dd439711e6fba" ["lan"]="c62e84ddd1457b71a85ad21da662b9af" ) local author="aclist" diff --git a/helpers/funcs b/helpers/funcs index 57e87f5..31b5f59 100755 --- a/helpers/funcs +++ b/helpers/funcs @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -o pipefail -version=5.6.0 +version="5.8.0" #CONSTANTS aid=221100 @@ -605,6 +605,20 @@ filter_servers(){ <<< "$filtered" awk -F$separator '!seen[$1]++' fi } + filter_official(){ + if [[ ${filters[*]} =~ Official ]]; then + echo -n "$filtered" + else + <<< "$filtered" awk -F$separator '$10 == "Community"' + fi + } + filter_community(){ + if [[ ${filters[*]} =~ Unoffic ]]; then + echo -n "$filtered" + else + <<< "$filtered" awk -F$separator '$10 == "Official"' + fi + } filtered=$(filter_perspective) filtered=$(filter_full) @@ -615,6 +629,8 @@ filter_servers(){ filtered=$(filter_ascii) filtered=$(filter_duplicates) filtered=$(filter_keyword) + filtered=$(filter_official) + filtered=$(filter_community) if [[ -z "$filtered" ]]; then logger WARN "Filter result is empty" @@ -652,7 +668,8 @@ parse_server_json(){ "\(.max_players)␞" + "\(if .gametype == null then "0" elif .gametype|split("lqs")[1] == null then "0" else .gametype|split("lqs")[1]|split(",")[0] end)␞" + "\(.addr|split(":")[0]):\(if .gameport == null then "XXXX" else .gameport end)␞" + - "\(.addr|split(":")[1])" + "\(.addr|split(":")[1])␞" + + "\(if .gametype == null then "null" else (.gametype|split(",")|if any(. == "external") then "Community" else "Official" end) end)" ' | sort -k1 } align_versions_file(){ diff --git a/helpers/ui.py b/helpers/ui.py index 4180957..e167277 100644 --- a/helpers/ui.py +++ b/helpers/ui.py @@ -17,7 +17,6 @@ import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, Gdk, GObject, Pango -# 5.7.0 app_name = "DZGUI" cache = {} @@ -38,7 +37,7 @@ mod_store = Gtk.ListStore(str, str, str, float, str) #cf. log_cols log_store = Gtk.ListStore(str, str, str, str) #cf. browser_cols -server_store = Gtk.ListStore(str, str, str, str, int, int, int, str, int) +server_store = Gtk.ListStore(str, str, str, str, int, int, int, str, int, str) default_tooltip = "Select a row to see its detailed description" server_tooltip = [None, None] @@ -96,7 +95,9 @@ filters = { "Full": False, "Low pop": True, "Non-ASCII": False, - "Duplicate": False + "Duplicate": False, + "Official": True, + "Unoffic.": True, } @@ -553,7 +554,7 @@ def parse_server_rows(data): lines = data.stdout.splitlines() reader = csv.reader(lines, delimiter=delimiter) try: - rows = [[row[0], row[1], row[2], row[3], int(row[4]), int(row[5]), int(row[6]), row[7], int(row[8])] for row in reader if row] + rows = [[row[0], row[1], row[2], row[3], int(row[4]), int(row[5]), int(row[6]), row[7], int(row[8]), row[9]] for row in reader if row] except IndexError: return 1 for row in rows: @@ -1609,7 +1610,8 @@ class TreeView(Gtk.TreeView): if (column_title == "Map"): column.set_fixed_width(300) - self.append_column(column) + if i != 10: + self.append_column(column) self.update_first_col(mode.dict["label"])