Skip to content

Instantly share code, notes, and snippets.

@stefanschmidt
Forked from anonymous/gist:276271
Last active February 21, 2017 19:46
Show Gist options
  • Save stefanschmidt/923607 to your computer and use it in GitHub Desktop.
Save stefanschmidt/923607 to your computer and use it in GitHub Desktop.
The Daily Show Downloader
#!/bin/bash
#
# This script depends on curl and rtmpdump.
# For playback I recommend mplayer.
# Suggestions are welcome.
#
RTMPDUMP="rtmpdump" # the name of the binary
set -eu
if [ $# = 1 ] && [ ${#1} = 6 ] ; then
ID="$1"
elif [ $# = 1 ] && echo "$1" | grep -E -q "http://media.mtvnservices.com/mgid:cms:[^:]+:comedycentral.com:[0-9]+" ; then
ID=`echo "$1" | cut -d : -f 6`
elif [ $# = 1 ] && echo "$1" | grep -E -q "http://.+" ; then
if ! ID=`curl -s "$1" | sed -En 's/.*"video_([0-9]+)".*/\1/p'`; then
echo "error: could not extract video id"
exit 1
fi
else
BA=`basename "$0"`
echo "usage:"
echo " $BA \${ID}"
echo " $BA http://www.thedailyshow.com/full-episodes/\${ID}/title-of-the-episode"
echo " $BA http://www.thedailyshow.com/watch/some-kind-of-date/title-of-video"
# echo " $BA http://www.comedycentral.com/colbertreport/full-episodes/index.jhtml?episodeId=\${ID}"
echo " $BA http://www.colbertnation.com/full-episodes/date-and-title-of-the-episode"
echo " $BA http://media.mtvnservices.com/mgid:cms:item:comedycentral.com:\${ID}"
echo " $BA http://media.mtvnservices.com/mgid:cms:video:comedycentral.com:\${ID}"
echo " $BA http://media.mtvnservices.com/mgid:cms:fullepisode:comedycentral.com:\${ID}"
exit 1
fi
echo "ID = $ID"
RTMPDUMP_OPTS="--swfUrl "http://media.mtvnservices.com/player/prime/mediaplayerprime.1.7.0.swf" --swfsize 1983727 --swfhash 0884b06decee5e866a24792f198b4b88f7232e9da92f1e5520ca330822f0d4f9 --resume"
GEN_URL="http://shadow.comedycentral.com/feeds/video_player/mrss/?uri=mgid%3Acms%3Aepisode%3Acolbertnation.com%3A{$ID}"
PARTS=`curl -s "$GEN_URL" | grep media:content | grep -v bumper | sed -En 's/.*url="([^"]+)".*/\1/p'`
echo -n "PARTS = " ; echo $PARTS
FILENAMES=""
# download parts in parallel
for X in $PARTS ; do
VIDEO_URL=`curl -s "$X" | sed -En 's/.*rtmpe([^<]+)<.*/rtmp\1/p' | tail -1`
echo "VIDEO_URL = $VIDEO_URL"
FILENAME=`basename "$VIDEO_URL"`
$RTMPDUMP $RTMPDUMP_OPTS -o "$FILENAME" -r "$VIDEO_URL" &
FILENAMES="$FILENAMES $FILENAME"
done
wait
# here is an example of how you can combine the parts into a proper video:
# NOTE: downloaded files are not actually in mp4 format!
#
#mv ds_15001_01_640x360_1300.mp4 ds_15001_01_640x360_1300.flv
#mv ds_15001_02_640x360_1300.mp4 ds_15001_02_640x360_1300.flv
#mv ds_15001_03_640x360_1300.mp4 ds_15001_03_640x360_1300.flv
#mv ds_15001_04_640x360_1300.mp4 ds_15001_04_640x360_1300.flv
#
#ffmpeg -acodec copy -vcodec copy -i ds_15001_01_640x360_1300.flv ds_15001_01_640x360_1300.mp4
#ffmpeg -acodec copy -vcodec copy -i ds_15001_02_640x360_1300.flv ds_15001_02_640x360_1300.mp4
#ffmpeg -acodec copy -vcodec copy -i ds_15001_03_640x360_1300.flv ds_15001_03_640x360_1300.mp4
#ffmpeg -acodec copy -vcodec copy -i ds_15001_04_640x360_1300.flv ds_15001_04_640x360_1300.mp4
#
#MP4Box -add ds_15001_01_640x360_1300.mp4 -cat ds_15001_02_640x360_1300.mp4 -cat ds_15001_03_640x360_1300.mp4 -cat ds_15001_04_640x360_1300.mp4 -new ds_15001.mp4
#
echo
echo "play it with:"
echo "mplayer -fixed-vo -fs${FILENAMES}"
@GevaZeichner
Copy link

Hi, is it still working?
This is what I get:

./daily-show-downloader.sh http://www.colbertnation.com/full-episodes/tue-january-28-2014-justin-tuck
ID = 
PARTS = 

play it with:
mplayer -fixed-vo -fs

@stefanschmidt
Copy link
Author

It's a fork from another gist and to be honest I just used it once or twice some years ago. That said I fixed a couple of the issues. The extraction of the video id, the parts and the video urls should work now. What seems to be missing is the correct rtmpdump configuration. You can probably get it by using rtmpsuck or rtmpsrv. If you get it to work let me know so I can patch the outstanding issues. Good luck!

@mpappasx
Copy link

rlly old I know, but was this ever fixed?

@zjpleau
Copy link

zjpleau commented Nov 15, 2016

Sorry to bother you but is there any way you could update this again? Also, did you manage to rip the full shows yourself?

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment