diff --git a/Modules/Achievements.cs b/Modules/Achievements.cs index a1402129f..c0604db97 100644 --- a/Modules/Achievements.cs +++ b/Modules/Achievements.cs @@ -208,6 +208,7 @@ public static class Achievements }; request.SetRequestHeader("Content-Type", "application/json"); + request.SetRequestHeader("User-Agent", $"{Main.ModName} v{Main.PluginVersion}"); yield return request.SendWebRequest(); Logger.Msg(request.result != UnityWebRequest.Result.Success ? $"Error saving achievements: {request.error}" : "Achievements saved successfully", "Achievements.SaveAllData"); @@ -234,6 +235,7 @@ public static class Achievements var url = $"{ApiLoadEndpoint}?userId={userId}"; UnityWebRequest request = UnityWebRequest.Get(url); + request.SetRequestHeader("User-Agent", $"{Main.ModName} v{Main.PluginVersion}"); yield return request.SendWebRequest(); if (request.result != UnityWebRequest.Result.Success) diff --git a/Modules/LobbySharingAPI.cs b/Modules/LobbySharingAPI.cs index 323daa80d..8cbb8637e 100644 --- a/Modules/LobbySharingAPI.cs +++ b/Modules/LobbySharingAPI.cs @@ -50,6 +50,7 @@ public static class LobbySharingAPI }; request.SetRequestHeader("Content-Type", "application/json"); + request.SetRequestHeader("User-Agent", $"{Main.ModName} v{Main.PluginVersion}"); yield return request.SendWebRequest(); LastRequestTimeStamp = Utils.TimeStamp; @@ -111,6 +112,7 @@ public static class LobbySharingAPI }; request.SetRequestHeader("Content-Type", "application/json"); + request.SetRequestHeader("User-Agent", $"{Main.ModName} v{Main.PluginVersion}"); yield return request.SendWebRequest(); LastRequestTimeStamp = Utils.TimeStamp; diff --git a/Patches/AnnouncementPatch.cs b/Patches/AnnouncementPatch.cs index d4f2ac812..b6b6f5428 100644 --- a/Patches/AnnouncementPatch.cs +++ b/Patches/AnnouncementPatch.cs @@ -16,13 +16,16 @@ namespace EHR; public class ModNews { // ReSharper disable UnassignedField.Global - public int Number; - public string Date; - public string Title; - public string SubTitle; - public string ShortTitle; - public string Text; + // ReSharper disable UnusedAutoPropertyAccessor.Global + public int Number { get; set; } + public string Date { get; set; } + public string Title { get; set; } + public string SubTitle { get; set; } + public string ShortTitle { get; set; } + + public string Text { get; set; } // ReSharper restore UnassignedField.Global + // ReSharper restore UnusedAutoPropertyAccessor.Global public Announcement ToAnnouncement() { @@ -52,7 +55,7 @@ public static class ModNewsFetcher public static IEnumerator FetchNews() { UnityWebRequest request = UnityWebRequest.Get(NewsUrl); - request.SetRequestHeader("User-Agent", "EndlessHostRoles-Mod"); + request.SetRequestHeader("User-Agent", $"{Main.ModName} v{Main.PluginVersion}"); yield return request.SendWebRequest(); @@ -66,6 +69,7 @@ public static class ModNewsFetcher { List newsList = ModNews.FromJson(request.downloadHandler.text); ModNewsHistory.AllModNews = newsList.OrderByDescending(n => DateTime.Parse(n.Date)).ToList(); + Logger.Info($"Successfully fetched {ModNewsHistory.AllModNews.Count} mod news items.", "ModNewsFetcher"); } catch (Exception ex) { Utils.ThrowException(ex); } } diff --git a/release_to_modnews.py b/release_to_modnews.py index 2914a2946..732448912 100644 --- a/release_to_modnews.py +++ b/release_to_modnews.py @@ -1,4 +1,6 @@ import os +import re +from datetime import datetime import markdown import requests @@ -19,32 +21,65 @@ def fetch_latest_release(): for i, release in enumerate(releases): tag = release["tag_name"] title = f"Endless Host Roles {tag}" - subtitle = f"★★★★Release {tag}★★★★" - short_title = f"★EHR {tag}" + subtitle = f"Update if you haven't already!" + short_title = f"∞ EHR {tag}" date = release["published_at"] body_md = release["body"] body_html = markdown.markdown(body_md) body_html = ( body_html - .replace("

", "

\n") - .replace("
  • ", " - ") + .replace(">", ">") + .replace("&", "&") + .replace("", "") + .replace("", "") + .replace("[!CAUTION]", "CAUTION!\n") + .replace("[!WARNING]", "WARNING!\n") + .replace("[!IMPORTANT]", "IMPORTANT:\n") + .replace("[!NOTE]", "Note:\n") + .replace("[!TIP]", "Tip:\n") + .replace("
    ", "\n") + .replace("
    ", "\n") + .replace("", "") + .replace("", "") + .replace("

    ", "\n") + .replace("

    ", "\n") + .replace("
  • ", " - ") .replace("
  • ", "\n") .replace("", "") - .replace("", "").replace("", "") + .replace("", "") + .replace("", "") + .replace("
    ", "---------------------------------------------------------------------------") + .replace("
    ", "") + .replace("
    ", "") + .replace("
    ", "") + .replace("
    ", "") + .replace("

    ", "") + .replace("

    ", "") + .replace("

    ", "\n") + .replace("

    ", "\n") + .replace("

    ", "\n\n") + .replace("

    ", "\n\n") + .replace("

    ", "\n\n") + .replace("

    ", "\n\n") ) + body_html = re.sub(r'(.*?)', r'\1', body_html) - intro_line = f"Welcome to EHR {tag}.\n" - subtitle_line = f"{subtitle}\n\n" + for _ in range(10): + body_html = re.sub(r'\n\s*\n\s*\n+', '\n\n', body_html) + body_html = re.sub(r'^\s*-\s*$\n?', '', body_html, flags=re.MULTILINE) + + dt = datetime.strptime(date, "%Y-%m-%dT%H:%M:%SZ") + formatted_date = dt.strftime("%Y-%m-%dT00:00:00Z") mod_news = { "Number": 100000 + i, "Title": title, "SubTitle": subtitle, "ShortTitle": short_title, - "Text": intro_line + subtitle_line + body_html, - "Date": date + "Text": body_html, + "Date": formatted_date } mod_news_list.append(mod_news)