Jump to content

Alliterative Appellation

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by Alliterative Appellation

  1. This is a snippet you can use to format World Cup group fixtures and results in a simple text file. From this you can make your own results and schedule scripts to provide people with various pieces of World Cup related information. Start it off with /wcup_getData and, if successful, it will create wcup_data.txt which you can then extract information from in a comfortable manner.

     

    
    ; /wcup_getData
    ; Connects to the site and grabs the data.
    ; Only needs to be performed when a fixture changes, ie. when a match starts or ends.
    alias wcup_getData {
      if ($sock(wcup_getData)) sockclose wcup_getData
      sockopen wcup_getData fifa.com 80
      btrunc wcup_rawdata.txt 0
    }
    
    ; /wcup_cleanUp
    ; To stop the data retrieval process at any time.
    ; Cleans up such that you can immediately restart getData.
    alias wcup_cleanUp {
      sockclose wcup_getData
      if ($1) {
        echo -eagc info2 * Retrieval was successful. Now parsing the received data.
        wcup_parseData
      }
      .remove wcup_rawdata.txt
    }
    
    ; /wcup_parseData
    ; Formats the raw data so that it can be interpreted easily by another script.
    ; The file created is called wcup_data.txt and is backed up each time it's overwritten.
    ; Data is arranged as so:
    ;
    ; <match number> <ctime of match> <group> <venue> <country1> <country2> [score]
    ;
    ; Eg.
    ;
    ; 1276264800 A Johannesburg_-_JEP Argentina Nigeria 1:0
    ;
    ; Spaces are replaced by _
    
    alias wcup_parseData {
      if (!$isfile(wcup_rawdata.txt)) {
        echo -eagc info * Error finding wcup_rawdata.txt. Use /wcup_getData and try again.
        return
      }
      if (!$isdir(wcup_backup)) .mkdir wcup_backup
      .copy -o wcup_data.txt "wcup_backup\ $+ $time(dd-mm HHnn) backup.txt"
      btrunc wcup_data.txt 0
      bread wcup_rawdata.txt 0 $file(wcup_rawdata.txt) &wcup
      var %pos = 1, %group
      while ($bfind(&wcup,%pos,<table summary="Group)) {
        %pos = $v1 + 22
        %group = $bvar(&wcup,%pos).text
        var %i = 6
        while (%i) {
          dec %i
          %pos = $bfind(&wcup,%pos,<td class="c mNum">)
          var %j = 6
          tokenize 32
          while (%j) {
            dec %j
            %pos = $bfind(&wcup,%pos,<)
            while ($bvar(&wcup,%pos) == 60) {
              %pos = $bfind(&wcup,%pos,>) + 1
              while ($bvar(&wcup,%pos) isin 13 10) inc %pos
            }
            tokenize 32 $1- $replace($bvar(&wcup,%pos,$calc($bfind(&wcup,%pos,<) - %pos)).text,$chr(32),_)
          }
          write wcup_data.txt $1 $calc($ctime($replace($2,_,/2010 0)) - 7200 - $timezone) %group $3-4 $6 $iif($5 < a,$5)
        }
      }
      filter -ctffu 1 32 wcup_data.txt wcup_data.txt
      echo -eagc info2 * Operation completed. wcup_data.txt created.
    }
    on *:sockopen:wcup_getData:{
      if ($sockerr) {
        echo -eagc info * Error opening socket.
        wcup_cleanUp
      }
      sockwrite -n wcup_getData GET /worldcup/matches/index.html HTTP/1.1
      sockwrite -n wcup_getData Host: www.fifa.com
      sockwrite -n wcup_getData
    }
    on *:sockread:wcup_getData:{
      if (!$sock(wcup_getData).rcvd) {
        var %wcup
        sockread %wcup
        if (& 200 * !iswm %wcup) {
          echo -agc info * Error with GET request.
          wcup_cleanUp
        }
        return
      }
      if ($sockerr) {
        echo -agc info * Error reading data.
        wcup_cleanUp
        return
      }
      sockread &wcup
      bwrite wcup_rawdata.txt -1 -1 &wcup
      if ($bfind(&wcup,1,matchschedule)) wcup_cleanUp 1
    }
    on *:sockclose:wcup_getData:{
      wcup_cleanUp
      echo -agc info * Server closed the connection. Contact me.
    }
    
×
×
  • Create New...