chiark / gitweb /
Add "celtic" as E
[ypp-sc-tools.db-live.git] / yoweb-scrape
index 49418a864399556752fa7a17ddbd9879f9385b44..840a6d913582b2aa6d32f783cecc756afce3bffb 100755 (executable)
@@ -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 '(.*)'\\.")