map improvements

This commit is contained in:
Kaaninchen
2026-08-27 13:10:30 +02:00
parent 93b9712394
commit dde0c443de
7 changed files with 21 additions and 52 deletions
+1
View File
@@ -26,6 +26,7 @@ class ConnectionsConfig:
class AnnouncementConfig:
text_announcements: bool
voice_announcements: bool
map: bool
@dataclass
class HttpConfig:
+3 -1
View File
@@ -165,6 +165,7 @@ OPERATOR_ALIASES = {
"Bayerische Regiobahn": OPERATORS["db_bayern"],
"DB Regio AG Bayern": OPERATORS["db_bayern"],
"DB Fernverkehr AG": OPERATORS["db_allgemein"],
"DB Regio AG": OPERATORS["db_allgemein"],
"DB Regio AG NRW": OPERATORS["db_allgemein"],
"DB Regio AG Südost": OPERATORS["db_allgemein"],
"DB Regio AG Nordost": OPERATORS["db_allgemein"],
@@ -177,7 +178,8 @@ OPERATOR_ALIASES = {
"VR": OPERATORS["Vr"],
"FlixBus-gb": OPERATORS["Flixbus"],
"FlixBus-eu": OPERATORS["Flixbus"],
"S-Bahn Berlin GmbH": OPERATORS["S-Bahn"]
"S-Bahn Berlin GmbH": OPERATORS["S-Bahn"],
"DB Regio AG S-Bahn München": OPERATORS["S-Bahn"]
}
+4 -2
View File
@@ -4,11 +4,12 @@ import random
from src.utils import get_operator_metadata, get_next_station, format_via_list, format_stop_list
from src.dc.helpers import format_timestamp_to_dc
from src.lang.locales import lang
from src.config import config
lang_embed = lang.embeds
def build_embed_footer(slogans):
footer_notice = f"https://transitous.org/sources/ • Maps (C) CARTO (C) OpenStreetMap.org contributors"
footer_notice = f"https://transitous.org/sources/"
icon = "https://api.transitous.org/favicon.png"
if slogans is not None:
@@ -61,7 +62,8 @@ def build_info_embed() -> discord.Embed:
embed.set_author(name=agency)
embed.set_thumbnail(url=metadata["logo"])
embed.set_image(url="attachment://ride.png")
if config.announcements.map:
embed.set_image(url="attachment://ride.png")
return embed
def build_announcement_embed(msg):
+3 -2
View File
@@ -28,7 +28,8 @@ async def rename_vc(bot: discord.Bot, voice_channel, from_scheduler: bool = Fals
logger(f"Failed to select route after {max_attempt} attempts", "fatal")
return False
generate_static_map(trip["stops"], trip["mode"], trip["agency"], trip["route_color"])
if config.announcements.map:
generate_static_map(trip["stops"], trip["mode"], trip["agency"], trip["route_color"])
arrival = trip["arrival"]
channel_name = trip["channel_name"]
@@ -70,7 +71,7 @@ async def announcer(announcement: str, voice_channel: discord.VoiceChannel, dest
embed = None
if embed:
if image:
if image and config.announcements.map:
await voice_channel.send(file=image, embed=embed)
else:
await voice_channel.send(embed=embed)
+3 -45
View File
@@ -217,22 +217,12 @@ def generate_static_map(stops: dict, mode: str, operator: str, route_color: str)
context = staticmaps.Context()
context.set_tile_provider(
staticmaps.TileProvider(
"carto-voyager",
url_pattern=(
"https://$s.basemaps.cartocdn.com/"
"rastertiles/voyager/$z/$x/$y.png"
),
shards=["a", "b", "c", "d"],
attribution="",
)
context.set_tile_provider(staticmaps.tile_provider_OSM)
# It is against the law (and against your morals...) to not give
# OSM and carto credits for their great work
# the tileprovider attributions for their great work
# I only removed the attribution text because I really dislike the
# ugly white box that py-staticmaps adds. Credits are still visible in the
# embeds footer
)
stop_coords = [
staticmaps.create_latlng(
@@ -246,7 +236,7 @@ def generate_static_map(stops: dict, mode: str, operator: str, route_color: str)
staticmaps.Line(
stop_coords,
color=white,
width=20,
width=15,
)
)
@@ -279,38 +269,6 @@ def generate_static_map(stops: dict, mode: str, operator: str, route_color: str)
size=12
)
)
lats = [c.lat().degrees for c in stop_coords]
lons = [c.lng().degrees for c in stop_coords]
lat_span = max(lats) - min(lats)
lon_span = max(lons) - min(lons)
MIN_SPAN = 0.01
if lat_span < MIN_SPAN or lon_span < MIN_SPAN:
center_lat = (max(lats) + min(lats)) / 2
center_lon = (max(lons) + min(lons)) / 2
pad = MIN_SPAN / 2
context.add_object(
staticmaps.Circle(
staticmaps.create_latlng(center_lat + pad, center_lon + pad),
radius_km=0.01,
fill_color=staticmaps.TRANSPARENT,
color=staticmaps.TRANSPARENT,
width=0,
)
)
context.add_object(
staticmaps.Circle(
staticmaps.create_latlng(center_lat - pad, center_lon - pad),
radius_km=0.01,
fill_color=staticmaps.TRANSPARENT,
color=staticmaps.TRANSPARENT,
width=0,
)
)
try:
image = context.render_cairo(400, 300)
image.write_to_png("src/data/assets/current_map.png")