source: trunk/Modules/TV/PageTV.pas

Last change on this file was 151, checked in by chronos, 5 months ago
File size: 4.3 KB
Line 
1unit PageTV;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, WebPage, HTTPServer, SqlDatabase, HtmlClasses,
7 Utils, ModuleUser;
8
9type
10
11 { TWebPageTV }
12
13 TWebPageTV = class(TWebPage)
14 procedure DataModuleProduce(HandlerData: THTTPHandlerData);
15 private
16 procedure HandleList(HandlerData: THTTPHandlerData);
17 procedure HandlePlaylist(HandlerData: THTTPHandlerData);
18 public
19 ModuleUser: TModuleUser;
20 end;
21
22var
23 WebPageTV: TWebPageTV;
24
25
26implementation
27
28{$R *.lfm}
29
30uses
31 Core, WebSession;
32
33{ TWebPageTV }
34
35procedure TWebPageTV.DataModuleProduce(HandlerData: THTTPHandlerData);
36var
37 PageName: string;
38begin
39 with TWebSession(HandlerData) do begin
40 if Request.Path.Count > 1 then PageName := Request.Path[1]
41 else PageName := '';
42 with HtmlDocument.Body do begin
43 if PageName = '' then PageName := 'list';
44 if PageName = 'list' then HandleList(HandlerData)
45 else if PageName = 'playlist' then HandlePlaylist(HandlerData);
46 end;
47 end;
48end;
49
50procedure TWebPageTV.HandleList(HandlerData: THTTPHandlerData);
51var
52 I: Integer;
53 DbRows: TDbRows;
54 TuneUp: string;
55begin
56 with TWebSession(HandlerData) do begin
57 ModuleUser.LoadUserInfo;
58 with HtmlDocument.Body, SubItems.AddString do begin
59 Text := 'Stažení přehrávače: <a href="http://www.videolan.org/vlc/">VLC Media Player</a><br/>' +
60 'Seznam všech kanálů do přehrávače: <a href="playlist/">Playlist</a><br/>' +
61 'Zobrazení playlistu ve VLC lze provést pomocí menu <strong>View - Playlist</strong> nebo klávesové zkratky CTRL+L<br/>' +
62 '<br/>' +
63 '<div align="center"><strong>Výpis kanálů:</strong><br>';
64 Text := Text + '<table class="WideTable">' +
65 '<tr><th>Název</th><th>Jazyk</th><th>Kategorie</th><th>Ladění</th></tr>';
66 try
67 DbRows := TDbRows.Create;
68 Database.Query(DbRows, 'SELECT * FROM `TV` WHERE (`Stream` <> "") OR (`StreamWeb` <> "") ORDER BY `Name` DESC');
69 for I := 0 to DbRows.Count - 1 do
70 with DbRows[I] do begin
71 TuneUp := '&nbsp;';
72 if Items['StreamWeb'] <> '' then
73 TuneUp := MakeLink('Naladit', Items['StreamWeb']);
74 if Items['Stream'] <> '' then
75 TuneUp := MakeLink('Naladit', NavigationLink('/tv/playlist?id=' + Items['ShortName']));
76 Text := Text + '<tr><td>' + MakeLink(Items['Name'], Items['Homepage']) +
77 '</td><td align="center">' +
78 Items['Language'] + '</td><td align="center">' + Items['Category'] + '</td>' +
79 '<td>' + TuneUp + '</td></tr>';
80 end;
81 Text := Text + '</table></div><br/>';
82
83 Text := Text + 'Originální informace o televizi: <a href="http://tv.hovnet.czf/">HovNet televize</a><br/>';
84 Text := Text + 'Další online TV na webu: <a href="http://spustit.cz">Spustit.cz</a><br/>';
85 Text := Text + 'Další online TV na webu: <a href="http://www.tvinfo.cz/live/televize/evropa/cz">TV info</a><br/>';
86
87 finally
88 DbRows.Free;
89 end;
90 Text := Text + '</table>';
91 end;
92 GeneratePage(Self);
93 end;
94end;
95
96procedure TWebPageTV.HandlePlaylist(HandlerData: THTTPHandlerData);
97var
98 DbRows: TDbRows;
99 I: Integer;
100 Text: string;
101 Id: string;
102begin
103 with TWebSession(HandlerData) do begin
104 Response.Headers.Add('Content-Type', 'audio/mpegurl');
105 Response.Headers.Add('Content-Disposition', 'attachment; filename=playlist.m3u');
106 try
107 DbRows := TDbRows.Create;
108
109 Text := '#EXTM3U' + LineEnding;
110 if Request.Query.TryGetValue('id', Id) then begin
111 Database.Select(DbRows, 'TV', '*', ' (`Stream` <> "") AND (`ShortName`="' + Database.EscapeString(Id) + '") ');
112 if DbRows.Count > 0 then begin
113 Text := Text + '#EXTINF:0,' + DbRows[0].Items['Name'] + LineEnding
114 + DbRows[0].Items['Stream'] + LineEnding;
115 end;
116 end else begin
117 Database.Select(DbRows, 'TV', '*', ' (`Stream` <> "") ORDER BY `Name` ');
118 for I := 0 to DbRows.Count - 1 do begin
119 Text := Text + '#EXTINF:0,' + DbRows[I].Items['Name'] + LineEnding
120 + DbRows[I].Items['Stream'] + LineEnding;
121 end;
122 end;
123 Response.Content.WriteString(Text);
124
125 finally
126 DbRows.Free;
127 end
128 end;
129end;
130
131end.
132
Note: See TracBrowser for help on using the repository browser.