{"id":115,"date":"2006-03-18T21:33:55","date_gmt":"2006-03-18T19:33:55","guid":{"rendered":"https:\/\/brakkee.org\/site\/index.php\/2006\/03\/18\/automatically-recording-programs-with-the-kiss-dp-558\/"},"modified":"2006-03-18T21:33:55","modified_gmt":"2006-03-18T19:33:55","slug":"automatically-recording-programs-with-the-kiss-dp-558","status":"publish","type":"post","link":"https:\/\/brakkee.org\/site\/2006\/03\/18\/automatically-recording-programs-with-the-kiss-dp-558\/","title":{"rendered":"Automatically recording programs with the KiSS DP-558"},"content":{"rendered":"<p><!--more--><br \/>Last year, I bought a DP-558 KiSS hard disk recorder. One cool feature the player has is the ability to schedule recordings<br \/>\nthrough an Electronic Programme Guide (EPG) on the internet. This is<br \/>\nvery simple, using your own userid you log on to the site browse for<br \/>\ninteresting programs and record them. The hard disk recorder, which is<br \/>\nconnected to the internet regularly polls a KiSS server to find out about which<br \/>\nrecordings have been scheduled. This is possible since the hardware id<br \/>\nof the KiSS player is linked to your user id. Now this is cool but<br \/>\nwouldn&#8217;t it be even more cool to automatically record certain shows<br \/>\nwhen they appear and to send notifications by mail about possibly<br \/>\ninteresting programs? <\/p>\n<p>This is how I came up with the idea to crawl the KiSS EPG site for<br \/>\nprogramme information and autmatically record interesting programs.<br \/>\nEvery day at a very early time (e.g. 5 AM) it crawls the site for<br \/>\ninteresting shows. To implement the crawling I developed a very simple<br \/>\nweb crawling framework. The framework defines the concepts of Page and<br \/>\nAction. A Page is basically an HTML page transformed into an XML<br \/>\ncontent model of the page. An action is basically a hyperlink with a<br \/>\nuser friendly (content based) name. To implement crawling a program<br \/>\nmust be written that performs the necessary navigation using pages and<br \/>\nactions, extracting the content as it progresses. <\/p>\n<p>The framework creates Page objects by first tidying up the HTML page into XHTML (using jtidy)<br \/>\nand afterwards providing the interpretation of the HTML (=content +<br \/>\npresentation) as content only in XML. The framework determines which<br \/>\nXSLT to use based on configuration based on page type or URL. If the<br \/>\naction in the transformed page contains a page type, then that is used<br \/>\nto determine the XSLT. Otherwise, a URL match determines which XSLT to<br \/>\nuse.<\/p>\n<p>The KiSS crawler is just an application of this simple web crawling<br \/>\nframework. It consists of XSLT transformations, a program for<br \/>\nnavigating the KiSS site, configuration of the basic crawler, and a<br \/>\nconfiguration at application level defining which programs should be<br \/>\nrecorded and for which programs a notification should be sent. The<br \/>\ncrawler works like a charm. It retrieves detailed program information<br \/>\nincluding time, title, description, and categorization and sends a<br \/>\ndetailed notification afterwards. The source code will be made open<br \/>\nsource under the wamblee.org flag. In fact it can be accessed already<br \/>\nusing the subversion URL https:\/\/wamblee.org\/svn\/public\/utils. <\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/posts\/115"}],"collection":[{"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/comments?post=115"}],"version-history":[{"count":0,"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/posts\/115\/revisions"}],"wp:attachment":[{"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/media?parent=115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/categories?post=115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brakkee.org\/site\/wp-json\/wp\/v2\/tags?post=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}