annotate feeds.tcl @ 565:cd5dd38466cf

feeds: More refactoring.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 10 Jul 2020 01:22:55 +0300
parents f85b5c572292
children 4cd72a178cbf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
1 ##########################################################################
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 #
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
3 # FeedCheck v2.0 by Matti 'ccr' Hamalainen <ccr@tnsp.org>
523
89aaf279c12b feeds: Bump copyrights.
Matti Hamalainen <ccr@tnsp.org>
parents: 522
diff changeset
4 # (C) Copyright 2008-2020 Tecnic Software productions (TNSP)
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 #
265
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
6 # Requires fetch_feeds.tcl to be run as a cronjob, for example
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
7 # 15 * * * * /absolute/path/to/fetch_feeds.tcl
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 #
145
c94b4e1a2ed4 Rename some files, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
9 # See also create_feeds_db.tcl OR convert_feeds_db.tcl, as you will
c94b4e1a2ed4 Rename some files, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
10 # need to either create a SQLite3 database or convert old text flat
c94b4e1a2ed4 Rename some files, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
11 # file to SQLite3.
c94b4e1a2ed4 Rename some files, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
12 #
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 # This script is freely distributable under GNU GPL (version 2) license.
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 #
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
15 ##########################################################################
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16
265
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
17 ### The configuration should be in config.feeds in same directory
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
18 ### as this script. Or change the line below to point where ever
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
19 ### you wish. See "config.feeds.example" for an example config file.
908edc54005a feeds: Move configuration to separate file.
Matti Hamalainen <ccr@tnsp.org>
parents: 226
diff changeset
20 source [file dirname [info script]]/config.feeds
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21
422
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 393
diff changeset
22 ### Required utillib.tcl
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 393
diff changeset
23 source [file dirname [info script]]/utillib.tcl
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 393
diff changeset
24
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
26 ##########################################################################
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 # No need to look below this line
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
28 ##########################################################################
423
44c9128097cd feeds: Remember to require sqlite3 package.
Matti Hamalainen <ccr@tnsp.org>
parents: 422
diff changeset
29 package require sqlite3
44c9128097cd feeds: Remember to require sqlite3 package.
Matti Hamalainen <ccr@tnsp.org>
parents: 422
diff changeset
30
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 set feeds_name "FeedCheck"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
32 set feeds_message "$feeds_name v2.0 by ccr/TNSP"
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
35 # ------------------------------------------------------------------------
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
36 ### Utility functions
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 proc feeds_log {umsg} {
550
85fe3bc36307 Rename *_logmsg settings to *_log_enable.
Matti Hamalainen <ccr@tnsp.org>
parents: 549
diff changeset
38 global feeds_log_enable feeds_name
85fe3bc36307 Rename *_logmsg settings to *_log_enable.
Matti Hamalainen <ccr@tnsp.org>
parents: 549
diff changeset
39 if {$feeds_log_enable != 0} {
526
eb9921ae5c7a feeds: Add feeds_logmsg setting.
Matti Hamalainen <ccr@tnsp.org>
parents: 523
diff changeset
40 putlog "$feeds_name: $umsg"
eb9921ae5c7a feeds: Add feeds_logmsg setting.
Matti Hamalainen <ccr@tnsp.org>
parents: 523
diff changeset
41 }
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43
534
7512889f7b72 feeds: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 526
diff changeset
44
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
45 proc feeds_qm {uid} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
46 global feeds_messages
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
47
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
48 if {[info exists feeds_messages($uid)]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
49 return $feeds_messages($uid)
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
50 } else {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
51 return $uid
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
56 proc feeds_smsg {apublic anick achan amsg {aargs {}}} {
564
f85b5c572292 feeds: Add configuration setting feeds_cmd_name.
Matti Hamalainen <ccr@tnsp.org>
parents: 557
diff changeset
57 global feeds_preferredmsg feeds_cmd_name
f85b5c572292 feeds: Add configuration setting feeds_cmd_name.
Matti Hamalainen <ccr@tnsp.org>
parents: 557
diff changeset
58 set amsg [string map [list "@cmd@" $feeds_cmd_name] $amsg]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
59 utl_msg_args $feeds_preferredmsg $apublic $anick $achan $amsg $aargs
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
60 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
61
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
62
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
63 proc feeds_msg {apublic anick achan aid {aargs {}}} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
64 feeds_smsg $apublic $anick $achan [feeds_qm $aid] $aargs
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
65 }
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
66
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
67
70
15fc72bc3f3e More cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 53
diff changeset
68 # ------------------------------------------------------------------------
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
69 proc feeds_check_do {uforce upublic unick uchan} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
70 global feeds_dbfile feeds_dbh feeds_sync_limit feeds_channels
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
71
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
72 # Get old time, if it exists
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 set oldtime 0
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
74 if {![catch {set ufile [open "${feeds_dbfile}.time" r 0600]} uerrmsg]} {
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75 gets $ufile oldtime
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76 close $ufile
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77 } else {
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 feeds_log "Could not open timefile: $uerrmsg"
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
79 set oldtime [clock seconds]
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
80 }
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
81
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
82 # Check for new items
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
83 set usql "SELECT feed AS ufeed, title AS utitle, url AS uurl, utime AS utime FROM feeds WHERE utime > $oldtime ORDER BY utime ASC"
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
84 set nresult [feeds_dbh onecolumn "SELECT COUNT(*) FROM feeds WHERE utime > $oldtime"]
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
85
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
86 if {$nresult > $feeds_sync_limit} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
87 # Too many items, don't spam the channels
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
88 feeds_log "${nresult} new entries since [utl_ctime $oldtime], probably unsynchronized. Ignoring."
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
89 if {$uforce} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
90 feeds_msg $upublic $unick $uchan "chk_unsync_entries" [list $nresult [utl_ctime $oldtime]]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
91 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
92 } else {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
93 # Spam the channels with new items
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
94 feeds_log "${nresult} new entries since [utl_ctime $oldtime] .."
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
95 if {$uforce} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
96 feeds_msg $upublic $unick $uchan "chk_new_entries" [list $nresult [utl_ctime $oldtime]]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
97 }
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
98
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
99 feeds_dbh eval $usql {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
100 # Message all relevant channels
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
101 foreach {qchan ufilter} [array get feeds_channels] {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
102 foreach umatch [split $ufilter "|"] {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
103 if {[string match -nocase $umatch $ufeed]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
104 feeds_msg 1 "NULL" $qchan "chk_entry" [list $ufeed $utitle $uurl [utl_ctime $utime]]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
105 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
106 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
107 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
108 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
109 }
424
825cac46b1cb Cosmetic / stray trailing whitespace cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 423
diff changeset
110
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
111 if {$nresult > 0} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
112 if {![catch {set ufile [open "${feeds_dbfile}.time" w 0600]} uerrmsg]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
113 puts $ufile [clock seconds]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
114 close $ufile
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
115 }
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
116 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
117 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
118
534
7512889f7b72 feeds: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 526
diff changeset
119
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
120 proc feeds_exec {} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
121 global feeds_check_period feeds_running
424
825cac46b1cb Cosmetic / stray trailing whitespace cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 423
diff changeset
122
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
123 feeds_check_do 0 0 "NULL" "NULL"
141
c99df41a691a Work on making the feeds script use the SQLite3 backend.
Matti Hamalainen <ccr@tnsp.org>
parents: 114
diff changeset
124
144
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
125 set feeds_running [clock seconds]
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
126 timer $feeds_check_period feeds_exec
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
127 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
128
146
7106dd8db4de Improve entity parsing, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 145
diff changeset
129
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
130 proc feeds_validate_name {upublic unick uchan upattern ufeed} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
131 global feeds_dbh
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
132 upvar 1 $ufeed rfeed
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
133
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
134 # Check value
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
135 if {$upattern == ""} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
136 set ufeed ""
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
137 return 1
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
138 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
139
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
140 # Check if there are multiple matches
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
141 set usql "SELECT COUNT(DISTINCT(feed)) AS nfeeds,feed AS rfeed FROM feeds WHERE feed LIKE '%[utl_escape $upattern]%'"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
142 feeds_dbh eval $usql {}
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
143
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
144 if {$nfeeds > 1} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
145 feeds_msg $upublic $unick $uchan "multiple_matches" [list $upattern]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
146 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
147 } elseif {$nfeeds == 0} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
148 feeds_msg $upublic $unick $uchan "no_matches" [list $upattern]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
149 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
150 } else {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
151 return 1
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
152 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
153 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
154
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
155 # ------------------------------------------------------------------------
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
156 proc feeds_cmd {unick uhost uhand uchan uargs upublic} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
157 global feeds_dbh feeds_messages feeds_history_limit
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
158
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
159 # Check and handle arguments
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
160 set rarglist [::textutil::split::splitx $uargs {\s+}]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
161 set rcmd [lindex $rarglist 0]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
162 set rargs [lrange $rarglist 1 end]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
163
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
164 if {$rcmd == "?" || $rcmd == "help" || $rcmd == "apua"} {
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
165 foreach ukey $feeds_messages(help_full) {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
166 feeds_msg $upublic $unick $uchan $ukey
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
167 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
168 return 0
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
169 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
170
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
171 if {$rcmd == "last" || $rcmd == "latest" || $rcmd == "uusin"} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
172 # Show latest entry or latest entry of specified feed
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
173 set ufound 0
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
174 set utext [string tolower [join $rargs " "]]
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
175
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
176 # Validate feed name
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
177 set ufeed ""
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
178 if {![feeds_validate_name $upublic $unick $uchan $utext $ufeed]} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
179 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
180 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
181
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
182 set usql "SELECT url AS uurl, feed AS ufeed, title AS utitle, utime AS utime FROM feeds WHERE feed LIKE '%[utl_escape $utext]%' ORDER BY utime DESC LIMIT 1"
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
183 feeds_dbh eval $usql {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
184 feeds_msg $upublic $unick $uchan "search_latest_feed" [list $ufeed [utl_ctime $utime] $utitle $uurl]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
185 set ufound 1
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
186 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
187
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
188 if {$ufound == 0} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
189 feeds_msg $upublic $unick $uchan "search_no_matches" [list $utext]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
190 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
191 } elseif {[string match "forc*" $rcmd] || [string match "fet*" $rcmd]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
192 # Force check for new entries
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
193 if {![matchattr $uhand n]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
194 feeds_msg $upublic $unick $uchan "no_access"
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
195 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
196 feeds_check_do 1 $upublic $unick $uchan
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
197 } elseif {[string match "list*" $rcmd]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
198 # List feeds
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
199 set uarg [lindex $rargs 0]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
200
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
201 if {$uarg == "all" || $uarg == "long" || $uarg == "kaikki"} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
202 # Long list
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
203 set utext [string tolower [join [lrange $rargs 1 end] " "]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
204
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
205 if {$upublic} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
206 feeds_msg $upublic $unick $uchan "feed_list_long_denied" [list $rcmd $utext]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
207 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
208 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
209
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
210 set ulistitem [feeds_qm "feed_list_item_long"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
211 set ulistsep [feeds_qm "feed_list_sep_long"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
212
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
213 set usql "SELECT feed AS ufeed, MAX(utime) AS ulatest, MIN(utime) AS uoldest, COUNT(feed) AS nitems FROM feeds WHERE feed LIKE '%[utl_escape $utext]%' GROUP BY feed"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
214 set ulist {}
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
215
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
216 feeds_dbh eval $usql {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
217 lappend ulist [utl_str_map_values $ulistitem [list $ufeed [utl_ctime $ulatest] [utl_ctime $uoldest] $nitems]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
218 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
219
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
220 if {$utext != ""} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
221 feeds_msg $upublic $unick $uchan "feed_list_filter" [list $utext [join $ulist $ulistsep]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
222 } else {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
223 feeds_msg $upublic $unick $uchan "feed_list_all" [list [join $ulist $ulistsep]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
224 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
225 } elseif {$uarg != ""} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
226 # List feeds with a name filter
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
227 set utext [string tolower [join $rargs " "]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
228
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
229 set ulistitem [feeds_qm "feed_list_item_short"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
230 set ulistsep [feeds_qm "feed_list_sep_short"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
231
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
232 set usql "SELECT feed AS ufeed, MAX(utime) AS ulatest, MIN(utime) AS uoldest, COUNT(feed) AS nitems FROM feeds WHERE feed LIKE '%[utl_escape $utext]%' GROUP BY feed"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
233 set ulist {}
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
234
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
235 feeds_dbh eval $usql {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
236 lappend ulist [utl_str_map_values $ulistitem [list $ufeed [utl_ctime $ulatest] [utl_ctime $uoldest] $nitems]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
237 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
238
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
239 feeds_msg $upublic $unick $uchan "feed_list_filter" [list $utext [join $ulist $ulistsep]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
240 } else {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
241 # List any active feeds
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
242 set uold [expr [clock seconds] - 60*60*24*365]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
243
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
244 set ulistitem [feeds_qm "feed_list_item_short"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
245 set ulistsep [feeds_qm "feed_list_sep_short"]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
246
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
247 set usql "SELECT feed AS ufeed, MAX(utime) AS ulatest, MIN(utime) AS uoldest, COUNT(feed) AS nitems FROM feeds GROUP BY feed HAVING ulatest >= $uold"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
248 set ulist {}
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
249
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
250 feeds_dbh eval $usql {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
251 lappend ulist [utl_str_map_values $ulistitem [list $ufeed [utl_ctime $ulatest] [utl_ctime $uoldest] $nitems]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
252 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
253
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
254 feeds_msg $upublic $unick $uchan "feed_list_active" [list [utl_ctime $uold] [join $ulist $ulistsep]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
255 }
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
256
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
257 } elseif {[string match "hist*" $rcmd]} {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
258 # Show history of a feed
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
259 if {[llength $rarglist] < 2} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
260 feeds_msg $upublic $unick $uchan "help_history"
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
261 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
262 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
263
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
264 set utext [string tolower [join $rargs " "]]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
265 if {$upublic} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
266 feeds_msg $upublic $unick $uchan "feed_list_long_denied" [list $rcmd $utext]
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
267 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
268 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
269
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
270 # Validate feed name
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
271 if {![feeds_validate_name $upublic $unick $uchan $utext $ufeed]} {
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
272 return 0
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
273 }
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
274
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
275 set ulistitem [feeds_qm "history_list_item"]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
276 set ulistsep [feeds_qm "history_list_sep"]
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
277 set usql "SELECT url AS uurl, title AS utitle, utime FROM feeds WHERE feed='[utl_escape $ufeed]' ORDER BY utime DESC LIMIT ${feeds_history_limit}"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
278 set ulist {}
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
279
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
280 feeds_dbh eval $usql {
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
281 lappend ulist [utl_str_map_values $ulistitem [list $uurl $utitle [utl_ctime $utime]]]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
282 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
283
565
cd5dd38466cf feeds: More refactoring.
Matti Hamalainen <ccr@tnsp.org>
parents: 564
diff changeset
284 feeds_msg $upublic $unick $uchan "history_list" [list $ufeed [join $ulist $ulistsep]]
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
285 } else {
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
286 # Help/usage
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
287 feeds_msg $upublic $unick $uchan "help"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
288 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
289 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
290
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
291
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
292 #-------------------------------------------------------------------------
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
293 proc feeds_cmd_pub {unick uhost uhand uchan uargs} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
294 global feeds_channels
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
295
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
296 foreach {ukey uvalue} [array get feeds_channels] {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
297 if {[string match $ukey $uchan]} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
298 return [feeds_cmd $unick $uhost $uhand $uchan $uargs 1]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
299 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
300 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
301
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
302 return 1
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
303 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
304
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
305 proc feeds_cmd_msg {unick uhost uhand uargs} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
306 feeds_cmd $unick $uhost $uhand "PRIV" $uargs 0
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
307 return 1
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
308 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
309
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
310
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
311 #-------------------------------------------------------------------------
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
312 proc feeds_cmdm_split {uargs} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
313 set rarglist [::textutil::split::splitx $uargs {\s+}]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
314 return [join [lrange $rarglist 1 end] " "]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
315 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
316
551
77a8fab2062f feeds: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 550
diff changeset
317
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
318 proc feeds_cmd_pubm {unick uhost uhand uchan uargs} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
319 return [feeds_cmd_pub $unick $uhost $uhand $uchan [feeds_cmdm_split $uargs]]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
320 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
321
551
77a8fab2062f feeds: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 550
diff changeset
322
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
323 proc feeds_cmd_msgm {unick uhost uhand uargs} {
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
324 return [feeds_cmd_msg $unick $uhost $uhand [feeds_cmdm_split $uargs]]
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
325 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
326
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
327
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
328 #-------------------------------------------------------------------------
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
329 # Script initialization
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
330 #-------------------------------------------------------------------------
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
331 putlog "$feeds_message"
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
332
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
333 if {[catch {sqlite3 feeds_dbh $feeds_dbfile} uerrmsg]} {
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
334 putlog "Could not open SQLite3 database '${feeds_dbfile}': ${uerrmsg}"
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
335 exit 2
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
336 }
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
337
144
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
338 if {[info exists feeds_running]} {
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
339 set feeds_last [expr [clock seconds] - $feeds_running]
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
340 } else {
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
341 set feeds_last -1
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
342 }
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
343
Matti Hamalainen <ccr@tnsp.org>
parents: 143
diff changeset
344 if {$feeds_last < 0 || $feeds_last > [expr $feeds_check_period * 60]} {
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
345 putlog " - Starting timed feed check."
154
7a549487fba3 feeds: Cleanups, minor bugfix in feed update checking.
Matti Hamalainen <ccr@tnsp.org>
parents: 146
diff changeset
346 feeds_exec
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
347 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
348
549
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
349 putlog " - Executing feeds_init()"
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
350 feeds_init
c6f389bef58e feeds: Largely refactor feeds.tcl, bump version to 2.0.
Matti Hamalainen <ccr@tnsp.org>
parents: 534
diff changeset
351 putlog " - feeds_init() done."
557
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
352
0ce432c3f03f feeds: Rename some message ids, cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 552
diff changeset
353 # end of script