Bug#700205: pu: libquvi-scripts/0.4.15-1~deb7u1
Cyril Brulebois <kibi@debian.org> writes:
> Ansgar Burchardt <ansgar@debian.org> (09/05/2013):
>> Today upstream released 0.4.15 which includes fixes for various sites:
[...]
>> I uploaded it to unstable. Looking at wheezy can probably wait until it
>> migrated to testing.
>
> This seems to have happened. Should I be looking at the debdiff
> between wheezy and testing? (You'd just append a ~deb7u1 string
> in a new changelog entry, right?)
Yes, that's my plan. I have also prepared a slightly cleaned up version
of the diff (attached).
Ansgar
Original diffstat:
192 files changed, 3696 insertions(+), 1530 deletions(-)
Removed uninteresting files (autotools noise, version noise, tests):
44 files changed, 3146 insertions(+), 367 deletions(-)
About 1900 lines are ChangeLog/NEWS. One diff is wrong: shows rename for yfrog
which was actually removed and a new site added (but the code is similar).
diff --git a/ChangeLog b/ChangeLog
index 199338b..dbbc0ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1794 @@
+commit 780af01
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ Update NEWS for v0.4.15
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+NEWS
+
+commit 083e929
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ Bump version to 0.4.15
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+m4/version.m4
+
+commit b79c854
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Remove tnaflix.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/nsfw/tnaflix.json
+
+commit 5bf649c
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update videobash.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/videobash.json
+
+commit 16065b3
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Remove theonion_2.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/theonion_2.json
+
+commit cdfacbc
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update theonion.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/theonion.json
+
+commit 30549f7
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update imdb.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/imdb.json
+
+commit 8d276bd
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update funnyordie.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/funnyordie.json
+
+commit c175c51
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Remove soundcloud-2.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/soundcloud-2.json
+
+commit e6375be
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update soundcloud.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/soundcloud.json
+
+commit f21a6ee
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update gaskrank.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/gaskrank.json
+
+commit 3a54aca
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: shortened.t: Disable dai.ly test
+
+ HTTP/404. Need a new test if this service is still even usable.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/t/shortened.t
+
+commit e667492
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ Remove website/yfrog.lua
+
+ This is primarily an image host [?]. The website provides direct links
+ to media. Not really our cup of tea.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+share/lua/website/yfrog.lua
+tests/data/format/default/yfrog.json
+
+commit c0e5bc4
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Move golem.json to fixme/
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/fixme/golem.json
+tests/data/format/default/golem.json
+
+commit 51c69b2
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update clipfish.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/clipfish.json
+
+commit 2ede069
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update xvideos.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/nsfw/xvideos.json
+
+commit 8540984
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-09
+
+ tests: Update xnxx.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/nsfw/xnxx.json
+
+commit bb40acd
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-05
+
+ website/clipfish.lua: r.categories: Add proto_rtmp
+
+ The website now provides both HTTP and RTMP(E) media streams.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/clipfish.lua
+
+commit d98c460
+Merge: 8988585 fccb462
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-05
+
+ Merge branch 'tg/0.4__fix_101greatgoals.lua' into maint-0.4
+
+commit fccb462
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-05
+
+ tests: redirect.t: Add test for website/101greatgoals.lua
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/resolve/redirect_url_101greatgoals.json
+tests/t/redirect.t
+
+commit b9daced
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-05-05
+
+ FIX: website/101greatgoals.lua: embedded URL patterns
+
+ Improve the patterns used to parse the embedded media URLs. Do not
+ attempt to check for the known hosts; leave the determination for
+ libquvi(-scripts) to do.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/101greatgoals.lua
+
+commit 8988585
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ FIX: tests: redirect.t: Update shortened URL
+
+ The shortened URL points to an old test URL; update the test to use the
+ one in default/vimeo.json.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/t/redirect.t
+
+commit 0ad0cb5
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ tests: redirect_url_tcmag.json: Update expected page_title
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/resolve/redirect_url_tcmag.json
+
+commit aa496bf
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ website/bikeradar.lua: Unmark as "FIXME"
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+
+commit a5fe1a2
+Merge: 4927bb9 d58ba50
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ Merge branch 'tg/0.4__fix_ted.lua' into maint-0.4
+
+commit d58ba50
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ tests: format/default: Add ted.json
+
+ Used to test the media hosted by ted.com
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/ted.json
+
+commit cc0c742
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ tests: resolve: Update redirect_url_ted.json
+
+ Used to test the content of ted.com that is being hosted elsewhere, e.g.
+ YouTube.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/resolve/redirect_url_ted.json
+
+commit 00f4301
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ FIX: website/ted.lua: Check for extern media
+
+ * Rewrite `Ted.is_external' func using a new embed URL pattern
+ * Revise `parse' function for minor style changes
+ * Update thumbnail_url pattern
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/ted.lua
+
+commit 4927bb9
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ FIX: tests: redirect.t: Add a missing comma
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/t/redirect.t
+
+commit 5398c2c
+Merge: 4969157 58e3174
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ Merge branch 'tg/0.4__fix_academicearth.lua' into maint-0.4
+
+commit 58e3174
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ tests: resolve: Update redirect_url_academicearth.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/resolve/redirect_url_academicearth.json
+
+commit cb19406
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ FIX: website/academicearth.lua: Look for YouTube embed URL
+
+ This website (exclusively?) now hosts the media at YouTube. Update the
+ embed media URL pattern.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/academicearth.lua
+
+commit 4969157
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ tests: redirect.t: Add a test for website/bikeradar.lua
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/t/redirect.t
+
+commit 9f92f12
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ tests: redirect.t: Comment out dorkly (collegehumor) test
+
+ website/collegehumor.lua is currently marked as "FIXME".
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/t/redirect.t
+
+commit 85253a3
+Merge: 1db81dc e0bc5a7
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ Merge branch 'tg/0.4__fix_bikeradar.lua' into maint-0.4
+
+commit e0bc5a7
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ tests: resolve/redirect_url_bikeradar.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/resolve/redirect_url_bikeradar.json
+
+commit 4d4cebf
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ tests: format/default: Remove bikeradar.json
+
+ Now that website/bikeradar.lua only sets only the `self.redirect_url',
+ this test has been made obsolete.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/fixme/bikeradar.json
+
+commit 4fe8db9
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-30
+
+ FIX: website/bikeradar.lua: Look for embedURL
+
+ Check page HTML for embedded URL, since bikeshed apparently uses YouTube
+ to host their media. Set `self.redirect_url' or croak.
+
+ * ident: Update media URL pattern
+ * parse: Set `self.redirect_url' only, do not parse anything else
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/bikeradar.lua
+
+commit 1db81dc
+Merge: 147ceaa bc33983
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-29
+
+ Merge branch 'tg/0.4__improve_website/spiegel.lua' into maint-0.4
+
+commit bc33983
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-29
+
+ tests: format/default: Update for website/spiegel.lua
+
+ * Update the old testcase
+ * Add another testcase
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/spiegel-1.json
+tests/data/format/default/spiegel.json
+
+commit c583258
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-29
+
+ FIX: website/spiegel.lua: choose_default
+
+ Choosing to use the "lowest quality" stream (3gp) as the 'default'
+ stream would cause HTTP/404 when the stream was accessed. Although this
+ stream is listed among those available ones, it appears to be missing
+ for most videos (if not all).
+
+ Spiegel.choose_default:
+ Return the first available stream as the new 'default' stream.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/spiegel.lua
+
+commit a345ae6
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-29
+
+ website/spiegel.lua: Parse thumbnail URL
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/spiegel.lua
+
+commit 1763969
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-29
+
+ website/spiegel.lua: Parse title from page instead
+
+ The page HTML gives us the complete media title.
+ * Remove the now obsolete `Spiegel.get_playlist' function
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/spiegel.lua
+
+commit 147ceaa
+Merge: 70a40d3 a612582
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-28
+
+ Merge branch 'tg/0.4__fix_guardian.lua' into maint-0.4
+
+commit a612582
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-28
+
+ tests: format/default: Update tests for guardian.lua
+
+ Update test cases:
+ * Use a more recent media URL (guardian.json)
+ * Keep the old media URL (guardian_old.json)
+ * Add one for audio (guardian_audio.json)
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/guardian.json
+tests/data/format/default/guardian_audio.json
+tests/data/format/default/guardian_audio2.json
+tests/data/format/default/guardian_old.json
+
+commit 2e73b5b
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-28
+
+ FIX: website/guardian.lua: all patterns
+
+ * Remove stream interation (only one appears to be available now)
+ * Parse all media properties from the media page
+ * Remove unused Guardian.* functions
+ * Improve thumbnail URL parsing
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/guardian.lua
+
+commit 70a40d3
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-16
+
+ gen-news.sh: Do not print commits with >1 one parent
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+gen-news.sh
+
+commit 23cb49e
+Merge: 1fbb469 973ec5a
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-26
+
+ Merge branch 'tg/0.4__fix_website/sevenload.lua' into maint-0.4
+
+commit 973ec5a
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-26
+
+ tests: format/default: Update sevenload.json
+
+ * Move from "nlfy" to "regular"
+ * Update test case
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/nlfy/sevenload.json
+tests/data/format/default/sevenload.json
+
+commit 7ea5976
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-26
+
+ FIX: website/sevenload.lua: all patterns
+
+ * `ident': Use `handles' function of 'quvi/util'
+ * `parse': Update media {title,id,url} patterns
+ * `parse': Parse thumb url
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/sevenload.lua
+
+commit 1fbb469
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-23
+
+ FIX: website/gaskrank.lua: media stream URL pattern
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/gaskrank.lua
+
+commit 4d0fc7c
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-21
+
+ FIX: website/funnyordie.lua: media stream URL pattern
+
+ * Conform to the standard media property error messages
+ * Fix the pattern for the media stream URLs
+ * Update the pattern for the "quality" and the "container"
+ * Both FunnyOrDie.choose_{best,default} now return the first stream
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/funnyordie.lua
+
+commit 8edbe5c
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-21
+
+ website/golem.lua: Mark as "FIXME"
+
+ The config URL no longer works (HTTP/404).
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+
+commit bd6c931
+Merge: ef9a614 494dcde
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-15
+
+ Merge branch 'tg/maint-0.4__umark_arte_as_fixme' into maint-0.4
+
+commit 494dcde
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-15
+
+ website/arte.lua: Unmark as "FIXME"
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+
+commit bd7e323
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-15
+
+ expire.t: Re-enable and revise arte.lua test
+
+ Re-enable and revise the test for website/arte.lua:
+ * Parse all video URLs from the front page
+ * Pick one URL from the middle of the stack
+ (the first URL seems not to be available everytime: too recent?)
+
+ Keep pluzz.lua test commented out.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/t/expire.t
+
+commit ef9a614
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-04-02
+
+ FIX: xhamster.lua: title pattern
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/xhamster.lua
+
+commit aafc1ab
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-03-19
+
+ Bump version to 0.4.14
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+m4/version.m4
+
+commit 4caf5a1
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-03-19
+
+ Update NEWS for v0.4.14
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+NEWS
+
+commit 10cd3be
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-03-19
+
+ Change soundcloud test URL
+
+ Some of the content may be 'protected' in which case the server will
+ return HTTP/401 (unauthorized) when the stream URL is being accessed.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/soundcloud.json
+
+commit e7e882e
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-03-08
+
+ share/Makefile.am: Add wimp.lua
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+
+commit b394bc5
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-03-08
+
+ tests: default: add wimp.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/wimp.json
+
+commit 3639d67
+Author: Martin Herkt <lachs0r@srsfckn.biz>
+Date: 2013-03-08
+
+ Add website script for wimp.com
+
+ Signed-off-by: Martin Herkt <lachs0r@srsfckn.biz>
+
+share/lua/website/wimp.lua
+
+commit 0eff56e
+Author: Martin Herkt <lachs0r@srsfckn.biz>
+Date: 2013-03-08
+
+ website utils: add base64 decoder
+
+ Signed-off-by: Martin Herkt <lachs0r@srsfckn.biz>
+
+share/lua/website/quvi/util.lua
+
+commit 17d11a2
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-03-03
+
+ Bump version to 0.4.13
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+m4/version.m4
+
+commit adcbeb1
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-03-03
+
+ Update NEWS for v0.4.13
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+NEWS
+
+commit 85338c0
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-03-03
+
+ tests: default: Change xvideos test URL
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/nsfw/xvideos.json
+
+commit 7a9bdb1
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-16
+
+ Rename ard.lua to ardmediathek.lua
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+share/lua/website/ard.lua
+share/lua/website/ardmediathek.lua
+
+commit 64cab0d
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-16
+
+ FIX: ard.lua: Assign self.script_dir to package.path
+
+ Assign the value of the self.script_dir to the package.path so that
+ the 'quvi/*' modules can be found.
+
+ Reported-by: Fabian Homborg <fhomborg@gmail.com>
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/ard.lua
+
+commit 404ec2e
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ Update NEWS for v0.4.12
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+NEWS
+
+commit 9a2270e
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ Bump version to 0.4.12
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+m4/version.m4
+
+commit 1912cd7
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ Move mgnetwork.lua under FIXME
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+tests/data/format/default/fixme/mgnetwork.json
+tests/data/format/default/mgnetwork.json
+
+commit a49bce7
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ tests: default: xvideos.json: Update test URL
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/nsfw/xvideos.json
+
+commit e2d1f7f
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ Move fastjizz.lua under FIXME
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+tests/data/format/default/nsfw/fastjizz.json
+tests/data/format/default/nsfw/fixme/fastjizz.json
+
+commit 2b003f2
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ tests: default: videobash.json: Update page_title
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/videobash.json
+
+commit 509db79
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ tests: default: tvlux.json: Update
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/tvlux.json
+
+commit 85f1dea
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ FIX: tvlux.lua: Update patterns, parse thumb URL
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/tvlux.lua
+
+commit 65ea27d
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-10
+
+ soundcloud-2.json: Update test URL
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/soundcloud-2.json
+
+commit dab6469
+Author: Thomas Wei$(D)N(Bschuh <thomas@t-8ch.de>
+Date: 2013-02-08
+
+ ard.lua: cleanup
+
+ * remove superfluous fsk table from test_availability()
+ * s/films/videos/ in test_availability()
+ * move the call to test_availability() into iter_formats(), so it
+ gets always executed
+ * remove superfluous match in container_from()
+
+share/lua/website/ard.lua
+
+commit 1fb1128
+Merge: c0add2d f34b625
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-08
+
+ Merge branch 'tg/next/0.4__ard.lua_misc_improvements' into next
+
+commit f34b625
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-08
+
+ ard.lua: Ard.to_s: Use service internal stream ID
+
+ Since the service provides an ID (1,2,3,...), use it in
+ the media stream ID to make them unique. Otherwise we'll
+ end up with identical media stream IDs in some cases.
+
+ Use 'i' for the lack of a better prefix. This is similar to
+ that of youtube.lua (0.9) and the use of the "itag" value in
+ YouTube the media stream IDs.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/ard.lua
+
+commit 99b3722
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-08
+
+ ard.lua: Cleanup Ard.iter_formats
+
+ Realign, remove webX extraction which is now done in Ard.quality_from,
+ make the for loop more compact.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/ard.lua
+
+commit 7213e06
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-08
+
+ ard.lua: Add Ard.container_from function
+
+share/lua/website/ard.lua
+
+commit 08dff90
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-08
+
+ ard.lua: Add Ard.height_from function
+
+share/lua/website/ard.lua
+
+commit c41e5cc
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-08
+
+ ard.lua: Add Ard.quality_from function
+
+ Have the Ard.quality function return a string containing one of the
+ strings 'ld', 'md', 'sd', 'hd'. Other websites.
+
+ Plenty of guessing going on here, these strings are roughly based on
+ the findings posted here:
+ http://article.gmane.org/gmane.comp.web.flash.quvi/170
+
+ 0 = '256x144' -- ld
+ 1 = '512x288' -- md
+ 2 = '960x540' -- sd
+ 3 ='1280x720' -- hd
+
+share/lua/website/ard.lua
+
+commit f24c168
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-08
+
+ ard.lua: Rewrite Ard.to_s for 0.9 compatibility
+
+ The 0.9 series of libquvi-scripts will attempt to return the media
+ stream IDs as "$quality_$container_$encoding_$height(p)" whenever
+ possible. Prepare for the foreseeable future.
+
+share/lua/website/ard.lua
+
+commit c0add2d
+Author: Thomas Wei$(D)N(Bschuh <thomas@t-8ch.de>
+Date: 2012-10-14
+
+ Add ard.lua
+
+ This adds support for the 'ARD mediathek', the movie archive of the
+ primary national television broadcaster of Germany. It's mediathek also
+ servers videos from many smaller german broadcasters.
+
+ Note: films are only available online for two weeks after airing.
+ Certain films are only available at certain daytimes. In this case an
+ error is raised.
+
+ Signed-off-by: Thomas Wei$(D)N(Bschuh <thomas@t-8ch.de>
+ Tested-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+share/lua/website/ard.lua
+
+commit ef57874
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-07
+
+ FIX: wdrmaus.lua:101: invalid escape sequence
+
+ Fix the "wdrmaus.lua:101: invalid escape sequence near \/" by
+ removing the backslash.
+
+ Reported-by: Thomas Wei$(D)N(Bschuh <thomas@t-8ch.de>
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/wdrmaus.lua
+
+commit 0791d2d
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-01
+
+ Bump version to 0.4.11
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+m4/version.m4
+
+commit 5215745
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-02-01
+
+ Update NEWS for 0.4.11
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+NEWS
+
+commit c798621
+Merge: 7f171b0 d937de7
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ Merge branch 'tg/next/0.4_testrun_fixes' into next
+
+commit d937de7
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ Move pornhub.lua under FIXME
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+tests/data/format/default/nsfw/fixme/pornhub.json
+tests/data/format/default/nsfw/pornhub.json
+
+commit da6bd0b
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: lego.json: Update
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/lego.json
+
+commit bfb8a9c
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: funnyordie.json: Update
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/funnyordie.json
+
+commit fa63c11
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: Retire the "other" test category
+
+ Often cumbersome at best -- results varying each time with certain
+ hosts. It's time to retire this test category. Tests for "default"
+ format are sufficient.
+
+ Similar changes will be introduced in libquvi-scripts point-nine.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/other/cbsnews_best.json
+tests/data/format/other/cbsnews_m4v_1100k_480p.json
+tests/data/format/other/cbsnews_m4v_386k_216p.json
+tests/data/format/other/cbsnews_m4v_598k_360p.json
+tests/data/format/other/cbsnews_mp4_1100k_480p.json
+tests/data/format/other/cbsnews_mp4_500k_240p.json
+tests/data/format/other/fixme/blip_best.json
+tests/data/format/other/fixme/blip_m4v_blip_sd_360p.json
+tests/data/format/other/fixme/blip_mov_source_360p.json
+tests/data/format/other/fixme/blip_mp3_web.json
+tests/data/format/other/fixme/collegehumor_best.json
+tests/data/format/other/fixme/collegehumor_mp4_hq.json
+tests/data/format/other/fixme/collegehumor_mp4_sd.json
+tests/data/format/other/foxnews_best.json
+tests/data/format/other/foxnews_high.json
+tests/data/format/other/foxnews_low.json
+tests/data/format/other/foxnews_med.json
+tests/data/format/other/foxnews_med_low.json
+tests/data/format/other/funnyordie_best.json
+tests/data/format/other/funnyordie_mp4_ipad.json
+tests/data/format/other/funnyordie_mp4_wifi.json
+tests/data/format/other/golem_best.json
+tests/data/format/other/golem_m4v_ipod_360p.json
+tests/data/format/other/golem_mp4_high_540p.json
+tests/data/format/other/golem_mp4_medium_270p.json
+tests/data/format/other/ignore/length_bytes/dailymotion_best.json
+tests/data/format/other/ignore/length_bytes/dailymotion_mp4_384p.json
+tests/data/format/other/ignore/length_bytes/dailymotion_mp4_480p.json
+tests/data/format/other/ignore/length_bytes/dailymotion_mp4_720p.json
+tests/data/format/other/imdb_480p.json
+tests/data/format/other/imdb_720p.json
+tests/data/format/other/imdb_SD.json
+tests/data/format/other/imdb_best.json
+tests/data/format/other/mgnetwork_best.json
+tests/data/format/other/mgnetwork_mp4.json
+tests/data/format/other/mgnetwork_xflv.json
+tests/data/format/other/youtube_best.json
+tests/data/format/other/youtube_fmt05_240p.json
+tests/data/format/other/youtube_fmt18_360p.json
+tests/data/format/other/youtube_fmt22_720p.json
+tests/data/format/other/youtube_fmt34_360p.json
+tests/data/format/other/youtube_fmt35_480p.json
+tests/data/format/other/youtube_fmt37_1080p.json
+tests/data/format/other/youtube_fmt38_1536p.json
+
+commit ab25817
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: empflix.lua: Update test URL
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/nsfw/empflix.json
+
+commit f3bcb56
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: beeg.json: Update page_title
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/nsfw/beeg.json
+
+commit 282a309
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: spiegel.json: Update test URL
+
+ Replace the old test URL (HTTP/404).
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/spiegel.json
+
+commit b118e3c
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: audioboo.json: Remove properties
+
+ Remove the length_bytes, content_type and file_suffix properties so
+ that the test passes. This fixes nothing.
+
+ audioboo has gone amaz0nian. The media is accessed using HTTPS,
+ which causes libquvi 0.4 to skip the media stream "verification"
+ step. Even if enabled, sending of HTTP HEAD (through SSL tunnel)
+ results in HTTP/403 (Forbidden).
+
+ Possibly related:
+ https://forums.aws.amaz0n.com/message.jspa?messageID=378603
+ (replace '0' in 'amaz0n')
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/audioboo.json
+
+commit d4a8a12
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: metacafe.json: Update thumbnail_url
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/metacafe.json
+
+commit e1fc4d2
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: break.json: Add thumbnail_url value
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/break.json
+
+commit 569ab94
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ tests: default: theonion(_2).json: Update thumbnail_url
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/theonion.json
+tests/data/format/default/theonion_2.json
+
+commit be81501
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ beeg.lua: Update title pattern
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/beeg.lua
+
+commit 787be3d
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ FIX: lego.lua: All patterns
+
+ Modify the script to extract the media properties using new
+ patterns.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/lego.lua
+
+commit 4735455
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ FIX: metacafe.lua: Key parsing
+
+ Some of the patterns were outdated due to the changes made to the
+ website. Have the script extract the 'flashvars' value, unescape
+ it and then extract each individual value from this unescaped value.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/metacafe.lua
+
+commit 8d6ee06
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ FIX: theonion.lua: thumbnail URL pattern
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/theonion.lua
+
+commit 763338c
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-31
+
+ FIX: 1tvru.lua: title and media URL patterns
+
+ Only some of the (archived?) videos seem to work (now?).
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/1tvru.lua
+
+commit 7f171b0
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-19
+
+ tests: default: gaskrank.json: Add thumbnail_url property
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/gaskrank.json
+
+commit 1e15082
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-19
+
+ gaskrank.lua: Parse thumbnail URL
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/gaskrank.lua
+
+commit 8c067a5
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-19
+
+ FIX: gaskrank.lua: media stream URL pattern
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/gaskrank.lua
+
+commit 3096ff9
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-04
+
+ wdrmaus.lua: fail if required properties cannot be parsed
+
+ Fail with an error of the required media properties {title,id,url}
+ could not be parsed. Do not set self.default (unused). Cleanup code
+ for improved readability.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/wdrmaus.lua
+
+commit 9266abb
+Merge: 89d31bc 37704a6
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-03
+
+ Merge branch 'tg/next/0.4_add_wdrmaus' into next
+
+commit 37704a6
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-03
+
+ tests: Add default/wdrmaus_*.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/wdrmaus_es.json
+tests/data/format/default/wdrmaus_kbbs.json
+tests/data/format/default/wdrmaus_sg.json
+
+commit 03f4cce
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-03
+
+ wdrmaus.lua: fail if URL path patterns do not match
+
+ Have the script raise an error if none of the URL path patterns.
+ Otherwise the users will only get a cryptic error about missing
+ media property values.
+
+ Other:
+ * Set "fetch_type=config" for quvi.fetch(non-page_url) calls
+ * Replace if-elseif -block with a lookup table
+ * Trim a long line to fit 72 chars
+ * Remove an extra newline
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/wdrmaus.lua
+
+commit 86d1c64
+Author: Guido Leisker <guido@guido-leisker.de>
+Date: 2013-01-03
+
+ Add support for wdrmaus.de
+
+ Signed-off-by: Guido Leisker <guido@guido-leisker.de>
+ Tested-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+share/lua/website/wdrmaus.lua
+
+commit 89d31bc
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-02
+
+ FIX: gen-news.sh: Find the closest tagname
+
+ Replaces the buggy tagname extraction.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+gen-news.sh
+
+commit bbd6fd3
+Merge: 4d12ffd 0795470
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-02
+
+ Merge branch 'tg/next/0.4_add_myspass' into next
+
+commit 0795470
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2013-01-02
+
+ tests: Add default/myspass.json
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/myspass.json
+
+commit 2b79f18
+Author: Guido Leisker <guido@guido-leisker.de>
+Date: 2013-01-01
+
+ Add support for myspass.de
+
+ Signed-off-by: Guido Leisker <guido@guido-leisker.de>
+ Reviewed-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/Makefile.am
+share/lua/website/myspass.lua
+
+commit 4d12ffd
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-11-22
+
+ Bump version to 0.4.10
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+m4/version.m4
+
+commit b0e9f1d
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-11-22
+
+ Update NEWS for v0.4.10
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+NEWS
+
+commit e1d1731
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-11-21
+
+ tests: other/spiegel_*.json: Remove
+
+ Save some bandwidth. If one stream (the default) checks out OK
+ with this site, that's all we need.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/other/spiegel_best.json
+tests/data/format/other/spiegel_flv_vp6_388k_135p.json
+tests/data/format/other/spiegel_flv_vp6_576k_315p.json
+tests/data/format/other/spiegel_flv_vp6_64k_135p.json
+tests/data/format/other/spiegel_flv_vp6_928k_544p.json
+tests/data/format/other/spiegel_mp4_h264_1400k_544p.json
+
+commit 5fef6dc
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-11-21
+
+ tests: default/spiegel.json: Use a more recent test URL
+
+ The previously used test URL defaulted to media stream that is listed
+ in the returned XML data but appears to be missing (HTTP/404). The
+ XML does not seem to indicate the stream availability, either.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+tests/data/format/default/spiegel.json
+
+commit b182505
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-11-21
+
+ FIX: audioboo.lua: multiple patterns
+
+ Fix {title,id,thumbnail,stream} patterns. Parse from the
+ contents of the media URL instead of oembed which no longer
+ appears to provide the media stream URL.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/audioboo.lua
+
+commit bc35f74
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-11-21
+
+ FIX: dailymotion.lua: title pattern
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/dailymotion.lua
+
+commit 6357cd1
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-11-21
+
+ FIX: break.lua: multiple patterns
+
+ Fix {title,id,filepath,filehash} patterns. Add thumbnail_url.
+
+ Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
+
+share/lua/website/break.lua
+
+commit 3630a39
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ Bump version to 0.4.9
+
+m4/version.m4
+
+commit b0effb8
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ Update NEWS for 0.4.9
+
+NEWS
+
+commit 63024cb
+Merge: 5a9928a 57722d1
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ Merge branch 'tg/next/0.4_fixme_arte' into next
+
+commit 57722d1
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ expire.t: Skip all tests
+
+ Both pluzz.lua and arte.lua need to be fixed now.
+
+tests/t/expire.t
+
+commit e815821
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ website/arte.lua: Mark as FIXME
+
+share/Makefile.am
+
+commit 5a9928a
+Merge: 3bdcec9 6a7dada
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ Merge branch 'tg/next/0.4_fix_youjizz' into next
+
+commit 6a7dada
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ tests: nsfw/youjizz.json: Update for thumbnail_url
+
+tests/data/format/default/nsfw/youjizz.json
+
+commit ebc42da
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ FIX: website/youjizz.lua
+
+ Fix media {ID,media stream URL} parsing. Parse thumbnail URL.
+
+ Signed-off-by: anon
+
+share/lua/website/youjizz.lua
+
+commit 3bdcec9
+Merge: c623218 e6f6aa2
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ Merge branch 'tg/next/0.4_fixme_collegehumor' into next
+
+commit e6f6aa2
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ tests: {default,other}/collegehumor*.json: Mark as FIXME
+
+tests/data/format/default/collegehumor.json
+tests/data/format/default/fixme/collegehumor.json
+tests/data/format/other/collegehumor_best.json
+tests/data/format/other/collegehumor_mp4_hq.json
+tests/data/format/other/collegehumor_mp4_sd.json
+tests/data/format/other/fixme/collegehumor_best.json
+tests/data/format/other/fixme/collegehumor_mp4_hq.json
+tests/data/format/other/fixme/collegehumor_mp4_sd.json
+
+commit 4f65343
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-10-01
+
+ collegehumor.lua: Mark as FIXME
+
+share/Makefile.am
+
+commit c623218
+Merge: c681d03 dbd90b8
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Merge branch 'tg/next/0.4_anon_contrib_nsfw' into next
+
+commit dbd90b8
+Merge: 9696d55 7fb3790
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Merge branch 'tg/next/0.4_anon_contrib_nsfw__xnxx' into tg/next/0.4_anon_contrib_nsfw
+
+commit 7fb3790
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add tests:/nsfw/xnxx.json
+
+tests/data/format/default/nsfw/xnxx.json
+
+commit ac72d16
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add website/xnxx.lua (NSFW)
+
+ Signed-off-by: anon
+
+share/Makefile.am
+share/lua/website/xnxx.lua
+
+commit 9696d55
+Merge: ca7b0e2 1a800a3
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Merge branch 'tg/next/0.4_anon_contrib_nsfw__jizzhut' into tg/next/0.4_anon_contrib_nsfw
+
+commit 1a800a3
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add tests:/nsfw/jizzhut.json
+
+tests/data/format/default/nsfw/jizzhut.json
+
+commit d509b1b
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add website/jizzhut.lua (NSFW)
+
+ Signed-off-by: anon
+
+share/Makefile.am
+share/lua/website/jizzhut.lua
+
+commit ca7b0e2
+Merge: 6dd21a8 dc37f8a
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Merge branch 'tg/next/0.4_anon_contrib_nsfw__fastjizz' into tg/next/0.4_anon_contrib_nsfw
+
+commit dc37f8a
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add tests:/nsfw/fastjizz.json
+
+tests/data/format/default/nsfw/fastjizz.json
+
+commit 9f1ce8b
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add website/fastjizz.lua (NSFW)
+
+ Signed-off-by: anon
+
+share/Makefile.am
+share/lua/website/fastjizz.lua
+
+commit 6dd21a8
+Merge: 871b840 0d8a3ce
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Merge branch 'tg/next/0.4_anon_contrib_nsfw__deviantclip' into tg/next/0.4_anon_contrib_nsfw
+
+commit 0d8a3ce
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add tests:/nsfw/deviantclip.json
+
+tests/data/format/default/nsfw/deviantclip.json
+
+commit 1b12bc4
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add website/deviantclip.lua (NSFW)
+
+ Signed-off-by: anon
+
+share/Makefile.am
+share/lua/website/deviantclip.lua
+
+commit 871b840
+Merge: 9498be7 972fd55
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Merge branch 'tg/next/0.4_anon_contrib_nsfw__beeg' into tg/next/0.4_anon_contrib_nsfw
+
+commit 972fd55
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add tests:/nsfw/beeg.json
+
+tests/data/format/default/nsfw/beeg.json
+
+commit 5d7233f
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ Add website/beeg.lua (NSFW)
+
+ Signed-off-by: anon
+
+share/Makefile.am
+share/lua/website/beeg.lua
+
+commit 9498be7
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ website/keezmovies.lua: Detect encrypted streams
+
+ Check for encrypted streams. Move website/keezmovies.lua
+ from WITH_FIXME to WITH_NSFW.
+
+ Signed-off-by: anon
+
+share/Makefile.am
+share/lua/website/keezmovies.lua
+
+commit c681d03
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-27
+
+ FIX: Add quvi/html.lua to DIST_lua
+
+ Distribute libquvi-scripts with the quvi/html.lua file.
+
+share/Makefile.am
+
+commit 5b1c002
+Author: Martin Herkt <lachs0r@hong-mailing.de>
+Date: 2012-09-27
+
+ Fix youtube.lua
+
+ YouTube has added a new "signature" parameter to their playback URLs.
+ Append this parameter to the URL if url_encoded_fmt_stream_map contains
+ "sig".
+
+share/lua/website/youtube.lua
+
+commit ef333de
+Merge: e657f45 424f9f1
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-03
+
+ Merge branch 'tg/next/0.4_add_tapuz' into next
+
+commit 424f9f1
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-03
+
+ tests: format/default: Add tapuz.json
+
+tests/data/format/default/tapuz.json
+
+commit bc24554
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-09-03
+
+ website/tapuz.lua: Add tapuz flix support
+
+ ref: http://article.gmane.org/gmane.comp.web.flash.quvi/97
+
+share/Makefile.am
+share/lua/website/tapuz.lua
+
+commit e657f45
+Author: Toni Gundogdu <legatvs@gmail.com>
+Date: 2012-08-21
+
+ website/xvideos.lua: Improve title parsing (#109)
+
+ The page <title> could be a truncated version of a longer description
+ or a title. Grab the media title elsewhere.
+
+ exu: http://www.xvideos.com/video2389960
+ ref: http://sourceforge.net/apps/trac/quvi/ticket/109
+
+share/lua/website/xvideos.lua
+
commit 94ac387
Author: Toni Gundogdu <legatvs@gmail.com>
Date: 2012-08-19
diff --git a/NEWS b/NEWS
index 788554e..f8d6c2f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,109 @@
+v0.4.15 (2013-05-09) / Toni Gundogdu
+
+Toni Gundogdu:
+ - FIX: website/101greatgoals.lua: embedded URL patterns [b9daced]
+ - FIX: website/academicearth.lua: Look for YouTube embed URL [cb19406]
+ - FIX: website/bikeradar.lua: Look for embedURL [4fe8db9]
+ - FIX: website/funnyordie.lua: media stream URL pattern [4d0fc7c]
+ - FIX: website/gaskrank.lua: media stream URL pattern [1fbb469]
+ - FIX: website/guardian.lua: all patterns [2e73b5b]
+ - FIX: website/sevenload.lua: all patterns [7ea5976]
+ - FIX: website/spiegel.lua: choose_default [c583258]
+ - FIX: website/ted.lua: Check for extern media [00f4301]
+ - FIX: xhamster.lua: title pattern [ef9a614]
+ - Remove website/yfrog.lua [e667492]
+ - website/arte.lua: Unmark as "FIXME" [494dcde]
+ - website/bikeradar.lua: Unmark as "FIXME" [aa496bf]
+ - website/clipfish.lua: r.categories: Add proto_rtmp [bb40acd]
+ - website/golem.lua: Mark as "FIXME" [8edbe5c]
+ - website/spiegel.lua: Parse thumbnail URL [a345ae6]
+ - website/spiegel.lua: Parse title from page instead [1763969]
+
+ 48 files changed, 365 insertions(+), 501 deletions(-)
+
+
+v0.4.14 (2013-03-19) / Toni Gundogdu
+
+Martin Herkt:
+ - Add website script for wimp.com [3639d67]
+ - website utils: add base64 decoder [0eff56e]
+
+ 5 files changed, 118 insertions(+), 6 deletions(-)
+
+
+v0.4.13 (2013-03-03) / Toni Gundogdu
+
+Toni Gundogdu:
+ - FIX: ard.lua: Assign self.script_dir to package.path [64cab0d]
+ - Rename ard.lua to ardmediathek.lua [7a9bdb1]
+
+ 4 files changed, 174 insertions(+), 173 deletions(-)
+
+
+v0.4.12 (2013-02-10) / Toni Gundogdu
+
+Thomas Wei$(D)N(Bschuh:
+ - Add ard.lua [c0add2d]
+Toni Gundogdu:
+ - FIX: tvlux.lua: Update patterns, parse thumb URL [85f1dea]
+ - FIX: wdrmaus.lua:101: invalid escape sequence [ef57874]
+ - Move fastjizz.lua under FIXME [e2d1f7f]
+ - Move mgnetwork.lua under FIXME [1912cd7]
+
+ 13 files changed, 242 insertions(+), 65 deletions(-)
+
+
+v0.4.11 (2013-02-01) / Toni Gundogdu
+
+Guido Leisker:
+ - Add support for myspass.de [2b79f18]
+ - Add support for wdrmaus.de [86d1c64]
+Toni Gundogdu:
+ - beeg.lua: Update title pattern [be81501]
+ - FIX: 1tvru.lua: title and media URL patterns [763338c]
+ - FIX: gaskrank.lua: media stream URL pattern [8c067a5]
+ - FIX: gen-news.sh: Find the closest tagname [89d31bc]
+ - FIX: lego.lua: All patterns [787be3d]
+ - FIX: metacafe.lua: Key parsing [4735455]
+ - FIX: theonion.lua: thumbnail URL pattern [8d6ee06]
+ - gaskrank.lua: Parse thumbnail URL [1e15082]
+
+ 71 files changed, 398 insertions(+), 821 deletions(-)
+
+
+v0.4.10 (2012-11-22) / Toni Gundogdu
+
+Toni Gundogdu:
+ - FIX: audioboo.lua: multiple patterns [b182505]
+ - FIX: break.lua: multiple patterns [6357cd1]
+ - FIX: dailymotion.lua: title pattern [bc35f74]
+
+ 10 files changed, 28 insertions(+), 127 deletions(-)
+
+
+v0.4.9 (2012-10-01) / Toni Gundogdu
+
+anon:
+ - Add website/beeg.lua (NSFW) [5d7233f]
+ - Add website/deviantclip.lua (NSFW) [1b12bc4]
+ - Add website/fastjizz.lua (NSFW) [9f1ce8b]
+ - Add website/jizzhut.lua (NSFW) [d509b1b]
+ - Add website/xnxx.lua (NSFW) [ac72d16]
+ - FIX: website/youjizz.lua [ebc42da]
+ - website/keezmovies.lua: Detect encrypted streams [9498be7]
+Martin Herkt:
+ - FIX: youtube.lua [5b1c002] (aka. server response code 403 (conncode=0))
+Toni Gundogdu:
+ - FIX: Add quvi/html.lua to DIST_lua [c681d03]
+ - website/arte.lua: Mark as FIXME [e815821]
+ - website/collegehumor.lua: Mark as FIXME [4f65343]
+ - website/xvideos.lua: Improve title parsing (#109) [e657f45]
+Tzafrir Cohen:
+ - website/tapuz.lua: Add tapuz flix support [bc24554]
+
+ 27 files changed, 622 insertions(+), 86 deletions(-)
+
+
v0.4.8 (2012-08-21) / Toni Gundogdu
anon:
diff --git a/debian/changelog b/debian/changelog
index ae7d8bb..ecf838c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,46 @@
+libquvi-scripts (0.4.15-1) unstable; urgency=low
+
+ * New upstream release.
+ * Bumped Standards-Version to 3.9.4 (no changes).
+
+ -- Ansgar Burchardt <ansgar@debian.org> Thu, 09 May 2013 13:28:38 +0200
+
+libquvi-scripts (0.4.14-1) unstable; urgency=low
+
+ * New upstream release.
+ * debian/copyright: Update for new upstream release.
+
+ -- Ansgar Burchardt <ansgar@debian.org> Thu, 21 Mar 2013 07:46:53 +0100
+
+libquvi-scripts (0.4.13-1) experimental; urgency=low
+
+ * New upstream release.
+
+ -- Ansgar Burchardt <ansgar@debian.org> Tue, 05 Mar 2013 19:14:30 +0100
+
+libquvi-scripts (0.4.12-1) experimental; urgency=low
+
+ * New upstream release.
+ * debian/copyright: Update for new upstream release.
+
+ -- Ansgar Burchardt <ansgar@debian.org> Thu, 14 Feb 2013 23:02:39 +0100
+
+libquvi-scripts (0.4.11-1) experimental; urgency=low
+
+ * New upstream release.
+ * debian/copyright: Update for new upstream release.
+
+ -- Ansgar Burchardt <ansgar@debian.org> Sat, 09 Feb 2013 14:31:20 +0100
+
+libquvi-scripts (0.4.10-1) experimental; urgency=low
+
+ * New upstream release.
+ * Fix d/watch to allow xz|gz|bz2.
+ * Add new entry to d/copyright (share/lua/website/tapuz.lua).
+ * Remove d/patches. Upstream author include patch.
+
+ -- Alejandro Garrido Mota <garridomota@gmail.com> Sun, 16 Dec 2012 10:07:38 -0430
+
libquvi-scripts (0.4.8-3) unstable; urgency=low
* Backport upstream patch for new signature parameter on YouTube.
diff --git a/debian/control b/debian/control
index 0c167c4..99d3b01 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@ Priority: extra
Maintainer: Alejandro Garrido Mota <garridomota@gmail.com>
Uploaders: Ansgar Burchardt <ansgar@debian.org>
Build-Depends: debhelper (>= 8.1.3~), dh-autoreconf
-Standards-Version: 3.9.3
+Standards-Version: 3.9.4
Vcs-Git: git://github.com/mogaal/libquvi-scripts.git
Vcs-Browser: https://github.com/mogaal/libquvi-scripts
Homepage: http://quvi.sourceforge.net
diff --git a/debian/copyright b/debian/copyright
index 6b27778..60ad7d2 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -5,10 +5,14 @@ Upstream-Name: libquvi-scripts
Files: *
Copyright:
- 2009,2010,2011,2012 Toni Gundogdu <legatvs@gmail.com>
+ 2009-2013 Toni Gundogdu <legatvs@gmail.com>
2010,2011,2012 quvi project
License: LGPL-2.1+
+Files: share/lua/website/ard.lua
+Copyright: 2013, Thomas Wei$(D)N(Bschuh
+License: LGPL-2.1+
+
Files: share/lua/website/tagtele.lua
share/lua/website/keezmovies.lua
share/lua/website/xhamster.lua
@@ -49,6 +53,19 @@ Files: share/lua/website/lego.lua
Copyright: 2012, Ross Burton <ross@burtonini.com>
License: LGPL-2.1+
+Files: share/lua/website/myspass.lua
+ share/lua/website/wdrmaus.lua
+Copyright: 2013, Guido Leisker <guido@guido-leisker.de>
+License: LGPL-2.1+
+
+Files: share/lua/website/tapuz.lua
+Copyright: 2012, Tzafrir Cohen <tzafrir@cohens.org.il>
+License: LGPL-2.1+
+
+Files: share/lua/website/wimp.lua
+Copyright: 2013, Martin Herkt <lachs0r@srsfckn.bit>
+License: LGPL-2.1+
+
Files: debian/*
Copyright: 2011 Alejandro Garrido Mota <garridomota@gmail.com>
License: GPL-3+
diff --git a/debian/patches/688972-youtube.diff b/debian/patches/688972-youtube.diff
deleted file mode 100644
index 3c6945c..0000000
--- a/debian/patches/688972-youtube.diff
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5b1c00284e1bae3069b51d07d84d3a096ca6bfcf Mon Sep 17 00:00:00 2001
-From: Martin Herkt <lachs0r@hong-mailing.de>
-Date: Thu, 27 Sep 2012 13:45:27 +0200
-Subject: [PATCH] Fix youtube.lua
-Bug-Debian: http://bugs.debian.org/688972
-
-YouTube has added a new "signature" parameter to their playback URLs.
-Append this parameter to the URL if url_encoded_fmt_stream_map contains
-"sig".
----
- share/lua/website/youtube.lua | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/share/lua/website/youtube.lua b/share/lua/website/youtube.lua
-index e7fc60c..39cc31d 100644
---- a/share/lua/website/youtube.lua
-+++ b/share/lua/website/youtube.lua
-@@ -125,7 +125,11 @@ function YouTube.iter_formats(config, U)
- for f in fmt_stream_map:gmatch('([^,]*),') do
- local d = U.decode(f)
- if d['itag'] and d['url'] then
-- urls[U.unescape(d['itag'])] = U.unescape(d['url'])
-+ local uurl = U.unescape(d['url'])
-+ if d['sig'] then
-+ uurl = uurl .. "&signature=" .. U.unescape(d['sig'])
-+ end
-+ urls[U.unescape(d['itag'])] = uurl
- end
- end
-
---
-1.7.10.4
-
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 74b736b..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-688972-youtube.diff
diff --git a/debian/watch b/debian/watch
index 21f7f8d..6f04864 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,2 +1,2 @@
version=3
-http://sf.net/quvi/libquvi-scripts-(\d.*).tar.gz
+http://sf.net/quvi/libquvi-scripts-(.*).tar.(?:xz|gz|bz2)
diff --git a/share/Makefile.am b/share/Makefile.am
index a8d03cf..31ec9fc 100644
--- a/share/Makefile.am
+++ b/share/Makefile.am
@@ -9,32 +9,33 @@ DIST_lua=\
lua/website/README \
lua/website/quvi/bit.lua \
lua/website/quvi/const.lua \
+ lua/website/quvi/html.lua \
lua/website/quvi/url.lua \
lua/website/quvi/util.lua \
lua/website/101greatgoals.lua \
lua/website/1tvru.lua \
lua/website/academicearth.lua \
+ lua/website/ardmediathek.lua \
lua/website/arte.lua \
lua/website/audioboo.lua \
lua/website/bbc.lua \
+ lua/website/bikeradar.lua \
lua/website/break.lua \
lua/website/canalplus.lua \
lua/website/cbsnews.lua \
lua/website/charlierose.lua \
lua/website/clipfish.lua \
- lua/website/collegehumor.lua \
lua/website/dailymotion.lua \
lua/website/foxnews.lua \
lua/website/funnyordie.lua \
lua/website/gaskrank.lua \
- lua/website/golem.lua \
lua/website/guardian.lua \
lua/website/imdb.lua \
lua/website/justintv.lua \
lua/website/lego.lua \
lua/website/liveleak.lua \
- lua/website/mgnetwork.lua \
lua/website/metacafe.lua \
+ lua/website/myspass.lua \
lua/website/publicsenat.lua \
lua/website/sapo.lua \
lua/website/senat.lua \
@@ -42,6 +43,7 @@ DIST_lua=\
lua/website/soundcloud.lua \
lua/website/spiegel.lua \
lua/website/tagtele.lua \
+ lua/website/tapuz.lua \
lua/website/ted.lua \
lua/website/tvlux.lua \
lua/website/tvrain.lua \
@@ -50,35 +52,43 @@ DIST_lua=\
lua/website/videa.lua \
lua/website/videobash.lua \
lua/website/vimeo.lua \
- lua/website/yfrog.lua \
+ lua/website/wdrmaus.lua \
+ lua/website/wimp.lua \
lua/website/youtube.lua
if WITH_NSFW
DIST_lua+=\
+ lua/website/beeg.lua \
+ lua/website/deviantclip.lua \
lua/website/empflix.lua \
- lua/website/pornhub.lua \
+ lua/website/jizzhut.lua \
+ lua/website/keezmovies.lua \
lua/website/redtube.lua \
lua/website/spankwire.lua \
lua/website/tcmag.lua \
lua/website/tnaflix.lua \
lua/website/totallynsfw.lua \
lua/website/xhamster.lua \
+ lua/website/xnxx.lua \
lua/website/xvideos.lua \
lua/website/youjizz.lua
endif
if WITH_FIXME
DIST_lua+=\
- lua/website/bikeradar.lua \
lua/website/blip.lua \
lua/website/bloomberg.lua \
+ lua/website/collegehumor.lua \
lua/website/francetelevisions.lua \
lua/website/globo.lua \
+ lua/website/golem.lua \
+ lua/website/mgnetwork.lua \
lua/website/pluzz.lua
if WITH_NSFW
DIST_lua+=\
- lua/website/tube8.lua \
- lua/website/keezmovies.lua
+ lua/website/fastjizz.lua \
+ lua/website/pornhub.lua \
+ lua/website/tube8.lua
endif
endif # WITH_FIXME
diff --git a/share/lua/website/101greatgoals.lua b/share/lua/website/101greatgoals.lua
index c204c04..55f10da 100644
--- a/share/lua/website/101greatgoals.lua
+++ b/share/lua/website/101greatgoals.lua
@@ -20,7 +21,7 @@
-- 02110-1301 USA
--
--- Hundred and One Great Goals
+-- Hundred and One Great Goals (aggregator)
local HaOgg = {} -- Utility functions specific to this script
-- Identify the script.
@@ -32,106 +33,71 @@ function ident(self)
r.formats = "default"
r.categories = C.proto_http
local U = require 'quvi/util'
- r.handles = U.handles(self.page_url, {r.domain}, {"/gvideos/.+"})
+ r.handles = U.handles(self.page_url, {r.domain}, {"/gvideos/.+/$"})
return r
end
-- Query available formats.
function query_formats(self)
self.formats = 'default'
- return HaOgg.check_external_content(self)
+ return HaOgg.chk_ext_content(self)
end
-- Parse media URL.
function parse(self)
self.host_id = "101greatgoals"
- return HaOgg.check_external_content(self)
+ return HaOgg.chk_ext_content(self)
end
--
-- Utility functions
--
-function HaOgg.check_external_content(self)
- local p = quvi.fetch(self.page_url)
-
- local m = '<div .- id="space4para" class="post%-type%-gvideos">'
- ..'.-<script (.-)</script>'
- local a = p:match(m) or error("no match: article")
-
- -- Self-hosted, and they use YouTube
- -- http://www.101greatgoals.com/gvideos/golazo-wanchope-abila-sarmiento-junin-v-merlo-2/
- if a:match('id="jwplayer%-1%-div"') then -- get the javascript chunk for jwplayer
+function HaOgg.chk_self_hosted(p)
+ --
+ -- Previously referred to as the "self-hosted" media, although according
+ -- to the old notes, these were typically hosted by YouTube.
+ -- http://is.gd/EKKPy2
+ --
+ -- 2013-05-05: The contents of the URL no longer seems to contain the
+ -- "file" value, see chk_embedded for notes; keep this
+ -- function around for now
+ --
+ local d = p:match('%.setup%((.-)%)')
+ if d then
+ local s = d:match('"file":"(.-)"') or error('no match: file')
+ if #s ==0 then
+ error('empty media URL ("file")')
+ end
local U = require 'quvi/util'
- local s = p:match('"file":"(.-)"') or error('no match: file location')
- a = U.unescape(s):gsub("\\/", "/")
- end
-
- -- e.g. http://www.101greatgoals.com/gvideos/ea-sports-uefa-euro-2012-launch-trailer/
- -- or
- -- http://www.101greatgoals.com/gvideos/golazo-wanchope-abila-sarmiento-junin-v-merlo-2/
- local s = a:match('http://.*youtube.com/embed/([^/"]+)')
- or a:match('http://.*youtube.com/v/([^/"]+)')
- or a:match('http://.*youtube.com/watch%?v=([^/"]+)')
- or a:match('http://.*youtu%.be/([^/"]+)')
- if s then
- self.redirect_url = 'http://youtube.com/watch?v=' .. s
- return self
+ return (U.slash_unescape(U.unescape(s)))
end
+end
- -- e.g. http://www.101greatgoals.com/gvideos/leicester-1-west-ham-2/
- -- or
- -- http://www.101greatgoals.com/gvideos/golazo-alvaro-negredo-overhead-kick-puts-sevilla-1-0-up-at-getafe/
- local s = a:match('http://.*dailymotion.com/embed/video/([^?"]+)')
- or a:match('http://.*dailymotion.com/swf/video/([^?"]+)')
- if s then
- self.redirect_url = 'http://dailymotion.com/video/' .. s
- return self
- end
-
- -- e.g. http://www.101greatgoals.com/gvideos/2-0-juventus-arturo-vidal-2-v-roma/
- local s = a:match('http://.*videa.hu/flvplayer.swf%?v=([^?"]+)')
- if s then
- self.redirect_url = 'http://videa.hu/flvplayer.swf?v=' .. s
- return self
- end
-
- -- e.g. http://www.101greatgoals.com/gvideos/golazo-hulk-porto-v-benfica/
- local s = a:match('http://.*sapo.pt/([^?"/]+)')
- if s then
- self.redirect_url = 'http://videos.sapo.pt/' .. s
- return self
- end
-
- -- FIXME rutube support missing
- -- e.g. http://www.101greatgoals.com/gvideos/allesandro-diamanti-bologna-1-0-golazo-v-cagliari-2/
- local s = a:match('http://video.rutube.ru/([^?"]+)')
- if s then
- self.redirect_url = 'http://video.rutube.ru/' .. s
- return self
- end
-
- -- FIXME svt.se support missing
- -- e.g. http://www.101greatgoals.com/gvideos/gais-2-norrkoping-0/
- local s = a:match('http://svt%.se/embededflash/(%d+)/play%.swf')
- if s then
- self.redirect_url = 'http://svt.se/embededflash/' .. s .. '/play.swf'
- return self
- end
-
- -- FIXME lamalla.tv support missing
- -- e.g. http://www.101greatgoals.com/gvideos/golazo-bakary-espanyol-b-vs-montanesa/
-
- -- FIXME indavideo.hu support missing
- -- e.g. http://www.101greatgoals.com/gvideos/golazo-michel-bastos-lyon-v-psg-3/
+function HaOgg.chk_embedded(p)
+ --
+ -- 2013-05-05: Most of the content appears to be embedded from elsewhere
+ --
+ -- Instead of trying to check for each, parse the likely embedded source
+ -- and pass it back to libquvi to find a media script that accepts the
+ -- parsed (embedded) media URL.
+ --
+ -- NOTE: This means that those media scripts must unwrangle the embedded
+ -- media URLs passed from this script
+ --
+ local s = p:match('class="post%-type%-gvideos">(.-)</')
+ or p:match('id="jwplayer%-1">(.-)</>')
+ or error('unable to determine embedded source')
+ return s:match('value="(.-)"') or s:match('src="(.-)"')
+end
- -- FIXME xtsream.dk support missing
- -- e.g. http://www.101greatgoals.com/gvideos/golazo-the-ball-doesnt-hit-the-floor-viktor-claesson-elfsborg-v-fc-copenhagen-1-22-mins-in/
+function HaOgg.chk_ext_content(self)
+ local p = quvi.fetch(self.page_url)
- -- FIXME mslsoccer.com support missing
- -- e.g. http://www.101greatgoals.com/gvideos/thierry-henry-back-heel-assist-mehdi-ballouchy-v-montreal-impact/
+ self.redirect_url = HaOgg.chk_self_hosted(p) or HaOgg.chk_embedded(p)
+ or error('unable to determine media source')
- error("FIXME: no support: Unable to determine the media host")
+ return self
end
-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/1tvru.lua b/share/lua/website/1tvru.lua
index 8ba6f2e..1e626ba 100644
--- a/share/lua/website/1tvru.lua
+++ b/share/lua/website/1tvru.lua
@@ -52,10 +52,10 @@ function parse(self)
local p = quvi.fetch(self.page_url)
- self.title = p:match(OTvRu.pattern('title', '(.-)'))
+ self.title = p:match("'title': '(.-)'")
or error("no match: media title")
- self.url = {p:match(OTvRu.pattern('file', '(.-)'))
+ self.url = {p:match("'file': '(.-)'")
or error("no match: media stream URL")}
self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
@@ -63,9 +63,11 @@ function parse(self)
return self
end
+--[[
function OTvRu.pattern(key_name, value_pattern)
return string.format("jwplayer%%('flashvideoportal_1'%%).*'%s': '%s'",
key_name, value_pattern)
end
+]]--
-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/academicearth.lua b/share/lua/website/academicearth.lua
index 0b9994d..a1d4201 100644
--- a/share/lua/website/academicearth.lua
+++ b/share/lua/website/academicearth.lua
@@ -54,17 +54,8 @@ end
function AcademicEarth.get_redirect_url(self)
local p = quvi.fetch(self.page_url)
- local s = p:match('ytID = "(.-)"')
- if s then
- self.redirect_url = 'http://youtube.com/e/' .. s
- else
- local s = p:match('embed src="(.-)"') -- blip
- if s then
- self.redirect_url = s
- else
- error('no match: blip or youtube pattern')
- end
- end
+ self.redirect_url = p:match('"(http://www%.youtube%.com/watch.-)"')
+ or error('no match: unrecognized media source')
return self
end
diff --git a/share/lua/website/ardmediathek.lua b/share/lua/website/ardmediathek.lua
new file mode 100644
index 0000000..167c5c4
--- /dev/null
+++ b/share/lua/website/ardmediathek.lua
@@ -0,0 +1,168 @@
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2013 Thomas Wei$(D)N(Bschuh
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+
+local ArdMediathek = {}
+
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local U = require 'quvi/util'
+ local B = require 'quvi/bit'
+ local r = {}
+ r.domain = 'www%.ardmediathek%.de'
+ r.formats = 'default|best'
+ r.categories = B.bit_or(C.proto_http, C.proto_rtmp)
+ r.handles = U.handles(self.page_url, {r.domain},
+ nil, {"documentId=%d+$"})
+ return r
+end
+
+function query_formats(self)
+ local config = ArdMediathek.get_config(self)
+ local formats = ArdMediathek.iter_formats(config)
+
+ local t = {}
+ for _,v in pairs(formats) do
+ table.insert(t, ArdMediathek.to_s(v))
+ end
+
+ table.sort(t)
+ self.formats = table.concat(t, "|")
+
+ return self
+end
+
+function parse(self)
+
+ local config = ArdMediathek.get_config(self)
+ local Util = require 'quvi/util'
+
+ self.host_id = 'ard'
+ self.title = config:match(
+ '<meta property="og:title" content="([^"]*)'
+ ):gsub(
+ '%s*%- %w-$', '' -- remove name of station
+ ):gsub(
+ '%s*%(FSK.*', '' -- remove FSK nonsense
+ )
+ or error('no match: media title')
+ self.thumbnail_url = config:match(
+ '<meta property="og:image" content="([^"]*)'
+ ) or ''
+
+ local formats = ArdMediathek.iter_formats(config)
+ local format = Util.choose_format(self,
+ formats,
+ ArdMediathek.choose_best,
+ ArdMediathek.choose_default,
+ ArdMediathek.to_s)
+ or error('unable to choose format')
+
+ if not format.url then error('no match: media url') end
+ self.url = { format.url }
+
+ return self
+end
+
+function ArdMediathek.test_availability(page)
+ -- some videos are only scrapable at certain times
+ local fsk_pattern =
+ 'Der Clip ist deshalb nur von (%d%d?) bis (%d%d?) Uhr verf$(D+d(Bgbar'
+ local from, to = page:match(fsk_pattern)
+ if from and to then
+ error('video only available from ' ..from.. ':00 to '
+ ..to.. ':00 CET')
+ end
+end
+
+function ArdMediathek.get_config(self)
+ local c = quvi.fetch(self.page_url)
+ self.id = self.page_url:match('documentId=(%d*)')
+ or error('no match: media id')
+ if c:match('<title>ARD Mediathek %- Fehlerseite</title>') then
+ error('invalid URL, maybe the media is no longer available')
+ end
+
+ return c
+end
+
+function ArdMediathek.choose_best(t)
+ return t[#t] -- return the last from the array
+end
+
+function ArdMediathek.choose_default(t)
+ return t[1] -- return the first from the array
+end
+
+function ArdMediathek.to_s(t)
+ return string.format("%s_%s_i%02d%s%s",
+ (t.quality) and t.quality or 'sd',
+ t.container, t.stream_id,
+ (t.encoding) and '_'..t.encoding or '',
+ (t.height) and '_'..t.height or '')
+end
+
+function ArdMediathek.quality_from(suffix)
+ local q = suffix:match('%.web(%w)%.') or suffix:match('%.(%w)%.')
+ or suffix:match('[=%.]Web%-(%w)') -- .webs. or Web-S or .s
+ if q then
+ q = q:lower()
+ local t = {s='ld', m='md', l='sd', xl='hd'}
+ for k,v in pairs(t) do
+ if q == k then return v end
+ end
+ end
+ return q
+end
+
+function ArdMediathek.height_from(suffix)
+ local h = suffix:match('_%d+x(%d+)[_%.]')
+ if h then return h..'p' end
+end
+
+function ArdMediathek.container_from(suffix)
+ return suffix:match('^(...):') or suffix:match('%.(...)$') or 'mp4'
+end
+
+function ArdMediathek.iter_formats(page)
+ local r = {}
+ local s = 'mediaCollection%.addMediaStream'
+ .. '%(0, (%d+), "(.-)", "(.-)", "%w+"%);'
+
+ ArdMediathek.test_availability(page)
+
+ for s_id, prefix, suffix in page:gmatch(s) do
+ local u = prefix .. suffix
+ u = u:match('^(.-)?') or u -- remove querystring
+ local t = {
+ container = ArdMediathek.container_from(suffix),
+ encoding = suffix:match('%.(h264)%.'),
+ quality = ArdMediathek.quality_from(suffix),
+ height = ArdMediathek.height_from(suffix),
+ stream_id = s_id, -- internally (by service) used stream ID
+ url = u
+ }
+ table.insert(r,t)
+ end
+ if #r == 0 then error('no media urls found') end
+ return r
+end
+
+-- vim: set ts=4 sw=4 sts=4 tw=72 expandtab:
diff --git a/share/lua/website/audioboo.lua b/share/lua/website/audioboo.lua
index 01d3061..89e0c5f 100644
--- a/share/lua/website/audioboo.lua
+++ b/share/lua/website/audioboo.lua
@ -43,22 +43,23 @@ end
function parse (self)
self.host_id = "audioboo"
- local oe_url =
- "http://audioboo.fm/publishing/oembed.json?url=" .. self.page_url
+ self.id = self.page_url:match('/boos/(%d+)%-')
+ or error('no match: media ID')
- local oe = quvi.fetch(oe_url, {fetch_type='config'})
+ local p = quvi.fetch(self.page_url)
- self.title = oe:match('"title":"(.-)"')
- or error('no match: media title')
+ self.title =
+ p:match('.+content=[\'"](.-)[\'"]%s+property=[\'"]og:title[\'"]')
+ or error('no match: media title')
- self.thumbnail_url = oe:match('"thumbnail_url":"(.-)"') or ''
-
- self.id = oe:match('id=."boo_embed_(.-)."')
- or error('no match: media id')
-
- self.url = {oe:match('a href=."(.-)."')
- or error('no match: media url')}
+ self.thumbnail_url =
+ p:match('.+content=[\'"](.-)[\'"]%s+property=[\'"]og:image[\'"]')
+ or ''
+ self.url = {
+ p:match('.+content=[\'"](.-)[\'"]%s+property=[\'"]og:audio[\'"]')
+ or error('no match: media stream URL')
+ }
return self
end
diff --git a/share/lua/website/yfrog.lua b/share/lua/website/beeg.lua
similarity index 66%
rename from share/lua/website/yfrog.lua
rename to share/lua/website/beeg.lua
index ffeab30..a2be776 100644
--- a/share/lua/website/yfrog.lua
+++ b/share/lua/website/beeg.lua
@@ -25,11 +25,11 @@ function ident(self)
package.path = self.script_dir .. '/?.lua'
local C = require 'quvi/const'
local r = {}
- r.domain = "yfrog%.com"
+ r.domain = "beeg%.com"
r.formats = "default"
r.categories = C.proto_http
local U = require 'quvi/util'
- r.handles = U.handles(self.page_url, {r.domain}, {"/%w+"})
+ r.handles = U.handles(self.page_url, {r.domain}, {"/%d+"})
return r
end
@@ -41,21 +41,18 @@ end
-- Parse media URL.
function parse(self)
- self.host_id = "yfrog"
+ self.host_id = "beeg"
- self.id = self.page_url:match('%.com/(%w+)')
- or error('no match: media id')
+ self.id = self.page_url:match('/(%d+)')
+ or error("no match: media ID")
- local page = quvi.fetch(self.page_url)
+ local p = quvi.fetch(self.page_url)
- self.title = page:match('<title>(.-)</title>')
- or error('no match: media title')
+ self.title = p:match('<meta name="description" content="(.-)%.')
+ or error("no match: media title")
- self.thumbnail_url = page:match('"og:image" content="(.-)"')
- or ''
-
- self.url = {page:match('input class="readonly" value="(.-)"')
- or error('no match: media url')}
+ self.url = {p:match("'file': '(http://.-)'")
+ or error("no match: media stream URL")}
return self
end
diff --git a/share/lua/website/bikeradar.lua b/share/lua/website/bikeradar.lua
index ce67695..3d3184e 100644
--- a/share/lua/website/bikeradar.lua
+++ b/share/lua/website/bikeradar.lua
@@ -29,7 +30,7 @@ function ident(self)
r.formats = "default"
r.categories = C.proto_http
local U = require 'quvi/util'
- r.handles = U.handles(self.page_url, {r.domain})
+ r.handles = U.handles(self.page_url, {r.domain}, {'/videos/.-%-%w+$'})
return r
end
@@ -43,20 +44,10 @@ end
function parse(self)
self.host_id = "bikeradar"
- self.id = self.page_url:match('bikeradar.com/.+-(%d+)$')
- or error("no match: media ID")
-
local p = quvi.fetch(self.page_url)
- self.title = p:match('"og:title" content="(.-)"/>')
- or error("no match: media title")
-
- self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
-
- local fn = p:match('<param name="flashvars" value="vcode=(%w+)&')
- or error("no match: file name")
-
- self.url = {string.format("http://cdn.video.bikeradar.com/%s.flv",fn)}
+ self.redirect_url = p:match('"embedURL" href="(.-)"')
+ or error('no match: embedURL')
return self
end
diff --git a/share/lua/website/break.lua b/share/lua/website/break.lua
index 55be152..a07fc42 100644
--- a/share/lua/website/break.lua
+++ b/share/lua/website/break.lua
@@ -45,19 +45,21 @@ function parse(self)
local p = quvi.fetch(self.page_url)
- self.title = p:match('id="vid_title" content="(.-)"')
+ self.title = p:match("sVidTitle:%s+['\"](.-)['\"]")
or error("no match: media title")
- self.id = p:match("ContentID='(.-)'")
+ self.id = p:match("iContentID:%s+'(.-)'")
or error("no match: media ID")
- local fn = p:match("FileName='(.-)'")
- or error("no match: file name")
+ self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
- local fh = p:match('flashVars.icon = "(.-)"')
+ local n = p:match("videoPath:%s+['\"](.-)['\"]")
+ or error("no match: file path")
+
+ local h = p:match("icon:%s+['\"](.-)['\"]")
or error("no match: file hash")
- self.url = {string.format("%s.flv?%s", fn, fh)}
+ self.url = {string.format("%s?%s", n, h)}
return self
end
diff --git a/share/lua/website/clipfish.lua b/share/lua/website/clipfish.lua
index 914baf2..3161f2e 100644
--- a/share/lua/website/clipfish.lua
+++ b/share/lua/website/clipfish.lua
@@ -24,10 +24,11 @@
function ident(self)
package.path = self.script_dir .. '/?.lua'
local C = require 'quvi/const'
+ local B = require 'quvi/bit'
local r = {}
r.domain = "clipfish%.de"
r.formats = "default"
- r.categories = C.proto_http
+ r.categories = B.bit_or(C.proto_http, C.proto_rtmp)
local U = require 'quvi/util'
r.handles = U.handles(self.page_url, {r.domain}, {"/video/%d+/"})
return r
diff --git a/share/lua/website/dailymotion.lua b/share/lua/website/dailymotion.lua
index 5ee6912..459af3e 100644
--- a/share/lua/website/dailymotion.lua
+++ b/share/lua/website/dailymotion.lua
@@ -63,7 +63,7 @@ function parse(self)
local U = require 'quvi/util'
local p = Dailymotion.fetch_page(self, U)
- self.title = p:match('title="(.-)"')
+ self.title = p:match('"og:title" content="(.-)"')
or error("no match: media title")
self.id = p:match("video/([^%?_]+)")
diff --git a/share/lua/website/deviantclip.lua b/share/lua/website/deviantclip.lua
new file mode 100644
index 0000000..ae440f7
--- /dev/null
+++ b/share/lua/website/deviantclip.lua
@@ -0,0 +1,73 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2012 quvi project
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+--
+
+local Deviantclip = {} -- Utility functions unique to this script
+
+-- Identify the script.
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local r = {}
+ r.domain = "deviantclip%.com"
+ r.formats = "default"
+ r.categories = C.proto_http
+ local U = require 'quvi/util'
+ r.handles = U.handles(self.page_url, {r.domain}, {"/watch/.+"})
+ return r
+end
+
+-- Query available formats.
+function query_formats(self)
+ self.formats = 'default'
+ return self
+end
+
+-- Parse media URL.
+function parse(self)
+ self.host_id = "deviantclip"
+
+ self.id = self.page_url:match('/watch/(.+)')
+ or error("no match: media ID")
+
+ local p = quvi.fetch(self.page_url)
+
+ self.title = p:match('DC%.title" content="(.-)" ')
+ or error("no match: media title")
+ self.title = self.title:gsub('&#x(%d+);', Deviantclip.to_utf8)
+
+ local U = require 'quvi/util'
+ self.url = {U.unescape (p:match('%[{"file":"(.-)",'))
+ or error("no match: media stream URL")}
+
+ return self
+end
+
+--
+-- Utility functions
+--
+
+function Deviantclip.to_utf8(a) -- Unescape � to UTF-8
+ local H = require 'quvi/html'
+ return H.to_utf8("0x" .. a)
+end
+
+-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/fastjizz.lua b/share/lua/website/fastjizz.lua
new file mode 100644
index 0000000..16a4222
--- /dev/null
+++ b/share/lua/website/fastjizz.lua
@@ -0,0 +1,72 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2012 quvi project
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+--
+
+-- Identify the script.
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local r = {}
+ r.domain = "fastjizz%.com"
+ r.formats = "default"
+ r.categories = C.proto_http
+ local U = require 'quvi/util'
+ r.handles = U.handles(self.page_url, {r.domain}, {"/video/%d+/.*"})
+ if r.handles then return r end
+ -- Handle embedded URLs here
+ r.handles = U.handles(self.page_url, {r.domain},
+ {"/embed%.php"}, {"id=%d+"})
+ return r
+end
+
+-- Query available formats.
+function query_formats(self)
+ self.formats = 'default'
+ return self
+end
+
+-- Parse media URL.
+function parse(self)
+ self.host_id = "fastjizz"
+
+ self.id = self.page_url:match('/video/(%d+).*')
+ if not self.id then
+ self.id = self.page_url:match('/embed%.php%?id=(%d+)')
+ or error("no match: media ID")
+ end
+
+ local p =
+ quvi.fetch("http://www.fastjizz.com/media/nuevo/playlist.php?key="
+ .. self.id)
+
+ self.title = p:match('<title>(.+)</title>')
+ or error("no match: media title")
+
+ self.thumbnail_url =
+ p:match('<image>(.+)</image>') or ''
+
+ self.url = {p:match('<file>(.+)</file>')
+ or error("no match: media stream URL")}
+
+ return self
+end
+
+-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/funnyordie.lua b/share/lua/website/funnyordie.lua
index f3beb7d..d69cd26 100644
--- a/share/lua/website/funnyordie.lua
+++ b/share/lua/website/funnyordie.lua
@@ -61,7 +61,7 @@ function parse(self)
or error ("no match: media title")
self.id = page:match('key:%s+"(.-)"')
- or error ("no match: media id")
+ or error ("no match: media ID")
self.thumbnail_url = page:match('"og:image" content="(.-)"') or ''
@@ -72,7 +72,7 @@ function parse(self)
FunnyOrDie.choose_default,
FunnyOrDie.to_s)
or error("unable to choose format")
- self.url = {format.url or error('no match: media url')}
+ self.url = {format.url or error('no match: media stream URL')}
return self
end
@@ -82,26 +82,24 @@ end
function FunnyOrDie.iter_formats(page)
local t = {}
- for u in page:gmatch("'src',%s+'(.-)'") do
- local q,c = u:match('(%w+)%.(%w+)$')
- table.insert(t, {url=u, quality=q, container=c})
--- print(u,c)
+ for u in page:gmatch('source src="(.-)"') do
+ table.insert(t,u)
end
- return t
-end
-
-function FunnyOrDie.choose_best(formats) -- Last is 'best'
- local r = FunnyOrDie.choose_default(formats)
- for _,v in pairs(formats) do
- r = v
+ table.remove(t,1) -- Remove the first: the URL for segmented videos
+ local r = {}
+ for _,u in pairs(t) do
+ local q,c = u:match('/(%w+)%.(%w+)$')
+ table.insert(r, {url=u, quality=q, container=c})
end
return r
end
-function FunnyOrDie.choose_default(formats) -- First is 'default'
- for _,v in pairs(formats) do
- return v
- end
+function FunnyOrDie.choose_best(formats)
+ return FunnyOrDie.choose_default(formats)
+end
+
+function FunnyOrDie.choose_default(formats)
+ return formats[1]
end
function FunnyOrDie.to_s(t)
diff --git a/share/lua/website/gaskrank.lua b/share/lua/website/gaskrank.lua
index bab03de..412d670 100644
--- a/share/lua/website/gaskrank.lua
+++ b/share/lua/website/gaskrank.lua
@@ -45,10 +45,12 @@ function parse(self)
local p = quvi.fetch(self.page_url)
+ self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
+
self.title = p:match('"og:title" content="(.-)"')
or error('no match: media title')
- local u = p:match("(http://movies.-%.flv)")
+ local u = p:match('(http://movies.-)["\']')
or error("no match: media stream URL")
self.id = u:match("/%d+/(%d+)%.%w+") or error("no match: media ID")
diff --git a/share/lua/website/guardian.lua b/share/lua/website/guardian.lua
index cfd8fc1..2e913b8 100644
--- a/share/lua/website/guardian.lua
+++ b/share/lua/website/guardian.lua
@@ -20,22 +20,10 @@
-- 02110-1301 USA
--
---
--- NOTE: Ignores the m3u8 format. Patches welcome.
---
--- libquvi allows specifying multiple media stream URLs in
--- "self.url" (referred sometimes as "media or video segments"),
--- e.g.
--- self.url = {"http://foo", "http://bar"}
---
--- Whether the applications using libquvi make any use of this,
--- is a whole different matter.
---
-
local Guardian = {} -- Utility functions unique to this script
-- Identify the script.
-function ident (self)
+function ident(self)
package.path = self.script_dir .. '/?.lua'
local C = require 'quvi/const'
local r = {}
@@ -43,24 +31,13 @@ function ident (self)
r.formats = "default"
r.categories = C.proto_http
local U = require 'quvi/util'
- r.handles = U.handles(self.page_url,
- {r.domain}, {"/video/","/audio"})
+ r.handles = U.handles(self.page_url, {r.domain}, {"/video/","/audio/"})
return r
end
-- Query available formats.
function query_formats(self)
- local c = Guardian.get_config(self)
- local fmts = Guardian.iter_formats(c)
-
- local t = {}
- for _,v in pairs(fmts) do
- table.insert(t, Guardian.to_s(v))
- end
-
- table.sort(t)
- self.formats = table.concat(t, "|")
-
+ self.formats = 'default'
return self
end
@@ -68,63 +45,26 @@ end
function parse(self)
self.host_id = "guardian"
- local c = Guardian.get_config(self)
-
- local formats = Guardian.iter_formats(c)
- local U = require 'quvi/util'
- local format = U.choose_format(self, formats,
- Guardian.choose_best,
- Guardian.choose_default,
- Guardian.to_s)
- or error("unable to choose format")
- self.url = {format.url or error("no match: media url")}
-
- self.title = c:match('"headline":%s+"(.-)%s+-%s+video"')
- or error("no match: media title")
-
- self.id = c:match('"video%-id":%s+"(.-)"')
- or error ("no match: media id")
+ local p = quvi.fetch(self.page_url)
- self.thumbnail_url = c:match('"thumbnail%-image%-url":%s+"(.-)"') or ''
+ self.title = p:match('"og:title" content="(.-)"')
+ or error('no match: media title')
- local d = c:match('"duration":%s+(%d+)') or 0
- self.duration = tonumber(d)*1000 -- to msec
+ self.id = p:match('containerID%s+=%s+["\'](.-)["\']')
+ or p:match('audioID%s+=%s+["\'](.-)["\']')
+ or ''
- return self
-end
+ self.id = self.id:match('(%d+)') or error('no match: media ID')
---
--- Utility functions
---
+ self.duration = tonumber(p:match('duration%:%s+"?(%d+)"?') or 0) * 1000
-function Guardian.get_config(self)
- return quvi.fetch(self.page_url .. "/json", {fetch_type='config'})
-end
+ self.thumbnail_url = p:match('"thumbnail" content="(.-)"')
+ or p:match('"og:image" content="(.-)"') or ''
-function Guardian.iter_formats(config)
- local p = '"format":%s+"(.-)".-"video%-file%-url":%s+"(.-)"'
- local t = {}
- for c,u in config:gmatch(p) do
--- print(f,u)
- c = c:gsub("video/", "")
- c = c:gsub(":", "_")
- if c ~= "m3u8" then -- http://en.wikipedia.org/wiki/M3U
- table.insert(t, {container=c, url=u})
- end
- end
- return t
-end
+ self.url = {p:match('file:%s+"(.-)"')
+ or error('no match: media stream URL')}
-function Guardian.choose_best(t) -- Expect the first to be the 'best'
- return t[1]
-end
-
-function Guardian.choose_default(t) -- Use the first
- return t[1]
-end
-
-function Guardian.to_s(t)
- return t.container
+ return self
end
-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/jizzhut.lua b/share/lua/website/jizzhut.lua
new file mode 100644
index 0000000..a4f22e8
--- /dev/null
+++ b/share/lua/website/jizzhut.lua
@@ -0,0 +1,68 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2012 quvi project
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+--
+
+-- Identify the script.
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local r = {}
+ r.domain = "jizzhut%.com"
+ r.formats = "default"
+ r.categories = C.proto_http
+ local U = require 'quvi/util'
+ r.handles = U.handles(self.page_url, {r.domain},
+ {"/videos/.*-%d-%.html", "/videos/embed/%d."})
+ return r
+end
+
+-- Query available formats.
+function query_formats(self)
+ self.formats = 'default'
+ return self
+end
+
+-- Parse media URL.
+function parse(self)
+ self.host_id = "jizzhut"
+
+ self.id = self.page_url:match('/videos/.*%-(%d-)%.html')
+ if not self.id then
+ self.id = self.page_url:match('/videos/embed/(%d+)')
+ or error("no match: media ID")
+ end
+
+ local p = quvi.fetch("http://www.jizzhut.com/videos/-"
+ .. self.id .. ".html")
+
+ self.title = p:match('<title>(.-)</title>')
+ or error("no match: media title")
+
+ local p = quvi.fetch("http://www.jizzhut.com/videos/embed/"
+ .. self.id, "config")
+
+ self.url = {p:match('encodeURIComponent%("(http://.-)"%)')
+ or error("no match: media stream URL")}
+
+ return self
+end
+
+-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/keezmovies.lua b/share/lua/website/keezmovies.lua
index 0d547ff..3828c4a 100644
--- a/share/lua/website/keezmovies.lua
+++ b/share/lua/website/keezmovies.lua
@@ -51,12 +51,23 @@ function parse (self)
self.id = p:match("id%%3D(.-)&")
or error("no match: media id")
- local s = p:match("video_url=(.-)&")
+ local flashvars = p:match('flashvars" value="(.-)"/>')
+ or error("no match: flashvars")
+
+ local s = flashvars:match("video_url=(.-)&")
or error("no match: flv url")
local U = require 'quvi/util'
self.url = {U.unescape(s)}
+ local encrypted = flashvars:match('encrypted=true')
+ if encrypted ~= nil then
+ local key = flashvars:match("video_title=(-.)&")
+ -- XXX No support for AES encrypted URLs
+ -- AESCounterModeDecrypt(self.url, key, 256)
+ error("No support for encrypted streams")
+ end
+
return self
end
diff --git a/share/lua/website/lego.lua b/share/lua/website/lego.lua
index fbe28db..e3d884f 100644
--- a/share/lua/website/lego.lua
+++ b/share/lua/website/lego.lua
@@ -29,7 +30,8 @@ function ident(self)
r.formats = "default"
r.categories = C.proto_http
local U = require 'quvi/util'
- r.handles = U.handles(self.page_url, {r.domain}, {"/.+/Movies/.+$"})
+ r.handles = U.handles(self.page_url, {r.domain}, {"/.+/movies/.+$"})
+ -- http://city.lego.com/en-gb/movies/mini-movies/gold-run/
return r
end
@@ -42,19 +44,22 @@ end
-- Parse video URL.
function parse(self)
self.host_id = "lego"
+
local p = quvi.fetch(self.page_url)
- local s = p:match('<trackingName>(.+)</trackingName>')
- or error("no match: tracking name")
- local index = s:find("-")
+ local d = p:match('FirstVideoData = {(.-)};')
+ or error('no match: FirstVideoData')
+
+ self.title = d:match('"Name":"(.-)"')
+ or error('no match: media title')
- self.title = s:sub(0, index-1)
- self.id = s:sub(index+1)
+ self.id = d:match('"LikeObjectGuid":"(.-)"') -- Lack of a better.
+ or error('no match: media ID')
- -- TODO self.thumbnail_url
+ self.url = {d:match('"VideoFlash":%{"Url":"(.-)"')
+ or error('no match: media stream URL')}
- self.url = {p:match('<movie>(.+)</movie>')
- or error("no match: media stream URL")}
+ -- TODO: return self.thumbnail_url
return self
end
diff --git a/share/lua/website/metacafe.lua b/share/lua/website/metacafe.lua
index c75c450..2ebff7c 100644
--- a/share/lua/website/metacafe.lua
+++ b/share/lua/website/metacafe.lua
@@ -55,26 +56,22 @@ function parse(self)
local U = require 'quvi/util'
local p = Metacafe.fetch_page(self, U)
- self.title = p:match('"title":"(.-)"')
- or error("no match: media title")
+ local v = p:match('name="flashvars" value="(.-)"')
+ or error('no match: flashvars')
- self.title = U.unescape(self.title)
-
- self.id = p:match('"itemID":"(.-)"')
- or error('no match: media id')
+ v = U.slash_unescape(U.unescape(v))
self.thumbnail_url = p:match('rel="image_src" href="(.-)"') or ''
- local d = p:match('"mediaData":"(.-)"')
- or error('no match: media data')
- d = U.unescape(d)
+ self.title = v:match('title=(.-)&') or error('no match: media title')
+
+ self.id = v:match('itemID=(%d+)') or error('no match: media ID')
- local u = d:match('"mediaURL":"(.-)"')
- or error('no match: media url')
- u = U.slash_unescape(u)
+ local u = v:match('"mediaURL":"(.-)"')
+ or error('no match: media stream URL')
- local k = d:match('"key":"(.-)"')
- or error('no match: gda key')
+ local k = v:match('"key":"__gda__","value":"(.-)"')
+ or error('no match: key')
self.url = {string.format("%s?__gda__=%s", u, k)}
diff --git a/share/lua/website/myspass.lua b/share/lua/website/myspass.lua
new file mode 100644
index 0000000..1bc6175
--- /dev/null
+++ b/share/lua/website/myspass.lua
@@ -0,0 +1,89 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2012 Guido Leisker <guido@guido-leisker.de>
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+
+-- About
+-- Each video url ends with an id composed of digits.
+-- This id leads us to a metadata xml file (see function
+-- MySpass.getMetadataValue) containing all necessary information
+-- including download link.
+
+local MySpass = {} -- Utility functions unique to this script
+
+-- Identify the script.
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local r = {}
+ r.domain = "myspass%.de"
+ r.formats = "default"
+ r.categories = C.proto_http
+ local U = require 'quvi/util'
+ -- expect all urls ending with digits to be videos
+ r.handles = U.handles(self.page_url, {r.domain}, {"/myspass/.-/%d+/?$"})
+ return r
+end
+
+-- Query available formats.
+function query_formats(self)
+ self.formats = 'default'
+ return self
+end
+
+-- Parse media URL.
+function parse(self)
+ self.host_id = "myspass"
+
+ self.id = self.page_url:match("(%d+)/?$")
+ or error("no match: media ID")
+
+ local format = MySpass.getMetadataValue(self, 'format')
+ local title = MySpass.getMetadataValue(self, 'title')
+ local season = MySpass.getMetadataValue(self, 'season')
+ local episode = MySpass.getMetadataValue(self, 'episode')
+ self.thumbnail_url = MySpass.getMetadataValue(self, 'imagePreview') or ''
+
+ self.title = string.format("%s %03d %03d %s", format, season,
+ episode, title)
+
+ self.url = {MySpass.getMetadataValue(self, 'url_flv')}
+
+ return self
+end
+
+--
+-- Utility functions
+--
+
+function MySpass.getMetadataValue(self, key)
+ if self.metadata == nil then
+ self.metadata = quvi.fetch(
+ 'http://www.myspass.de/myspass/'
+ .. 'includes/apps/video/getvideometadataxml.php?id='
+ .. self.id ) or error("cannot fetch meta data xml file")
+ end
+ local p = string.format("<%s>(.-)</%s>", key, key)
+ local temp = self.metadata:match(p) or error("meta data: no match: " .. key)
+ local value = temp:match('<!%[CDATA%[(.+)]]>') or temp
+ return value
+end
+
+-- vim: set ts=2 sw=2 tw=72 expandtab:
+
diff --git a/share/lua/website/quvi/html.lua b/share/lua/website/quvi/html.lua
new file mode 100644
index 0000000..18bd3a6
--- /dev/null
+++ b/share/lua/website/quvi/html.lua
@@ -0,0 +1,73 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2011 Toni Gundogdu <legatvs@gmail.com>
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+--
+
+--
+-- A modularized revision of <http://www.hpelbers.org/lua/utf8>
+--
+-- convert numeric html entities to utf8
+-- example: € -> $(C"f(B
+--
+
+local M = {}
+local char = string.char
+
+function M.tail(n, k)
+ local u, r=''
+ for i=1,k do
+ n,r = math.floor(n/0x40), n%0x40
+ u = char(r+0x80) .. u
+ end
+ return u, n
+end
+
+function M.to_utf8(a)
+ local n, r, u = tonumber(a)
+ if n<0x80 then -- 1 byte
+ return char(n)
+ elseif n<0x800 then -- 2 byte
+ u, n = M.tail(n, 1)
+ return char(n+0xc0) .. u
+ elseif n<0x10000 then -- 3 byte
+ u, n = M.tail(n, 2)
+ return char(n+0xe0) .. u
+ elseif n<0x200000 then -- 4 byte
+ u, n = M.tail(n, 3)
+ return char(n+0xf0) .. u
+ elseif n<0x4000000 then -- 5 byte
+ u, n = M.tail(n, 4)
+ return char(n+0xf8) .. u
+ else -- 6 byte
+ u, n = M.tail(n, 5)
+ return char(n+0xfc) .. u
+ end
+end
+
+--
+--for line in io.lines() do
+-- out = string.gsub(line, '&#(%d+);', to_utf8)
+-- print(out)
+--end
+--
+
+return M
+
+-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/quvi/util.lua b/share/lua/website/quvi/util.lua
index 8901626..2085496 100644
--- a/share/lua/website/quvi/util.lua
+++ b/share/lua/website/quvi/util.lua
@@ -46,6 +46,36 @@ function M.slash_unescape (s)
return s
end
+function M.base64_decode(s)
+ local itbl='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+
+ s = s:gsub('[^' .. itbl .. '=]', '')
+
+ return (s:gsub('.', function(x)
+ local r = ''
+
+ if (x ~= '=') then
+ local f = (itbl:find(x) - 1)
+
+ for i = 6, 1, -1 do
+ r = r .. (f % 2 ^ i - f % 2 ^ (i - 1) > 0 and '1' or '0')
+ end
+ end
+
+ return r;
+ end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
+ local c = 0
+
+ if (#x == 8) then
+ for i = 1, 8 do
+ c = c + (x:sub(i, i) == '1' and 2 ^ (8 - i) or 0)
+ end
+ end
+
+ return string.char(c)
+ end))
+end
+
-- handles
-- Check whether a website script can "handle" the specified URL
-- Params:
diff --git a/share/lua/website/sevenload.lua b/share/lua/website/sevenload.lua
index d539490..f3f9098 100644
--- a/share/lua/website/sevenload.lua
+++ b/share/lua/website/sevenload.lua
@@ -28,9 +28,8 @@ function ident(self)
r.domain = "sevenload%.com"
r.formats = "default"
r.categories = C.proto_http
- -- TODO: Use quvi/util:handles instead
- r.handles =
- (self.page_url ~= nil and self.page_url:match(r.domain) ~= nil)
+ local U = require 'quvi/util'
+ r.handles = U.handles(self.page_url, {r.domain}, {'/videos/'})
return r
end
@@ -44,23 +43,17 @@ end
function parse(self)
self.host_id = "sevenload"
- local p = quvi.fetch(self.page_url)
+ local p = quvi.fetch(self.page_url):gsub('"','"')
- local c_url = p:match('configPath=(.-)"')
- or error("no match: config URL")
- local U = require 'quvi/util'
- c_url = U.unescape(c_url)
+ self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
- local c = quvi.fetch(c_url, {fetch_type = 'config'})
+ self.title = p:match('"og:title" content="(.-)"')
+ or error('no match: media title')
- self.title = c:match('<item id=.-<title>(.-)</title>')
- or error("no match: media title")
+ self.id = p:match('videoid":"(.-)"') or error("no match: media id")
- self.id = c_url:match("itemId=(%w+)")
- or error("no match: media id")
-
- self.url = {c:match('<location seeking="yes">(.-)</')
- or error("no match: media URL")}
+ self.url = {p:match('src.+"(http://.+%.mp4)"')
+ or error("no match: media stream URL")}
return self
end
diff --git a/share/lua/website/spiegel.lua b/share/lua/website/spiegel.lua
index 77dcb0d..c28a85f 100644
--- a/share/lua/website/spiegel.lua
+++ b/share/lua/website/spiegel.lua
@@ -61,12 +61,14 @@ end
function parse(self)
self.host_id = "spiegel"
- Spiegel.get_media_id(self)
+ local p = quvi.fetch(self.page_url)
+
+ self.title = p:match('"spVideoTitle">(.-)<')
+ or error('no match: media title')
- local p = Spiegel.get_playlist(self)
+ self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
- self.title = p:match("<headline>(.-)</")
- or error ("no match: media title")
+ Spiegel.get_media_id(self)
local config = Spiegel.get_config(self)
local formats = Spiegel.iter_formats(config)
@@ -92,15 +94,6 @@ function Spiegel.get_media_id(self)
or error ("no match: media id")
end
-function Spiegel.get_playlist(self)
- local fmt_s = "http://www1.spiegel.de/active/playlist/fcgi/playlist.fcgi/"
- .. "asset=flashvideo/mode=id/id=%s"
-
- local playlist_url = string.format(fmt_s, self.id)
-
- return quvi.fetch(playlist_url, {fetch_type = 'playlist'})
-end
-
function Spiegel.get_config(self)
local fmt_s = "http://video.spiegel.de/flash/%s.xml"
local config_url = string.format(fmt_s, self.id)
@@ -138,15 +131,8 @@ function Spiegel.choose_best(formats) -- Highest quality available
return r
end
-function Spiegel.choose_default(formats) -- Lowest quality available
- local r = {width=0xffff, height=0xffff, bitrate=0xffff, url=nil}
- local U = require 'quvi/util'
- for _,v in pairs(formats) do
- if U.is_lower_quality(v,r) then
- r = v
- end
- end
- return r
+function Spiegel.choose_default(formats)
+ return formats[1]
end
function Spiegel.to_s(t)
diff --git a/share/lua/website/tapuz.lua b/share/lua/website/tapuz.lua
new file mode 100644
index 0000000..15e1bed
--- /dev/null
+++ b/share/lua/website/tapuz.lua
@@ -0,0 +1,74 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2012 Tzafrir Cohen <tzafrir@cohens.org.il>
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+--
+
+-- Identify the script.
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local r = {}
+ --- http://flix.tapuz.co.il/v/watch-4158845-.html
+ r.domain = "flix%.tapuz%.co%.il"
+ r.formats = "default"
+ r.categories = C.proto_http
+ local U = require 'quvi/util'
+ r.handles = U.handles(self.page_url, {r.domain},
+ {"/v/watch-.*.html", "/showVideo%.asp"})
+ return r
+end
+
+-- Query available formats.
+function query_formats(self)
+ self.formats = 'default'
+ return self
+end
+
+-- Parse media URL.
+function parse(self)
+ self.host_id = 'tapuz-flix'
+
+ self.id = self.page_url:match('/v/watch%-(%d+)%-.*%.html')
+ if not self.id then
+ self.id = self.page_url:match('/showVideo%.asp%?m=(%d+)')
+ or error("no match: media ID")
+ end
+
+ local xml_url_base = 'v/Handlers/XmlForPlayer.ashx' -- Variable?
+ local mako = 0 -- Does it matter?
+ local playerOptions = '0|1|grey|large|0' -- Does it matter? Format?
+
+ local p = quvi.fetch(self.page_url)
+ self.title = p:match('<meta name="item%-title" content="([^"]*)" />')
+
+ local s_fmt =
+ 'http://flix.tapuz.co.il/%s?mediaid=%d&autoplay=0&mako=%d'
+ .. '&playerOptions=%s'
+
+ local xml_url =
+ string.format(s_fmt, xml_url_base, self.id, mako, playerOptions)
+
+ local xml_page = quvi.fetch(xml_url)
+ self.url = { xml_page:match('<videoUrl>.*(http://.*%.flv).*</videoUrl>') }
+
+ return self
+end
+
+-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/ted.lua b/share/lua/website/ted.lua
index 84c6898..a5f7e87 100644
--- a/share/lua/website/ted.lua
+++ b/share/lua/website/ted.lua
@@ -46,22 +46,17 @@ end
-- Parse video URL.
function parse(self)
self.host_id = "ted"
+
local p = quvi.fetch(self.page_url)
- if Ted.is_external(self, p) then
- return self
- end
+ if Ted.is_external(self, p) then return self end
- self.id = p:match('ti:"(%d+)"')
- or error("no match: media ID")
+ self.id = p:match('ti:"(%d+)"') or error("no match: media ID")
- self.title = p:match('<title>(.-)%s+|')
- or error("no match: media title")
+ self.title = p:match('<title>(.-)%s+|') or error("no match: media title")
- self.thumbnail_url = p:match('rel="image_src" href="(.-)"') or ''
+ self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
- self.url = {p:match('(http://download.-)"')
- or error("no match: media stream URL")}
return self
end
@@ -69,10 +64,17 @@ end
-- Utility functions
--
-function Ted.is_external(self, page)
- -- Some of the videos are hosted elsewhere.
- self.redirect_url = page:match('name="movie"%s+value="(.-)"') or ''
- return #self.redirect_url > 0
+function Ted.is_external(self, p)
+ self.url = {p:match('(http://download.-)"') or ''}
+ if #self.url[1] ==0 then -- Try the first iframe
+ self.redirect_url = p:match('<iframe src="(.-)"') or ''
+ if #self.redirect_url >0 then
+ return true
+ else
+ error('no match: media stream URL')
+ end
+ end
+ return false
end
-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/theonion.lua b/share/lua/website/theonion.lua
index 7617fa7..953f8d1 100644
--- a/share/lua/website/theonion.lua
+++ b/share/lua/website/theonion.lua
@@ -53,7 +53,7 @@ function parse(self)
self.title = c:match('"title":%s+"(.-)"')
or error('no match: media title')
- self.thumbnail_url = c:match('"thumbnail":%s+"(.-)"') or ''
+ self.thumbnail_url = c:match('"thumbnail": %["(.-)"%]') or ''
self.url = {c:match('"video_url":%s+"(.-)"')
or error('no match: media stream URL')}
diff --git a/share/lua/website/tvlux.lua b/share/lua/website/tvlux.lua
index bd6eb32..5a4fc19 100644
--- a/share/lua/website/tvlux.lua
+++ b/share/lua/website/tvlux.lua
@@ -30,7 +30,7 @@ function ident(self)
r.categories = C.proto_http
local U = require 'quvi/util'
r.handles = U.handles(self.page_url,
- {r.domain}, {"/joomla/index%.php/"})
+ {r.domain}, {"/video/.-_%d+%.html"})
return r
end
@@ -43,13 +43,21 @@ end
-- Parse media URL.
function parse(self)
self.host_id = "tvlux"
- local page = quvi.fetch(self.page_url)
- self.title = page:match('"title" content="(.-)"')
+
+ self.id = self.page_url:match('/video/.-(%d+)%.html')
+ or error("no match: media ID")
+
+ local p = quvi.fetch(self.page_url)
+
+ self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
+
+ self.title = p:match('"title" content="(.-)%s+%-%s+TV')
or error("no match: media title")
- self.id = self.page_url:match('/(%d+)$')
- or error("no match: media id")
- self.url = {page:match("'url':'(.-)'")
- or error('no match: media')}
+
+ local path = p:match("'file':%s+'(.-)'")
+ or error('no match: media stream URL')
+
+ self.url = {string.format("http://www.tvlux.be%s", path)}
return self
end
diff --git a/share/lua/website/wdrmaus.lua b/share/lua/website/wdrmaus.lua
new file mode 100644
index 0000000..229240b
--- /dev/null
+++ b/share/lua/website/wdrmaus.lua
@@ -0,0 +1,173 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2013 Guido Leisker <guido@guido-leisker.de>
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+
+-- About
+-- wrdmaus.de falls into different sections each working
+-- quite differently
+--
+-- elefantenseite:
+-- flash gallery with link target to proper pages for each video
+-- last part of url is id, configuration.php5
+-- http://www.wdrmaus.de/elefantenseite/
+-- http://www.wdrmaus.de/elefantenseite/#/anke_tanzt_zooztiere
+--
+-- kaeptnblaubaerseite:
+-- single flash, users need to use html only page (html gallery)
+-- and copy target links of videos
+-- http://www.wdrmaus.de/kaeptnblaubaerseite/baerchen/tv.php5
+-- http://www.wdrmaus.de/kaeptnblaubaerseite/baerchen/tv.php5?mid=1&dslSrc=rtmp://gffstream.fcod.llnwd.net/a792/e2/blaubaer/flash/oink_web-m.flv&isdnSrc=rtmp://gffstream.fcod.llnwd.net/a792/e2/blaubaer/flash/oink_web-s.flv
+--
+-- sachgeschichten:
+-- html video gallery, users need to copy target links of videos
+-- http://www.wdrmaus.de/sachgeschichten/sachgeschichten/
+-- http://www.wdrmaus.de/sachgeschichten/sachgeschichten/sachgeschichte.php5?id=2702
+--
+-- entenseite (very few videos, not supported!):
+-- http://www.wdrmaus.de/enteseite/index.php5
+-- http://www.wdrmaus.de/enteseite/tuerenauf/index.php5?v=3#v2
+--
+-- There are more sections but they seem to provide no videos.
+
+local WdrMaus = {} -- Utility functions unique to this script
+
+-- Identify the script.
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local r = {}
+ r.domain = "wdrmaus%.de"
+ r.formats = "default"
+ r.categories = C.proto_rtmp
+ local U = require 'quvi/util'
+ -- there seems to be no possiblity to really
+ -- make a decision here: we are using a less
+ -- strict pattern here
+ r.handles = U.handles(self.page_url, {r.domain})
+ return r
+end
+
+-- Query available formats.
+function query_formats(self)
+ self.formats = 'default'
+ return self
+end
+
+-- Parse media URL.
+function parse(self)
+ self.host_id = "wdrmaus"
+
+ local a = {
+ {pat='kaeptnblaubaerseite', func=WdrMaus.parseKaeptnblaubaerseite},
+ {pat='sachgeschichten', func=WdrMaus.parseSachgeschichten},
+ {pat='elefantenseite', func=WdrMaus.parseElefantenseite}
+ }
+
+ local U = require 'quvi/url'
+ local t = U.parse(self.page_url)
+ local s = {}
+
+ for _,v in pairs(a) do
+ if t.path:match(v.pat) then return v.func(self) end
+ table.insert(s, v.pat)
+ end
+
+ error(string.format("limited support for the {%s} sections only",
+ table.concat(s, ',')))
+end
+
+--
+-- Utility functions
+--
+
+function WdrMaus.parseElefantenseite(self)
+ self.id = self.page_url:match('/([%w_]-)$')
+ or error('no match: media ID')
+
+ local rooturl = self.page_url:match('(%w+://.+/%w+)/.*')
+ or error('no match: root url')
+
+ local qo = {fetch_type='config'}
+ local configuration = quvi.fetch(rooturl .. '/data/configuration.php5', qo)
+
+ local streamingServerPath =
+ WdrMaus.getXMLvalue(configuration, 'streamingServerPath')
+
+ local toc = quvi.fetch(rooturl .. '/data/tableOfContents.php5', qo)
+
+ local metadataPath = WdrMaus.getMetadataPathFromToc(toc, self.id)
+ local metadata = quvi.fetch(rooturl .. '/' .. metadataPath, qo);
+
+ streamingServerPath = string.gsub(streamingServerPath, '/$', '')
+ self.url = { streamingServerPath .. WdrMaus.getXMLvalue(metadata, 'file') }
+ self.title = WdrMaus.getXMLvalue(metadata, 'title')
+
+ -- no idea why this url has a diffent host
+ self.thumbnail_url = 'http://www.wdr.de/bilder/mediendb/elefant_online'
+ .. WdrMaus.getXMLvalue(metadata, 'image')
+
+ return self
+end
+
+function WdrMaus.parseKaeptnblaubaerseite(self)
+ self.id = self.page_url:match('/([^/]-)$') or error('no match: media ID')
+
+ local qo = {fetch_type='config'}
+ local metadatasite = quvi.fetch(
+ 'http://www.wdrmaus.de/kaeptnblaubaerseite/baerchen/tv.php5', qo)
+
+ local matcher = string.gsub(self.id, '-' , '.')
+ metadata = metadatasite:match('.*(<img.-' .. matcher .. ')')
+ or error('no match: metadata')
+
+ self.title = metadata:match('<p>%s-(.-)%s-<br') or error('no match: title')
+ local thumb_rel = metadata:match('<img src="(.-)"') or ''
+
+ thumb_rel = string.gsub(thumb_rel, '%.%.', '')
+ self.thumbnail_url = 'http://www.wdrmaus.de/kaeptnblaubaerseite' ..thumb_rel
+
+ self.url = { self.page_url:match('.-(rtmp.-flv)')
+ or error('no match: media stream URL') }
+ return self
+end
+
+function WdrMaus.parseSachgeschichten(self)
+ self.id = self.page_url:match('%d+$') or error('no match: media ID')
+ local metadata = quvi.fetch(self.page_url)
+ self.title = metadata:match('h1_019DCE">(.-)<') or error('no match: title')
+ self.url = { metadata:match('(rtmp.-mp4)')
+ or error('no match: media stream URL') }
+ return self
+end
+
+function WdrMaus.getXMLvalue(str, value)
+ ret = str:match('<' .. value .. '>(.-)</' .. value .. '>')
+ or error('Cannot match ' .. value)
+ return ret:match('<!%[CDATA%[(.+)]]>') or ret
+end
+
+function WdrMaus.getMetadataPathFromToc(toc, id)
+ -- the toc contains all paths for this root (f.i. elefantenkino)
+ local page = toc:match('<id>.-(' .. id .. '.-</xmlPath>)')
+ or error('no match: metadata path')
+ return WdrMaus.getXMLvalue(page, 'xmlPath')
+end
+
+-- vim: set ts=2 sw=2 tw=72 expandtab:
diff --git a/share/lua/website/wimp.lua b/share/lua/website/wimp.lua
new file mode 100644
index 0000000..27792e9
--- /dev/null
+++ b/share/lua/website/wimp.lua
@@ -0,0 +1,64 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2013 Martin Herkt <lachs0r@srsfckn.bit>
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+--
+
+-- Identify the script.
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local r = {}
+ r.domain = "wimp%.com"
+ r.formats = "default"
+ r.categories = C.proto_http
+ local U = require 'quvi/util'
+ r.handles = U.handles(self.page_url, {r.domain}, {"/.+/"})
+ return r
+end
+
+-- Query available formats.
+function query_formats(self)
+ self.formats = 'default'
+ return self
+end
+
+-- Parse media URL.
+function parse(self)
+ self.host_id = "wimp"
+
+ self.id = self.page_url:match("/(.-)/")
+ or error("no match: media ID")
+
+ local p = quvi.fetch(self.page_url)
+
+ self.title = p:match('"og:title" content="(.-)" />')
+ or error("no match: media title")
+
+ self.thumbnail_url = p:match('"og:image" content="(.-)"') or ''
+
+ local B = require 'quvi/util'
+ local u = B.base64_decode(p:match("googleCode = '(.-)'"))
+ or error("no match: encoded media stream URL")
+
+ self.url = {u:match('"file","(.-)"')
+ or error("no match: media stream URL")}
+
+ return self
+end
diff --git a/share/lua/website/xhamster.lua b/share/lua/website/xhamster.lua
index b31784b..7a24807 100644
--- a/share/lua/website/xhamster.lua
+++ b/share/lua/website/xhamster.lua
@@ -46,7 +46,7 @@ function parse(self)
local p = quvi.fetch(self.page_url)
- self.title = p:match('class="mTitle">.-<h1?.>(.-)</h1>')
+ self.title = p:match('<title>(.-)%s+%-%s+xHamster%.com')
or error("no match: media title")
self.id = self.page_url:match("/movies/(.-)/")
diff --git a/share/lua/website/xnxx.lua b/share/lua/website/xnxx.lua
new file mode 100644
index 0000000..bd7a300
--- /dev/null
+++ b/share/lua/website/xnxx.lua
@@ -0,0 +1,64 @@
+
+-- libquvi-scripts v0.4.15
+-- Copyright (C) 2012 quvi project
+--
+-- This file is part of libquvi-scripts <http://quvi.sourceforge.net/>.
+--
+-- This library is free software; you can redistribute it and/or
+-- modify it under the terms of the GNU Lesser General Public
+-- License as published by the Free Software Foundation; either
+-- version 2.1 of the License, or (at your option) any later version.
+--
+-- This library is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-- Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public
+-- License along with this library; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+-- 02110-1301 USA
+--
+
+-- Identify the script.
+function ident(self)
+ package.path = self.script_dir .. '/?.lua'
+ local C = require 'quvi/const'
+ local r = {}
+ r.domain = "xnxx%.com"
+ r.formats = "default"
+ r.categories = C.proto_http
+ local U = require 'quvi/util'
+ r.handles = U.handles(self.page_url, {r.domain}, {"/video%d+.+"})
+ return r
+end
+
+-- Query available formats.
+function query_formats(self)
+ self.formats = 'default'
+ return self
+end
+
+-- Parse media URL.
+function parse(self)
+ self.host_id = "xnxx"
+
+ self.id = self.page_url:match('/video(%d+)')
+ or error("no match: media ID")
+
+ local p = quvi.fetch(self.page_url)
+
+ self.title = p:match('<span class="style5"><strong>(.-)</strong>')
+ or error("no match: media title")
+
+ self.thumbnail_url =
+ p:match('url_bigthumb=(http://.-)&') or ''
+
+ local U = require 'quvi/util'
+ self.url = {U.unescape (p:match('flv_url=(http.-)&'))
+ or error("no match: media stream URL")}
+
+ return self
+end
+
+-- vim: set ts=4 sw=4 tw=72 expandtab:
diff --git a/share/lua/website/xvideos.lua b/share/lua/website/xvideos.lua
index 47d6bca..55b091c 100644
--- a/share/lua/website/xvideos.lua
+++ b/share/lua/website/xvideos.lua
@@ -50,7 +50,7 @@ function parse(self)
local p = quvi.fetch(self.page_url)
- self.title = p:match("<title>(.-)%s+-%s+XVID")
+ self.title = p:match('<div id="main">.-<h2>(.-)<')
or error("no match: media title")
self.id = self.page_url:match("/video(%d+)/")
diff --git a/share/lua/website/youjizz.lua b/share/lua/website/youjizz.lua
index 47d2046..91569d1 100644
--- a/share/lua/website/youjizz.lua
+++ b/share/lua/website/youjizz.lua
@@ -44,16 +44,21 @@ end
function parse(self)
self.host_id = "youjizz"
+ self.id = self.page_url:match('%-(%d+)%.html')
+ or error ("no match: media ID")
+
local p = quvi.fetch(self.page_url)
self.title = p:match("<title>(.-)</")
or error ("no match: media title")
- self.id = p:match("%?id=(%d+)")
- or error ("no match: media ID")
+ self.thumbnail_url = p:match('data%-original="(.-)"') or ''
+
+ local c = quvi.fetch('http://youjizz.com/videos/embed/' .. self.id,
+ {fetch_type='config'})
- self.url = {p:match('addVariable%("file",encodeURIComponent%("(.-)"')
- or error ("no match: media URL")}
+ self.url = {c:match('addVariable%("file",encodeURIComponent%("(.-)"')
+ or error ("no match: media stream URL")}
return self
end
diff --git a/share/lua/website/youtube.lua b/share/lua/website/youtube.lua
index de8ac2e..7c35e68 100644
--- a/share/lua/website/youtube.lua
+++ b/share/lua/website/youtube.lua
@@ -125,7 +125,11 @@ function YouTube.iter_formats(config, U)
for f in fmt_stream_map:gmatch('([^,]*),') do
local d = U.decode(f)
if d['itag'] and d['url'] then
- urls[U.unescape(d['itag'])] = U.unescape(d['url'])
+ local uurl = U.unescape(d['url'])
+ if d['sig'] then
+ uurl = uurl .. "&signature=" .. U.unescape(d['sig'])
+ end
+ urls[U.unescape(d['itag'])] = uurl
end
end
Reply to: