All pastes #934025 Raw Edit

mine

public text v1 · immutable
·published 2008-03-08 16:19 UTC
rendered paste body
Modify for your own purposes.

menu menubar {
  RSS News Feed
  .VCD
  ..$submenu($RSSparsemenu($1, VCD))
  .-
  .Retrieve headlines: retrieveHeadlines
}

alias -l retrieveHeadlines {
  getRSSfeed VCD www.vcdquality.com/lastx.php?type=4&num=10&genre=1
}

on *:connect:{ retrieveHeadlines }
alias RSSparsemenu {
  if (e isin $1) return
  if ($1 < 2) return :
  var %str = $hget(RSS_ $+ $2, $1), $&
    %title = $wildtok(%str, title:*, 1, 1), $&
    %link = $wildtok(%str, link:*, 1, 1)
  %title = $gettok(%title, 2-, 58)
  %link = $gettok(%link, 2-, 58)
  return $replace(%title, :, -) :url -n %link
}
; /getRSSfeed <source> <url>
alias getRSSfeed {
  var %a, %b
  %a = $gettok($2, 1, 47)
  %b = $gettok($2, 2-, 47)
  sockopen %a %a 80
  sockmark %a RSS_ $+ $1 %b
  echo Connecting to %a
  if ($hget(RSS_ $+ $1)) hfree RSS_ $+ $1
}
on *:sockopen:*:{
  tokenize 32 $sock($sockname).mark
  if (RSS_* !iswm $1) { return }
  if ($sockerr) {
    echo Closed socket $sockname $sock($sockname).wsmsg
    return
  }
  echo Attempting to retrieve $2-
  sockwrite -n $sockname GET / $+ $2- HTTP/1.0 $+ $crlf $+ $crlf
  unset %rsspop
}
on *:sockread:*:{
  tokenize 32 $sock($sockname).mark
  if (RSS_* !iswm $1) { return }
  if ($sockerr > 0) return
  :nextread
  sockread %RSSread
  if ($sockbr == 0) return
  if (%RSSread == $null) %RSSread = -
  var %r = .*\<(title|link)\>(.*)\<\/(title|link)\>.*
  if ($regex(%RSSread, %r)) {
    set %rsspop $addtok(%rsspop, $regml(1) $+ : $+ $regml(2), 1)
    if ($numtok(%rsspop, 1) == 2) {
      hadd -m $1 $calc($hget($1, 0).item + 1) %rsspop
      .msg #absolute-chat %rsspop
      unset %rsspop

    }
  }
  goto nextread
}
on *:sockclose:*:{
  if ($sockerr) echo Closed socket $sockname ( $+ $sock($sockname).wsmsg $+ )
  else echo Closed socket $sockname
}


on *:TEXT:*:*:{
  if ($1 == !rss ) {
    /getRSSfeed VCD www.vcdquality.com/lastx.php?type=4&num=10&genre=1
  }
}