<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ntfy on Christian Martínez De La Rosa</title><link>https://christt105.github.io/ca/tags/ntfy/</link><description>Recent content in Ntfy on Christian Martínez De La Rosa</description><generator>Hugo -- gohugo.io</generator><language>ca</language><atom:link href="https://christt105.github.io/ca/tags/ntfy/index.xml" rel="self" type="application/rss+xml"/><item><title>InformadoRSS</title><link>https://christt105.github.io/ca/projects/informadorss/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://christt105.github.io/ca/projects/informadorss/</guid><enclosure url="https://christt105.github.io/projects/informadorss/cover.webp" length="34178" type="image/webp"/><description>&lt;p&gt;&lt;code&gt;InformadoRSS&lt;/code&gt; és un servei lleuger i self-hosted que vigila feeds RSS i Atom, filtra els seus elements per ruta i els lliura a canals de Discord o a &lt;a class="link" href="https://ntfy.sh/" target="_blank" rel="noopener"&#10; &gt;ntfy&lt;/a&gt;. Funciona en un únic contenidor: un binari en C# amb .NET 10 compilat amb NativeAOT que serveix una interfície web en Vue 3 i ho guarda tot a SQLite. Només parla amb Discord a través de l&amp;rsquo;API REST del bot (sense gateway ni comandes). És de codi obert amb llicència MIT.&lt;/p&gt;&#10;&lt;p&gt;Característiques principals:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Feeds i rutes&lt;/strong&gt;: Un feed és una URL; cada feed té rutes amb un filtre, un o diversos destins (Discord o ntfy) i una plantilla de missatge.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Constructor de filtres i editor de plantilles&lt;/strong&gt;: Crea els filtres i edita els missatges des de la interfície web en lloc d&amp;rsquo;escriure&amp;rsquo;ls a mà.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Selector de servidor i canal de Discord&lt;/strong&gt;: Tria els destins pel nom i comprova en quins canals no pot publicar el bot.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Alertes&lt;/strong&gt;: Un avís quan un feed o un destí es trenca i un altre quan es recupera, per Discord o ntfy.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Còpies de seguretat diàries&lt;/strong&gt;: Còpies programades de la base de dades en una carpeta, conservant les més recents.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Importador de MonitoRSS&lt;/strong&gt;: Importa feeds i rutes des d&amp;rsquo;una exportació de MonitoRSS, amb simulació i un canal de proves per comparar els missatges abans de canviar.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Patró d&amp;rsquo;identitat per a feeds que reescriuen entrades&lt;/strong&gt;: Una expressió regular sobre la descripció que s&amp;rsquo;afegeix a l&amp;rsquo;id de l&amp;rsquo;element, així un canvi d&amp;rsquo;estat en una llista de MyAnimeList compta com a element nou.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Explico com i per què el vaig fer en &lt;a class="link" href="https://christt105.github.io/ca/blog/informadorss/" &gt;el post del blog&lt;/a&gt;. La imatge es publica a &lt;code&gt;ghcr.io/christt105/informadorss&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="L’editor de rutes: filtre, plantilla del missatge i canal de destí" class="gallery-image" data-flex-basis="252px" data-flex-grow="105" height="1994" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://christt105.github.io/projects/informadorss/web-route.webp" srcset="https://christt105.github.io/projects/informadorss/web-route_hu_a1005d249803043c.webp 800w, https://christt105.github.io/projects/informadorss/web-route_hu_458b51e51904d625.webp 1600w, https://christt105.github.io/projects/informadorss/web-route.webp 2100w" width="2100"&gt;&lt;/p&gt;&#10;</description></item></channel></rss>