KeepListening is a simple program using xine code from mplayer (thanks!) to download BBC Listen Again streams (and other Real Audio RTSP streams).
Simply open the "Listen with External Real Player" links with this program and you can save the Real audio file. Play it with mplayer, vlc, or even Real Player (their linux player is actually quite good amazingly).
To build it you just need Qt 4. If it doesn't work, you might want to generate mplayer's config.h for your system, and then copy it over libreal/config.h
I've also included a binary that might possible work if you are lucky, but this is linux so it probably won't!
Anyway, enjoy! Also Mark Thomas - legend.
PS: If someone wants to make some packages that automatically do the association thing, that would be great!
PPS: Progress bar is approximate - it will take as long to download as the programme lasts.
-----Changelog-----
0.1.1 - 08-05-2007 (Sane date format).
- Fixed compilation errors (kdevelop assumed absolute paths) - Close on errors + Added auto-close checkbox (on by default) - Ignore lines starting with ## in ram files.
-----Planned Features------
Windows version with installer to associate RAM files with this.
Hey all just a heads up that other people are working on this see here: http://www.tomtaylor.co.uk/blog/2007/04/17/play-it-again/#comment-12945
and
http://www.jpstacey.info/blog/2006/12/06/realplayer-to-mp3-a-configurable-python-wrapper/
I've been using JP staceys python script and it works very well it'd be lovely to see a fully developed GUI for this or perhaps a Konqueror pluggin?
Keep up the good work!
Child
A cool idea would be to borrow some code from Alienbbc (the plugin for slimserver) that parses the "Listen again" pages at BBC and lets you select programs from a menu and webpage.
with my pron sites but I couldn't compile on my system (qmake-qt4 & make or qmake & make). Following is the error:
[root@maya KeepListening]# make
cd src && /usr/lib/qt4/bin/qmake-qt4 src.pro -unix -o Makefile
cd src && make -f Makefile
make[1]: Entering directory `/opt/KeepListening/src'
/usr/lib/qt4/bin/uic DownloadWindow.ui -o ui_DownloadWindow.h
g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D_REENTRANT -Wall -W -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -I/home/t/Projects/KeepListening/src/libreal/stream -I/home/t/Projects/KeepListening/src/libreal -I. -I. -o keeplistening.o keeplistening.cpp
In file included from downloader.h:4,
from keeplistening.h:12,
from keeplistening.cpp:4:
libreal/stream/stream.h:4:20: error: mp_msg.h: No such file or directory
In file included from libreal/stream/stream.h:5,
from downloader.h:4,
from keeplistening.h:12,
from keeplistening.cpp:4:
libreal/stream/network.h:14:20: error: config.h: No such file or directory
libreal/stream/stream.h: In function ‘int stream_read_char(stream_t*)’:
libreal/stream/stream.h:128: error: ‘stream_fill_buffer’ was not declared in this scope
libreal/stream/stream.h: In function ‘int stream_read(stream_t*, char*, int)’:
libreal/stream/stream.h:209: error: ‘stream_fill_buffer’ was not declared in this scope
libreal/stream/stream.h:212: error: ‘MSGT_DEMUX’ was not declared in this scope
libreal/stream/stream.h:212: error: ‘MSGL_WARN’ was not declared in this scope
libreal/stream/stream.h:212: error: ‘mp_msg’ was not declared in this scope
libreal/stream/stream.h: In function ‘unsigned char* stream_read_line(stream_t*, unsigned char*, int)’:
libreal/stream/stream.h:227: error: ‘stream_fill_buffer’ was not declared in this scope
libreal/stream/stream.h: In function ‘int stream_seek(stream_t*, off_t)’:
libreal/stream/stream.h:255: error: ‘MSGT_DEMUX’ was not declared in this scope
libreal/stream/stream.h:255: error: ‘MSGL_DBG3’ was not declared in this scope
libreal/stream/stream.h:255: error: ‘mp_dbg’ was not declared in this scope
libreal/stream/stream.h:266: error: ‘stream_seek_long’ was not declared in this scope
libreal/stream/stream.h: In function ‘int stream_skip(stream_t*, off_t)’:
libreal/stream/stream.h:277: error: ‘stream_fill_buffer’ was not declared in this scope
make[1]: *** [keeplistening.o] Error 1
make[1]: Leaving directory `/opt/KeepListening/src'
make: *** [sub-src-make_default] Error 2
Another thing, it couldn't be launched properly when I opened the .ram files with the keeplistening binary. What I need to do is open it in terminal and then paste the rstp://xxx url into it. There is a lot of message on the terminal. It would be nice if u minimize the output (or add some option to do so).
I am using FC6.
Thanks anyway. It solved a big problem of using long command line with mplayer whenever I had to download the nasty porns...always streaming using rstp protocol...phew!!
well, one of my downloads is just finished....but the window is still open...plz add an auto-close feature after completion. Many downloads means I have to click on the close buttons many times ;)
Thanks for the feedback!
I'll try to fix those compilation errors. And I can turn all the output off - forgot I left mplayer's logging on.
"it couldn't be launched properly when I opened the .ram files with the keeplistening binary"
Weird, what happens when try, and what is the location and content of the ram file?
thanks. I am looking forward to have the improvements.
Well, below is the content of the .ram file I fed to this app. The file is created (0 size) but no stream downloaded.
The .ram file:
## The following two video clips play for RealOne Player and later:
## .RAM_V3.0_START
##rtsp://abc.def.com/protected/823k2hckssso9/realmedia/rm_9/k9823702jw_9.RM?wid=9823&prod=aksjd-aksjdak
## .RAM_V3.0_END
## The following two clips play for RealPlayer G2 through RealPlayer 8:
rtsp://abc.def.com/protected/823k2hckssso9/realmedia/rm_9/k9823702jw_9.RM?wid=9823&prod=aksjd-aksjdak
--stop--
## The following two clips play for RealPlayer 5 and earlier:
rtsp://abc.def.com/protected/823k2hckssso9/realmedia/rm_9/k9823702jw_9.RM?wid=9823&prod=aksjd-aksjdak
I have changed the name of the link for obvious reasons. However, the structure is same.
good luck!!
Thanks for adding the feature of automatic close and ignoring comment lines starting with ## in .ram files. It is working well.
However, how is the behavior when a .ram file contains two non-commented rstp links??
Also, is it possible to add multiple downloads in a single window....not serially, rather, simultaneously?? I mean, a feature to add 2+ media-links and start these links download simultaneously. I am asking because we can use this app efficiently in simultaneous with kshutdown app (which offers a feature to shutdown the computer when some particular program ends...in this case, your app). If I use multiple download in multiple windows, it is hard to detect which one will end last and hence can't use the aforementioned feature.
Thanks a lot. please keep up the good work.
Yeah currently it only looks at the first rtsp link. I like your suggestion for multiple downloads. I'll probably do it when I have time - shouldn't be too hard.
Also for now if you want to shutdown after they are all finished you could do it based on time. E.g. if you are downloading an hour long programme, tell it to shut down in an hour and 10 minutes. That assumes you know how long it is in advance though.
Ratings & Comments
8 Comments
Hey all just a heads up that other people are working on this see here: http://www.tomtaylor.co.uk/blog/2007/04/17/play-it-again/#comment-12945 and http://www.jpstacey.info/blog/2006/12/06/realplayer-to-mp3-a-configurable-python-wrapper/ I've been using JP staceys python script and it works very well it'd be lovely to see a fully developed GUI for this or perhaps a Konqueror pluggin? Keep up the good work! Child
A cool idea would be to borrow some code from Alienbbc (the plugin for slimserver) that parses the "Listen again" pages at BBC and lets you select programs from a menu and webpage.
Yeah that could be cool. Maybe if I have time...
with my pron sites but I couldn't compile on my system (qmake-qt4 & make or qmake & make). Following is the error: [root@maya KeepListening]# make cd src && /usr/lib/qt4/bin/qmake-qt4 src.pro -unix -o Makefile cd src && make -f Makefile make[1]: Entering directory `/opt/KeepListening/src' /usr/lib/qt4/bin/uic DownloadWindow.ui -o ui_DownloadWindow.h g++ -c -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -D_REENTRANT -Wall -W -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -I/home/t/Projects/KeepListening/src/libreal/stream -I/home/t/Projects/KeepListening/src/libreal -I. -I. -o keeplistening.o keeplistening.cpp In file included from downloader.h:4, from keeplistening.h:12, from keeplistening.cpp:4: libreal/stream/stream.h:4:20: error: mp_msg.h: No such file or directory In file included from libreal/stream/stream.h:5, from downloader.h:4, from keeplistening.h:12, from keeplistening.cpp:4: libreal/stream/network.h:14:20: error: config.h: No such file or directory libreal/stream/stream.h: In function ‘int stream_read_char(stream_t*)’: libreal/stream/stream.h:128: error: ‘stream_fill_buffer’ was not declared in this scope libreal/stream/stream.h: In function ‘int stream_read(stream_t*, char*, int)’: libreal/stream/stream.h:209: error: ‘stream_fill_buffer’ was not declared in this scope libreal/stream/stream.h:212: error: ‘MSGT_DEMUX’ was not declared in this scope libreal/stream/stream.h:212: error: ‘MSGL_WARN’ was not declared in this scope libreal/stream/stream.h:212: error: ‘mp_msg’ was not declared in this scope libreal/stream/stream.h: In function ‘unsigned char* stream_read_line(stream_t*, unsigned char*, int)’: libreal/stream/stream.h:227: error: ‘stream_fill_buffer’ was not declared in this scope libreal/stream/stream.h: In function ‘int stream_seek(stream_t*, off_t)’: libreal/stream/stream.h:255: error: ‘MSGT_DEMUX’ was not declared in this scope libreal/stream/stream.h:255: error: ‘MSGL_DBG3’ was not declared in this scope libreal/stream/stream.h:255: error: ‘mp_dbg’ was not declared in this scope libreal/stream/stream.h:266: error: ‘stream_seek_long’ was not declared in this scope libreal/stream/stream.h: In function ‘int stream_skip(stream_t*, off_t)’: libreal/stream/stream.h:277: error: ‘stream_fill_buffer’ was not declared in this scope make[1]: *** [keeplistening.o] Error 1 make[1]: Leaving directory `/opt/KeepListening/src' make: *** [sub-src-make_default] Error 2 Another thing, it couldn't be launched properly when I opened the .ram files with the keeplistening binary. What I need to do is open it in terminal and then paste the rstp://xxx url into it. There is a lot of message on the terminal. It would be nice if u minimize the output (or add some option to do so). I am using FC6. Thanks anyway. It solved a big problem of using long command line with mplayer whenever I had to download the nasty porns...always streaming using rstp protocol...phew!! well, one of my downloads is just finished....but the window is still open...plz add an auto-close feature after completion. Many downloads means I have to click on the close buttons many times ;)
Thanks for the feedback! I'll try to fix those compilation errors. And I can turn all the output off - forgot I left mplayer's logging on. "it couldn't be launched properly when I opened the .ram files with the keeplistening binary" Weird, what happens when try, and what is the location and content of the ram file?
thanks. I am looking forward to have the improvements. Well, below is the content of the .ram file I fed to this app. The file is created (0 size) but no stream downloaded. The .ram file: ## The following two video clips play for RealOne Player and later: ## .RAM_V3.0_START ##rtsp://abc.def.com/protected/823k2hckssso9/realmedia/rm_9/k9823702jw_9.RM?wid=9823&prod=aksjd-aksjdak ## .RAM_V3.0_END ## The following two clips play for RealPlayer G2 through RealPlayer 8: rtsp://abc.def.com/protected/823k2hckssso9/realmedia/rm_9/k9823702jw_9.RM?wid=9823&prod=aksjd-aksjdak --stop-- ## The following two clips play for RealPlayer 5 and earlier: rtsp://abc.def.com/protected/823k2hckssso9/realmedia/rm_9/k9823702jw_9.RM?wid=9823&prod=aksjd-aksjdak I have changed the name of the link for obvious reasons. However, the structure is same. good luck!!
Thanks for adding the feature of automatic close and ignoring comment lines starting with ## in .ram files. It is working well. However, how is the behavior when a .ram file contains two non-commented rstp links?? Also, is it possible to add multiple downloads in a single window....not serially, rather, simultaneously?? I mean, a feature to add 2+ media-links and start these links download simultaneously. I am asking because we can use this app efficiently in simultaneous with kshutdown app (which offers a feature to shutdown the computer when some particular program ends...in this case, your app). If I use multiple download in multiple windows, it is hard to detect which one will end last and hence can't use the aforementioned feature. Thanks a lot. please keep up the good work.
Yeah currently it only looks at the first rtsp link. I like your suggestion for multiple downloads. I'll probably do it when I have time - shouldn't be too hard. Also for now if you want to shutdown after they are all finished you could do it based on time. E.g. if you are downloading an hour long programme, tell it to shut down in an hour and 10 minutes. That assumes you know how long it is in advance though.