From c198fe165884d2b41f70e987af32ee3a50e653b7 Mon Sep 17 00:00:00 2001 From: Antti Ajanki Date: Fri, 1 Jun 2012 19:20:48 +0300 Subject: Support for the new Areena --- src/unittest/testwebvi.py | 60 ++++------ templates/areena.yle.fi/common.xsl | 13 +++ templates/areena.yle.fi/description.xsl | 42 ++++--- templates/areena.yle.fi/livebroadcasts.xsl | 38 +++--- templates/areena.yle.fi/livestream.xsl | 23 ---- templates/areena.yle.fi/mainmenu.xsl | 92 +++++++++++++-- templates/areena.yle.fi/navigation.xsl | 180 +++++++++++++++-------------- templates/areena.yle.fi/programlist.xsl | 22 ---- templates/areena.yle.fi/search.xsl | 111 ++++++++++++++---- templates/areena.yle.fi/video.xsl | 13 ++- templates/areena.yle.fi/videopage.xsl | 16 --- templates/bin/yle-dl | 2 +- 12 files changed, 351 insertions(+), 261 deletions(-) create mode 100644 templates/areena.yle.fi/common.xsl delete mode 100644 templates/areena.yle.fi/livestream.xsl delete mode 100644 templates/areena.yle.fi/programlist.xsl delete mode 100644 templates/areena.yle.fi/videopage.xsl diff --git a/src/unittest/testwebvi.py b/src/unittest/testwebvi.py index 2af3c16..8f9430d 100644 --- a/src/unittest/testwebvi.py +++ b/src/unittest/testwebvi.py @@ -251,64 +251,54 @@ class TestServiceModules(unittest.TestCase): ref = self.getServiceReference('../../templates/areena.yle.fi') links = self.downloadAndExtractLinks(ref, 3, 'category') - # The first is "Search", the second is "live", the third is - # "all", the rest are navigation links. - liveref = links[1].ref - navigationref = links[3].ref + # The first is "Search", the second is "all tv", the rest are + # navigation links. + navigationref = links[1].ref - # Navigation page links = self.downloadAndExtractLinks(navigationref, 2, 'navigation') - # Video link - videolink = links[0] - self.assertNotEqual(videolink.stream, None, 'No media object in a video link') - self.assertNotEqual(videolink.ref, None, 'No description page in a video link') - - # Direct video page link - queries, params = self.extractQueryParams(videolink.stream) - self.assertTrue('srcurl' in queries, 'Required parameter missing in video link') - videopageurl = queries['srcurl'] - videopageref = self.urlToWvtref(videopageurl) - self.checkMediaUrl(videopageref) + videolink = None + for link in links: + if link.stream is not None: + videolink = link + break - # live broadcasts - links = self.downloadAndExtractLinks(liveref, 2, 'live broadcasts') + self.assertNotEqual(videolink, None, 'No media links') + self.assertNotEqual(videolink.stream, None, 'No media object in video link') + self.assertNotEqual(videolink.ref, None, 'No description in video link') def testYLEAreenaSearch(self): - menuobj = self.downloadMenuPage('wvt:///areena.yle.fi/search.xsl?srcurl=http://areena.yle.fi/haku', 'search') - self.assertTrue(len(menuobj) >= 8, 'Too few items in search menu') + menuobj = self.downloadMenuPage('wvt:///areena.yle.fi/search.xsl', 'search') + self.assertTrue(len(menuobj) >= 9, 'Too few items in search menu') self.assertTrue(isinstance(menuobj[0], menu.MenuItemTextField)) self.assertTrue(isinstance(menuobj[1], menu.MenuItemList)) - self.assertTrue(len(menuobj[1].items) >= 3) self.assertTrue(isinstance(menuobj[2], menu.MenuItemList)) - self.assertTrue(len(menuobj[2].items) >= 2) self.assertTrue(isinstance(menuobj[3], menu.MenuItemList)) - self.assertTrue(len(menuobj[3].items) >= 2) self.assertTrue(isinstance(menuobj[4], menu.MenuItemList)) - self.assertTrue(len(menuobj[4].items) >= 3) self.assertTrue(isinstance(menuobj[5], menu.MenuItemList)) - self.assertTrue(len(menuobj[5].items) >= 4) self.assertTrue(isinstance(menuobj[6], menu.MenuItemList)) - self.assertTrue(len(menuobj[6].items) >= 2) - self.assertTrue(isinstance(menuobj[7], menu.MenuItemSubmitButton)) + self.assertTrue(isinstance(menuobj[7], menu.MenuItemList)) + self.assertTrue(isinstance(menuobj[8], menu.MenuItemSubmitButton)) # Query term menuobj[0].value = 'yle' # Media: video menuobj[1].current = 1 - # Category: all - menuobj[2].current = 0 - # Channel: all + # Order: alphabetical + menuobj[2].current = 1 + # Type: Episodes menuobj[3].current = 0 - # Language: Finnish - menuobj[4].current = 1 - # Uploaded: all + # Channel: all + menuobj[4].current = 0 + # Language: all menuobj[5].current = 0 - # Only outside Finland: no + # Subtitles: all menuobj[6].current = 0 + # Only outside Finland: no + menuobj[7].current = 0 - resultref = menuobj[7].activate() + resultref = menuobj[8].activate() self.assertNotEqual(resultref, None) self.downloadAndExtractLinks(resultref, 1, 'search result') diff --git a/templates/areena.yle.fi/common.xsl b/templates/areena.yle.fi/common.xsl new file mode 100644 index 0000000..5a5e88f --- /dev/null +++ b/templates/areena.yle.fi/common.xsl @@ -0,0 +1,13 @@ + + + + + + + + radio + tv + + + + diff --git a/templates/areena.yle.fi/description.xsl b/templates/areena.yle.fi/description.xsl index 7f16bc8..bb73095 100644 --- a/templates/areena.yle.fi/description.xsl +++ b/templates/areena.yle.fi/description.xsl @@ -1,35 +1,43 @@ + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:str="http://exslt.org/strings"> - + + + + + + + + + + - - <xsl:value-of select="normalize-space(//h1[@class='cliptitle'])"/> + <xsl:value-of select="normalize-space($title)"/> - + - - wvt:///areena.yle.fi/videopage.xsl?srcurl= + + wvt:///areena.yle.fi/video.xsl?param=title,&param=type,&param=id, diff --git a/templates/areena.yle.fi/livebroadcasts.xsl b/templates/areena.yle.fi/livebroadcasts.xsl index c29ad09..4ce91cd 100644 --- a/templates/areena.yle.fi/livebroadcasts.xsl +++ b/templates/areena.yle.fi/livebroadcasts.xsl @@ -1,30 +1,20 @@ + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:str="http://exslt.org/strings"> - - - - - - - wvt:///areena.yle.fi/livestream.xsl?param=stream, - - - - - + - - wvt:///areena.yle.fi/livestream.xsl?param=stream, + + wvt:///areena.yle.fi/description.xsl?srcurl=&param=title,&postprocess=json2xml + wvt:///areena.yle.fi/video.xsl?srcurl=&param=title,&param=type,&param=id, - - + @@ -32,14 +22,16 @@ Suorat lähetykset - - - + + - + + diff --git a/templates/areena.yle.fi/livestream.xsl b/templates/areena.yle.fi/livestream.xsl deleted file mode 100644 index b6d7ee2..0000000 --- a/templates/areena.yle.fi/livestream.xsl +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - livestream-<xsl:value-of select="$stream"/> - - - wvt:///bin/yle-dl?contenttype=video/x-flv&arg=http%3A//areena.yle.fi/player/index.php%3Fstream%3D%26language%3Dfi - - - - - - - - - - diff --git a/templates/areena.yle.fi/mainmenu.xsl b/templates/areena.yle.fi/mainmenu.xsl index e16ae0b..520d085 100644 --- a/templates/areena.yle.fi/mainmenu.xsl +++ b/templates/areena.yle.fi/mainmenu.xsl @@ -10,25 +10,97 @@ - wvt:///areena.yle.fi/search.xsl?srcurl=http://areena.yle.fi/haku + wvt:///areena.yle.fi/search.xsl + + + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/tv/kaikki.json%3Fkpl=100%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,TV-ohjelmat%20A-%C3%96&postprocess=json2xml + + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/tv/sarjat-ja-elokuvat/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Sarjat%20ja%20elokuvat&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/tv/viihde-ja-kulttuuri/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Viihde%20ja%20kulttuuri&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/tv/dokumentit-ja-fakta/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Dokumentit%20ja%20fakta&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/tv/uutiset/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Uutiset&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/tv/urheilu/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Urheilu&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/tv/lapset/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Lapset&postprocess=json2xml + + + - wvt:///areena.yle.fi/livebroadcasts.xsl?srcurl=http://areena.yle.fi/live + wvt:///areena.yle.fi/livebroadcasts.xsl?srcurl=http://areena.yle.fi/tv/suora.json&postprocess=json2xml + + + + - - wvt:///areena.yle.fi/programlist.xsl?srcurl=http://areena.yle.fi/ohjelmat + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/radio/kaikki.json%3Fkpl=100%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Radio-ohjelmat%20A-%C3%96&postprocess=json2xml - - - - - - + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/radio/musiikki-ja-viihde/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Musiikki%20ja%20viihde&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/radio/aanikirjat-ja-kuunnelmat/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,%C3%84%C3%A4nikirjat%20ja%20kuunnelmat&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/radio/fakta-ja-kulttuuri/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Kulttuuri&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/radio/uutiset/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Uutiset&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/radio/urheilu/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Urheilu&postprocess=json2xml + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=http://areena.yle.fi/radio/lapset/kaikki.json%3Fkpl=24%26jarjestys=ao%26sisalto=%26kanava=%26kieli=%26tekstitys=%26sivu=0&param=seriestitle,Lapset&postprocess=json2xml + diff --git a/templates/areena.yle.fi/navigation.xsl b/templates/areena.yle.fi/navigation.xsl index 7e3c4a3..3538a74 100644 --- a/templates/areena.yle.fi/navigation.xsl +++ b/templates/areena.yle.fi/navigation.xsl @@ -4,115 +4,119 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://exslt.org/strings"> - - + + + + + + - + + + + + + + + + + + - Extract the current page number from the URL (the number after - /sivu/) and adds links to previous and following pages. If the - page number is missing, it is assumed to be 1. + + - BUG: if the last page has 20 links, an extra "next" link is - generated - --> + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=&param=seriestitle,&param=preferseries,&postprocess=json2xml + + - + + + + + wvt:///areena.yle.fi/navigation.xsl?srcurl=&param=seriestitle,&param=preferseries,&postprocess=json2xml + + - - + + - - - - + + + + + + + + + + + + + + + + + + + + - - wvt:///areena.yle.fi/navigation.xsl?srcurl= - - - - - - wvt:///areena.yle.fi/navigation.xsl?srcurl= - - + + wvt:///areena.yle.fi/navigation.xsl?srcurl=&param=seriestitle,&param=preferseries,false&postprocess=json2xml + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - wvt:///areena.yle.fi/navigation.xsl?srcurl= - - - - - - + + + wvt:///areena.yle.fi/description.xsl?srcurl=&param=title,&postprocess=json2xml + wvt:///areena.yle.fi/video.xsl?srcurl=&param=title,&param=type,&param=id, + + - - - - - wvt:///areena.yle.fi/description.xsl?srcurl= - wvt:///areena.yle.fi/video.xsl?srcurl=&param=title, - - - - - - - - - <xsl:value-of select="$title"/> + <xsl:value-of select="$seriestitle"/> - + - - - - - - Hae Areenasta: Ei osumia - - - - - + + + + + diff --git a/templates/areena.yle.fi/programlist.xsl b/templates/areena.yle.fi/programlist.xsl deleted file mode 100644 index 58b3243..0000000 --- a/templates/areena.yle.fi/programlist.xsl +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - wvt:///areena.yle.fi/navigation.xsl?srcurl=&param=title, - - - - - - Ohjelmat A-Ö - - - - - - diff --git a/templates/areena.yle.fi/search.xsl b/templates/areena.yle.fi/search.xsl index 7508615..6ad0e1d 100644 --- a/templates/areena.yle.fi/search.xsl +++ b/templates/areena.yle.fi/search.xsl @@ -1,23 +1,6 @@ - - - - - - - - - - - - - - - - + @@ -27,17 +10,97 @@ - + + + TV & radio + TV + Radio + + + + + Paras osuma + A-Ö + Uusin + Vielä ehdit + + + + + Ohjelmat + Muut videot ja audiot + + + + + Kaikki + YLE TV1 + YLE TV2 + YLE Teema + YLE FST5 + YLE Radio Suomi + YleX + YLE Radio 1 + YLE Puhe + Radio Vega + Radio X3M + YLE Sámi Radio + Ylen klassinen + Etelä-Karjalan Radio + Etelä-Savon Radio + Kainuun Radio + Kymenlaakson Radio + Lahden Radio + Lapin Radio + Oulu Radio + Pohjanmaan Radio + Pohjois-Karjalan Radio + Radio Häme + Radio Itä-Uusimaa + Radio Keski-Pohjanmaa + Radio Keski-Suomi + Radio Perämeri + Radio Savo + Satakunnan Radio + Tampereen Radio + Turun Radio + Ylen aikainen + Ylen läntinen + Radio Vega Huvudstadsregionen + Radio Vega Västnyland + Radio Vega Åboland + Radio Vega Österbotten + Radio Vega Östnyland + + + + + Kaikki + Suomi + Ruotsi + Saami + Englanti + + + + + Ei rajausta + Suomi + Suomi (ohjelmatekstitys) + Ruotsi + Ruotsi (ohjelmatekstitys) + Saami + - - - Kaikki - Kyllä + + + Ei rajausta + Kyllä diff --git a/templates/areena.yle.fi/video.xsl b/templates/areena.yle.fi/video.xsl index efe3441..dba72fa 100644 --- a/templates/areena.yle.fi/video.xsl +++ b/templates/areena.yle.fi/video.xsl @@ -4,17 +4,26 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://exslt.org/strings"> + + - + + + + + + + + <xsl:value-of select="$streamtitle"/> - wvt:///bin/yle-dl?contenttype=video/x-flv&arg= + wvt:///bin/yle-dl?contenttype=video/x-flv&arg= diff --git a/templates/areena.yle.fi/videopage.xsl b/templates/areena.yle.fi/videopage.xsl deleted file mode 100644 index aac373a..0000000 --- a/templates/areena.yle.fi/videopage.xsl +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/templates/bin/yle-dl b/templates/bin/yle-dl index fdaf845..8950607 100755 --- a/templates/bin/yle-dl +++ b/templates/bin/yle-dl @@ -9,7 +9,7 @@ YLEDL=yle-dl which $YLEDL > /dev/null 2>&1 if [ $? != 0 ]; then echo "ERROR: $YLEDL is not on \$PATH" 1>&2 - echo "Install rtmpdump-yle from http://users.tkk.fi/~aajanki/rtmpdump-yle/index.html" 1>&2 + echo "Install yle-dl from https://github.com/aajanki/yle-dl" 1>&2 exit 1 fi -- cgit v1.2.3