10 REM LEGGIRSS by Paolo 'Neurox66' Borzini
20 REM Aprile/maggio 2020 V.1.0
30 REM legge i feed rss della pagine RAI Televideo 101
40 REM tramite GR8NET Cartridge
50 REM www.borzini.it
60 SCREEN 0:WIDTH 40:CLEAR 1000:KEY OFF
70 COLOR 10,0,0
80 GOSUB 850
90 DEF FN CENTRA$(X$)=SPACE$(20-LEN(X$)/2)+X$
100 REM AI per Tag AHREF se attivo.IT per Tag Title se 0 corrisponde al primo.II per tag Description
110 R$="":II=-1:IT=0:AI=0
120 CLS: PRINT "Caricando..."
130 B$="z":C$="": D$="": E$="":
140 ON ERROR GOTO 950
150 A$="http://www.servizitelevideo.rai.it/televideo/pub/rss101.xml"
160 REM Indirizzo della pagine Ultima Ora di Televideo
170 OPEN"HTTPA:A$" FOR INPUT AS #1
180 IF EOF(1) THEN CLOSE#1:GOTO 690
190 A$=INPUT$(1,1):
200 IF A$ = ">" AND AI=1 THEN AI=0:GOTO 180
210 IF ASC(A$) = 10 THEN PRINT:GOTO 180
220 IF A$ = "<" THEN T$=A$:GOTO 320
230 IF A$ = "]" THEN T$=A$:GOTO 320
240 IF ASC(A$)=194 OR ASC(A$)=195 THEN GOTO 530
250 IF ASC(A$)=32 AND ASC(B$)=32 THEN B$=A$:GOTO 180
260 IF II < 1 THEN R$ = R$ + A$ ELSE GOTO 300
270 B$= A$
280 GOTO 180
290 REM stampo solo se non siamo ancora nell header
300 IF IT > 0 AND AI = 0 THEN PRINT A$;:B$= A$
310 GOTO 180
320 REM leggi tag
330 A$=INPUT$(1,1)
340 T$=T$+A$
350 REM if A$ = ">" and AI=1 THEN AI=0:GOTO 150
360 IF A$ = "[" AND T$=" ">" THEN GOTO 330
400 REM identifico i tag, quelli che interessano; gli altri... pazienza
410 IF T$ = "" THEN R$="":GOTO 570
420 IF T$ = "" THEN CLS:R$="":GOTO 570
430 IF T$ = "" THEN GOTO 570
440 IF T$ = "" THEN GOTO 570
450 IF T$ = "" THEN II=II+1:LOCATE 0,4: GOTO 570
460 IF T$ = "" AND IT=0 THEN IT=IT+1:LOCATE 0,0:PRINT FN CENTRA$(R$):LOCATE 0,2:PRINT FN CENTRA$("APP BY Paolo'Neurox66'Borzini 2020(C)"):R$="":GOTO 570
470 IF T$ = "" AND IT>0 THEN LOCATE 0,2:PRINT FN CENTRA$(R$) :R$="":GOTO 570
480 IF T$ = "" THEN LOCATE 0,1:DI$=MID$(R$,1,3):GOSUB 750:PRINT FN CENTRA$(DI$ + MID$(R$,4)):R$="":GOTO 570
490 IF T$ = "" THEN R$="":II=0:GOTO 570
500 IF T$ = "" THEN GOTO 600
510 IF T$ = "" THEN R$="":GOTO 570
520 IF T$ = "" THEN AI=0:R$="":GOTO 570
530 REM leggi i caratteri Unicode
540 A$=INPUT$(1,1)
550 IF ASC(A$)>159 THEN VT = ASC(A$) - 160: A$=CHR$(V(VT)):GOTO 260
560 REM cancello coda
570 REM :PRINT T$0
580 A$="": T$=""
590 GOTO 180
600 K$=INKEY$
610 IF K$ <> "" THEN GOTO 600
620 LOCATE 0,21: PRINT FN CENTRA$("(R)icarica (P)rossima notizia (E)sci")
630 K$=INKEY$
640 IF K$="P" OR K$="p" THEN GOTO 570
650 IF K$="R" OR K$="r" THEN CLOSE #1:GOTO 110
660 IF K$="E" OR K$="e" THEN CLS:END
670 GOTO 630
680 REM Svuoto buffer inkey$
690 K$=INKEY$
695 IF K$ <> "" THEN GOTO 690
700 LOCATE 0,21: PRINT FN CENTRA$("Fine notizie!")
705 LOCATE 0,22: PRINT FN CENTRA$("(R)icarica (E)sci")
710 K$=INKEY$
720 IF K$="R" OR K$="r" THEN CLOSE #1:GOTO 110
730 IF K$="E" OR K$="e" THEN CLS:END
740 GOTO 710
750 REM Conversione giorni della settimana Inglese -> Italiano
760 IF DI$ = "Sun" THEN DI$="Dom":RETURN
770 IF DI$ = "Mon" THEN DI$="Lun":RETURN
780 IF DI$ = "Tue" THEN DI$="Mar":RETURN
790 IF DI$ = "Wed" THEN DI$="Mer":RETURN
800 IF DI$ = "Thu" THEN DI$="Gio":RETURN
810 IF DI$ = "Fri" THEN DI$="Ven":RETURN
820 IF DI$ = "Sat" THEN DI$="Sab":RETURN
830 REM
840 PRINT:PRINT DI$ :END
850 REM Init vettore di conversione caratteri UTF-8
860 REM per ridurre il numero di elementi nel vettore l'indice รจ il valore ASCII del carattere - 160 Vedi la riga 460
870 DIM V(25)
880 FOR I = 0 TO 25
890 READ VV: V(I) = VV
900 NEXT I
910 DATA 133,0,0,0,0,0,0,0,138,130,0,0,161,0,0,0,248,0,149,0,0,0,0,0,0,151
920 REM V(0)=133:V(8)=138:VA(9)=130:VA(12)=161:VA(18)=149:VA(25)=151
930 RETURN
940 REM Gestione errori/orrori
950 IF ERL=590 AND ERR=55 THEN A$=CHR$(&H1A):RESUME NEXT ELSE PRINT:PRINT "errore ";ERR;" alla linea "; ERL;" Contenuto variabili... P:"; P;" T$:";T$;" R$:";R$;" A$:";A$;" B$:";B$:END