diff options
author | Hugo Hörnquist <hugo@hornquist.se> | 2018-11-09 23:26:42 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@hornquist.se> | 2018-11-09 23:26:42 +0100 |
commit | ebb16d1dabedfdc3fc392b8c36f46a486ee3549f (patch) | |
tree | ded1669ddaeb7416526bfdd0659e5f1d15458e62 | |
download | texttv-ebb16d1dabedfdc3fc392b8c36f46a486ee3549f.tar.gz texttv-ebb16d1dabedfdc3fc392b8c36f46a486ee3549f.tar.xz |
Initial commit.t
-rw-r--r-- | 100-2.html | 25 | ||||
-rw-r--r-- | 100.html | 46 | ||||
-rw-r--r-- | Main.hs | 8 | ||||
-rw-r--r-- | parse.scm | 3 | ||||
-rwxr-xr-x | script.scm | 89 | ||||
-rwxr-xr-x | texttv.py | 24 | ||||
-rwxr-xr-x | wrapper.sh | 2 |
7 files changed, 197 insertions, 0 deletions
diff --git a/100-2.html b/100-2.html new file mode 100644 index 0000000..8871c2d --- /dev/null +++ b/100-2.html @@ -0,0 +1,25 @@ +<div class="root"><span class="toprow"> 100 SVT Text Fredag 09 nov 2018 + </span><span class="B bgB"> </span><span class="B bgB"> </span> + <span class="B bgB"> </span><span class="B bgB"> </span> + <span class="B bgB"> </span><span class="B bgB"> </span> + <span class="B bgB"> </span><span class="B bgB"> </span> + <span class="Y"> </span> + <h1 class="Y DH"> Ätstörningar bland ungdomar fördubblas</h1> + <span class="Y"> Allt fler i åldern 10-14 år söker vård</span> + <span class="Y"> <a href="/106">106</a></span><span class="Y"> </span> + <span class="C"> </span> + <span class="C"> Man död efter skjutning </span> + <span class="C"> i Uppsala i går kväll </span> + <span class="C"> <a href="/108">108</a> </span> + <span class="Y"> </span><span class="Y"> </span> + <h1 class="Y DH"> Kalifornien-stad förstörd i skogsbrand</h1> + <span class="Y"> Räddningstjänsten: Staden helt ödelagd</span> + <span class="Y"> <a href="/130">130</a></span><span class="Y"> </span> + <span class="C"> </span> + <span class="C"> Österrikisk överste spionmisstänkt <a href="/136">136</a></span> + + <span class='added-line'> </span> + <span class='added-line'> </span> + <span class='added-line'> </span> + <span class="B bgB DH"> </span><span class="B bgB DH"> </span><h1 class="Y bgB DH"> Inrikes <a href="/101">101</a> Utrikes <a href="/104">104</a> Innehåll <a href="/700">700</a></h1> + </div> diff --git a/100.html b/100.html new file mode 100644 index 0000000..defc465 --- /dev/null +++ b/100.html @@ -0,0 +1,46 @@ +<style> +.B { color: blue; } +.bgB { background-color: blue; } +.Y { color: yellow; } +.DH { font-weight: bold } +.C { color: cyan; } +.root { + white-space: pre; + font-family: monospace; + font-size: 12pt !important; + background-color: black; +} +h1 { + font-size: 12pt; + display: inline; +} +.toprow { + color: white; +} +</style> + +<div class="root"><span class="toprow"> 100 SVT Text Fredag 09 nov 2018 + </span><span class="B bgB"> </span><span class="B bgB"> </span> + <span class="B bgB"> </span><span class="B bgB"> </span> + <span class="B bgB"> </span><span class="B bgB"> </span> + <span class="B bgB"> </span><span class="B bgB"> </span> + <span class="Y"> </span> + <h1 class="Y DH"> Ätstörningar bland ungdomar fördubblas</h1> + <span class="Y"> Allt fler i åldern 10-14 år söker vård</span> + <span class="Y"> <a href="/106">106</a></span><span class="Y"> </span> + <span class="C"> </span> + <span class="C"> Man död efter skjutning </span> + <span class="C"> i Uppsala i går kväll </span> + <span class="C"> <a href="/108">108</a> </span> + <span class="Y"> </span><span class="Y"> </span> + <h1 class="Y DH"> Kalifornien-stad förstörd i skogsbrand</h1> + <span class="Y"> Räddningstjänsten: Staden helt ödelagd</span> + <span class="Y"> <a href="/130">130</a></span><span class="Y"> </span> + <span class="C"> </span> + <span class="C"> Österrikisk överste spionmisstänkt <a href="/136">136</a></span> + + <span class='added-line'> </span> + <span class='added-line'> </span> + <span class='added-line'> </span> + <span class="B bgB DH"> </span><span class="B bgB DH"> </span><h1 class="Y bgB DH"> Inrikes <a href="/101">101</a> Utrikes <a href="/104">104</a> Innehåll <a href="/700">700</a></h1> +</div> @@ -0,0 +1,8 @@ +import Text.ParserCombinators.Parsec + +docParser :: GenParser Char () Doc + +parseLine :: + +main :: IO () +main = putStrLn "HaHa" diff --git a/parse.scm b/parse.scm new file mode 100644 index 0000000..fa4a5b9 --- /dev/null +++ b/parse.scm @@ -0,0 +1,3 @@ +(use-modules (ice-9 rdelim)) + +(read-delimited '(#\< #\> #\" #\space)) diff --git a/script.scm b/script.scm new file mode 100755 index 0000000..c2027b1 --- /dev/null +++ b/script.scm @@ -0,0 +1,89 @@ +#!/usr/bin/guile \ +-e main -s +!# + +(use-modules (sxml simple) + (sxml match) + (ice-9 match) + (srfi srfi-1)) + +(define (setmode . args) + "Sets display mode" + (with-output-to-string + (lambda () + (for-each display + `(#\escape #\[ ,@args #\m))))) + + +(define* (deffunc name idx + #:optional (func-pre '#{}#) (mode-pre "")) + (let ((str (gensym))) + `(define (,(symbol-append func-pre name) . ,str) + (string-append + (setmode ,mode-pre ,idx) + #; (string #\escape #\[ #\K) + (string-concatenate ,str) + (setmode 0))))) + +(define-macro (create-modes modes) + `(begin + ,@(map deffunc + modes + (iota (length modes))))) + +(define-macro (create-colors modes) + `(begin + ,@(apply append + (map (lambda (itm idx) + (list (deffunc itm idx 'fg- "0;3") + (deffunc itm idx 'bg- "0;4"))) + modes + (iota (length modes)))))) + +(create-modes (off bold dim slant underline)) +(create-colors (black red green yellow blue purple cyan white)) + +(define classmap + (match-lambda ("B" fg-blue) + ("bgB" bg-blue) + ("Y" fg-yellow) + ("C" fg-cyan) + ("DH" bold) + (_ identity))) + +(define (class-handlers class-str) + (fold compose identity + (map classmap (string-split class-str #\space)))) + +(define (fmt-sub nodes) + (string-concatenate (map fmt-tag nodes))) + +(define (fmt-tag tag) + (sxml-match tag + [(a #; (@ (class ,class)) ,text) + (underline text)] + + [(h1 (@ (class ,class)) ,nodes ...) + ((class-handlers class) + (bold (fmt-sub nodes)))] + + [(span (@ (class ,class)) ,nodes ...) + ((class-handlers class) + (fmt-sub nodes))] + + [,str (guard (string? str)) str] + + [,default (format #f "[|~a|]" default)] + )) + +(define (parse-doc sxml) + (sxml-match sxml + [(*TOP* (div #; (span (@ (class "toprow")) ,top-row ...) + ,spans ...)) + spans + ])) + +(define (main args) + (define d (call-with-input-file "100-2.html" xml->sxml)) + (display (string-concatenate (map fmt-tag (parse-doc d)))) + (newline)) diff --git a/texttv.py b/texttv.py new file mode 100755 index 0000000..a6cf2b1 --- /dev/null +++ b/texttv.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python2 + +from httplib2 import Http +from urllib import urlencode +import json +import re +import sys + +def cleanhtml(raw_html): + cleanr = re.compile('<.*?>') + cleantext = re.sub(cleanr, '', raw_html) + return cleantext + +if len(sys.argv) > 1: + page = sys.argv[1] +else: + page = '100' + +http = Http() +url = 'http://api.texttv.nu/api/get/' + page + '?app=python' +headers = {'Accept': 'application/json', 'Accept-Language': 'en-US,en'} +response, content = http.request(url, 'GET', headers=headers) +data = json.loads(content) +print cleanhtml(data[0]['content'][0]) diff --git a/wrapper.sh b/wrapper.sh new file mode 100755 index 0000000..11d9236 --- /dev/null +++ b/wrapper.sh @@ -0,0 +1,2 @@ +curl http://api.texttv.nu/api/get/100?app=hugonikanor \ + | jq -j '.[0].content[0]' \ |