Check-in [7f2050ecba]
Overview
Comment: | Prepare for crontab mode |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
7f2050ecbab8314de04bf408bb741db5 |
User & Date: | mario on 2016-09-04 13:44:08 |
Other Links: | manifest | tags |
Context
2016-09-25
| ||
17:49 |
Generates a "common-repo.json" list from specified files in a fossil
repository. (Used with a glob param like "/repo.json/REPO/files/*.py" to
slice out interesting meta information.)
primary origin: http://fossil.include-once.org/fossil-skins/wiki/features check-in: 3f139e24c9 user: mario tags: trunk | |
2016-09-04
| ||
13:44 | Prepare for crontab mode check-in: 7f2050ecba user: mario tags: trunk | |
2016-08-24
| ||
01:22 | Stop vTuner page fetching depending on &iCurrPage=+1 presence. check-in: c49eb0e669 user: mario tags: trunk | |
Changes
Modified channels/timer.py from [fb89c13112] to [4716a4148b].
|
| | | | > | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # encoding: utf-8 # api: streamtuner2 # title: Recording timer # description: Schedules play/record events for bookmarked radio stations. # type: feature # category: hook # depends: kronos, action >= 1.1.1 # version: 0.7.5 # config: # { name: timer_duration, type: select, select: "auto|streamripper|fpls", value: none, description: "Support for time ranges" } # { name: timer_crontab, type: bool, value: 0, description: "Utilize cron instead of runtime scheduler. (not implemented yet)"} # priority: optional # support: basic # # Provides an internal timer, to configure recording and playback times/intervals # for stations. It accepts a natural language time string when registering a stream. # # Context menu > Extension > Add timer # # Programmed events are visible in "timer" under the "bookmarks" channel. Times # are stored in the description field, and can thus be edited. However, after editing # times manually, streamtuner2 must be restarted for any changes to take effect. # # Allowable time specifications are "Mon,Wed,Fri 18:00-20:00 record" # or even "Any 7:00-12:00 play". The duration is only honored for # recording via streamripper or fIcy/fPls currently. # from config import * from channels import * import bundle.kronos as kronos # unmaintend pkg, but py3-compatibilized version distributed within bundle/ from uikit import uikit import action import copy import re |
︙ | ︙ | |||
73 74 75 76 77 78 79 | # widgets uikit.add_signals(parent, { ("timer_ok", "clicked"): self.add_timer, ("timer_cancel", "clicked"): self.hide, ("timer_dialog", "close"): self.hide, ("timer_dialog", "delete-event"): self.hide, }) | | > > > > > > | | 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | # widgets uikit.add_signals(parent, { ("timer_ok", "clicked"): self.add_timer, ("timer_cancel", "clicked"): self.hide, ("timer_dialog", "close"): self.hide, ("timer_dialog", "delete-event"): self.hide, }) #-- crontab mode? # if "timer_crontab" in conf and conf.timer_crontab: # pass # elif "timer_crontab_dequeue" in conf: # pass #-- prepare scheduler self.sched = kronos.ThreadedScheduler() for row in self.streams: try: self.queue(row) except Exception as e: log.ERR("queuing error", e) self.sched.start() |
︙ | ︙ | |||
115 116 117 118 119 120 121 | def save_timer(self, row): self.streams.append(row) self.bookmarks.save() self.queue(row) pass | | | 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | def save_timer(self, row): self.streams.append(row) self.bookmarks.save() self.queue(row) pass # Add timer/recording events to scheduler (or later crontab) def queue(self, row): # chk if not row.get(self.timefield) or not row.get("url"): #log.DATA("NO TIME DATA", row) return |
︙ | ︙ | |||
178 179 180 181 182 183 184 | def play(self, row, *args, **kwargs): action.play( row = row, audioformat = row.get("format","audio/mpeg"), source = row.get("listformat","href") ) | | | 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | def play(self, row, *args, **kwargs): action.play( row = row, audioformat = row.get("format","audio/mpeg"), source = row.get("listformat","href") ) # kronos/sched callback: action wrapper def record(self, row, *args, **kwargs): log.TIMER("TIMED RECORD", *args) # extra params # make streamripper record a timed broadcast duration = self.duration(row.get(self.timefield)) append = None |
︙ | ︙ | |||
201 202 203 204 205 206 207 208 209 210 211 | action.record( row = row, audioformat = row.get("format","audio/mpeg"), source = row.get("listformat","href"), append = append, ) def test(self, row, *args, **kwargs): log.TEST("KRONOS", row) | > > > > > > > > > > > > | 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | action.record( row = row, audioformat = row.get("format","audio/mpeg"), source = row.get("listformat","href"), append = append, ) # kronos/sched callback for testing def test(self, row, *args, **kwargs): log.TEST("KRONOS", row) # crontab handlers def cron_queue(self, row): pass # crontab cleanup """ All streamtuner2 events will be preceded with a `# streamtuner2: …` comment """ def cron_dequeue_all(self): pass |