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$ = "<pubDate>" THEN GOTO 570 450 IF T$ = "<description>" 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