X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-test.git;a=blobdiff_plain;f=yoweb-scrape;h=840a6d913582b2aa6d32f783cecc756afce3bffb;hp=49418a864399556752fa7a17ddbd9879f9385b44;hb=2479b4aaac4d6b34d3095ecfdf6cf0712bcccc53;hpb=cd71193a1415dd7e20e0157a23192455fb7ea3a5 diff --git a/yoweb-scrape b/yoweb-scrape index 49418a8..840a6d9 100755 --- a/yoweb-scrape +++ b/yoweb-scrape @@ -543,8 +543,7 @@ class ChatLogTracker: v['#lastinfo'] = timestamp self.force_redisplay() - def _onboard_event(self,v,timestamp,pirate,event, - jobber=None,timeout=None): + def _onboard_event(self,v,timestamp,pirate,event,jobber=None): pa = self._pl.get(pirate, None) if pa is not None and pa.v is v: pa.last_time = timestamp @@ -556,6 +555,9 @@ class ChatLogTracker: self._pl[pirate] = pa if v is not None: v[pirate] = pa pa.jobber = jobber + + if jobber is None: timeout = None + else: timeout = getattr(opts, 'timeout_'+jobber) if timeout is None: pa.expires = None else: pa.expires = timestamp + timeout self._vessel_updated(v, timestamp) @@ -722,8 +724,7 @@ class ChatLogTracker: return self._onboard_event( None, timestamp, pirate, ("jobber %s" % jobber), - jobber=jobber, - timeout=getattr(opts, 'timeout_'+jobber) + jobber=jobber ) def disembark(v, timestamp, pirate, event): @@ -784,15 +785,17 @@ class ChatLogTracker: (cmdr, metacmd) = m.groups() metacmd = regexp.sub('\\s+', ' ', metacmd).strip() m2 = regexp.match( - '/([ad]) (?:([A-Za-z* ]+)\\s*:)?([A-Za-z ]+)$', - metacmd) + '/([adj]) (?:([A-Za-z* ]+)\\s*:)?([A-Za-z ]+)$', + metacmd) if not m2: return chat(chan) (cmd, pattern, targets) = m2.groups() dml = ['cmd', chan, cmd] if cmd == 'a': each = self._onboard_event - else: each = disembark + elif cmd == 'd': each = disembark + else: each = lambda *l: self._onboard_event(*l, + **{'jobber':'applied'}) if cmdr == self._myself.name: dml.append('self') @@ -801,10 +804,16 @@ class ChatLogTracker: dml.append('other') how = 'cmd: %s %s' % (cmd,cmdr) - v = self._find_matching_vessel( - pattern, timestamp, cmdr, dml, create=True) + if cmd == 'j': + if pattern is not None: + return chat(chan) + v = None + else: + v = self._find_matching_vessel( + pattern, timestamp, cmdr, + dml, create=True) - if v is not None: + if cmd == 'j' or v is not None: targets = targets.strip().split(' ') dml.append(`len(targets)`) for target in targets: @@ -870,7 +879,7 @@ class ChatLogTracker: disembark(self._v, timestamp, pirate, 'left crew') return d('left crew') - m = rm('\w+ has applied for the posted job\.') + m = rm('(\w+) has applied for the posted job\.') if m: return jb(m.group(1), 'applied') pirate= rm_crew("(\\w+) has been invited to job for '(.*)'\\.")