Hent tekst tv til harddisk.
Jeg har strikket noget csharp kode sammen, der kan hente tekst tv ned på min harddisk.Men der er problemer.
Jeg har prøvet noget forskelligt.
Jeg åbner tekst tv med linket:
http://www.dr.dk/drdk/moduler/ttv.aspx?ttvPage=100&kanal=1&type=v
Så taster jeg side 131 ind, og trykker retur.
Så kommer side 131 frem.
Linket er stadig:
http://www.dr.dk/drdk/moduler/ttv.aspx?ttvPage=100&kanal=1&type=v
Det er vistnok skrevet i javascript.
Jeg kender ikke det sprog, det minder om hieroglyffer.
Nu vil jeg gerne have hentet side 132 ned på harddisk.
Jeg holder musen hen over 'frem', vælger kopier genvej, indsætter linket i browserens adresselinie, så kommer teksten frem.
Hvis man derefter vælger 'vis kilde', så står der et sted:
<a href="/fttvimg/DR1/132_0001.map"><IMG BORDER="0" WIDTH="320" HEIGHT="375" SRC="/fttvimg/DR1/132_0001-243.gif" ISMAP USEMAP="#ttv"></a>
Linien med SRC="/fttvimg/DR1/132_0001-243.gif", det er teksten.
Efter som det er en gif, så burde man kunne downloade den.
Så kører jeg denne kode:
// Hent fra DR1.
WebClient henter = new WebClient();
string sti_fra = "http://www.dr.dk/fttvimg/DR1/132_0001-243.gif" ;
string sti_til = @"C:\tekst-tv\tekst 2012-03-04\132";
henter.DownloadFile(sti_fra, sti_til);
Så henter programmet noget, og anbringer det i en mappe.
Så langt så godt.
Filen i mappen hedder '132', for det har vi selv valgt.
Så bliver det lidt mystisk.
Hvis jeg åbner min browser, og skriver adressen "C:\tekst-tv\tekst 2012-03-04\132" og retur, så kommer teksten frem.
Hvis jeg går ind i stifinder, omdøber filen til 132.html og dobbeltklikker, så kommer teksten frem i ca. 2 sekunder, derefter blinker skærmen og så står der kode over det hele.
Jeg synes selv det er meget indviklet.
Jeg har to spørgsmål.
Når csharp programmet danner en fil, dvs filen med navnet 132, har den så hentet gif'en, eller har den hentet et link til giffen?
Hvilken kommando i csharp, kan åbne filen 132, så teksten bliver stående på skærmen?
Nedenfor har jeg angivet hele koden.
MVH
Bjarne
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Printing;
namespace WindowsFormsApplication1
{
public partial class tekst_tv_henter : Form
{
public tekst_tv_henter()
{
InitializeComponent();
}
// Erklær en tekst-skriver og sæt den til at pege på logbogen.
TextWriter skriv = new StreamWriter("logbog.txt");
// Denne tegnstreng indeholder dags dato.
string dags_dato;
private void tekst_tv_henter_Load(object sender, EventArgs e)
{
skriv.WriteLine(" Programmet 'Hent tekst tv' er startet.");
skriv.WriteLine(" ");
// Anbring dags dato i en tegnstreng.
DateTime now = DateTime.Now;
dags_dato = now.ToString("yyyy-MM-dd");
skriv.WriteLine(" Dagens dato er: " + dags_dato);
skriv.WriteLine(" ");
// Hent fra DR1.
WebClient henter = new WebClient();
string sti_fra = "http://www.dr.dk/fttvimg/DR1/132_0001-243.gif";
string sti_til = @"C:\tekst-tv\tekst 2012-03-04\132";
henter.DownloadFile(sti_fra, sti_til);
// Formen lukkes.
skriv.WriteLine(" Programmet 'Hent tekst tv' er afsluttet.");
// close the stream
skriv.Close();
}
}
}