# @name RSS Reader # @desc Powiadamia o nowym tytule z kanału RSS (Headless) # @author strusic # @headless true # @version 2.7 # @config url text "Adres RSS" default="https://www.rmf24.pl/fakty/feed" # @config icon text "Ikona" default="85" # @config speed number "Prędkość scroll" default=100 min=50 max=200 step=10 # @config repeat number "Ilość powtórzeń" default=2 min=1 max=5 # @config sound text "Dźwięk" default="doorbell" # @config every number "Interwał (min)" default=15 min=1 max=60 unit=min class RSSReader var url, icon_name, sound_name, period, speed, repeat var title var ticks, in_flight def init() self.url = store.get("url") self.icon_name = store.get("icon") self.sound_name = store.get("sound") self.speed = store.get("speed") self.repeat = store.get("repeat") self.period = store.get("every") * 60 self.title = store.get("title") if self.title == nil self.title = "" end self.ticks = 0 self.in_flight = false log("RSSReader zainicjalizowany dla: " + str(self.url)) end # Całkowicie natywna funkcja podmieniająca - bez split, tr czy replace def replace_string(s, old, new) var res = "" var i = 0 var old_len = size(old) var s_len = size(s) if old_len == 0 return s end # Skanujemy tekst szukając wycinka pasującego do "old" while i <= s_len - old_len if s[i .. i + old_len - 1] == old res += new i += old_len else res += s[i .. i] i += 1 end end # Doklejamy resztę, jeśli coś zostało while i < s_len res += s[i .. i] i += 1 end return res end def on_body(body, status) self.in_flight = false if body == nil log("RSSReader: Błąd pobierania danych, status: " + str(status)) return end var m = re.search("