Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

General Discussion

Deleted User

Download Course Videos?

Hi I am getting an error message when I try to download the course videos. "Safari cannot open the website because the address is invalid" (im using an ipad) The wifi network at work is very slow so it would be very handy to download them to view offline during the day. Is anyone else experiencing this? Cheers Shane

14 Answers

Mike Croft
Mike Croft
7,463 Points

All I know is it tries to open itunes from the browser, I'm not sure if ipads can do that, on my widows computer I don't don't have itunes installed and I get the same error, on os x it works fine.

I have found the best way to view a downloaded video offline on my iPad is by using Goodreader or a similar iPad app.

This is the process I follow:

  1. Download the video to my Mac/PC
  2. Upload the video to my Dropbox account
  3. Connect to my Dropbox account with Goodreader
  4. Download the video to my iPad via Goodreader

Then, I am able to watch the video offline through Goodreader. It may seem like a complex process, but it works quite well.

Mike Croft
Mike Croft
7,463 Points

is it not possible to transfer, from iTunes to iPad?

Deleted User

I have had a look on iTunes, but a search for treehouse didn't return relevant hits. What should I search for?

Thanks for your responses, btw

Shane

Mike Croft
Mike Croft
7,463 Points

I can't find them either, best bet, if no one else can find anything, is to wait til your at a computer with iTunes installed, click the link on Treehouse webpage then click the subscribe button on iTunes, you'll get a list of all the videos, download what you want from the list then transfer them across.

You shouldn't need iTunes. Just download the mp4 video from the link at the bottom/side of the course page via your browser on your PC or Mac.

Right-click (or CTRL+click on a mac) and Save as...

Deleted User

Thanks guys. My computer is Linux based, so I don't have iTunes there. But I will try your suggestions Rhys. That sounds like it will work. Shane

Just moved onto an Ubuntu desktop and struggling to find an efficient way to watch the videos. The desktop is somewhat old and both firefox and Chromium don't appear to stream the videos too well (they are embedded as HTML5 I think?). I've tried setting it to Flash videos, via the link (hidden in the forums someplace - Is it easier to find?), and that still fails. Tried running iTunes under Wine and it fails to even run. Any ideas Linux/Treebies?

PS: I don't want to download each video individually - I'd rather stream them or download all of them.

Hope someone can help please?

Hi, I have been trying to download the videos via Itunes, but all it does after clicking the download feed button is open itunes, and I cant download anything to PC. Can someone help please?

I had the same problem on a PC, if you right click the link, copy the link location url, and then paste the url into your browser but remove the "itpc" prefix and replace it with http to get something like this:

http://teamtreehouse.com/library/websites/build-a-simple-website.rss?feed_token=5181ebee-3756-4bf6-8339-xxxxxxxxxxxxxxxx

you should then get an RSS version of the page with clickable, saveable mp4 file. I then imported the video to itunes.

Note to Treehouse: my expectation was that i would open the app and hit a download button next to the video i wanted to watch later when offline.

cheers

i then went into itunes and imported the new video files.

Run this on a server to get download links in one central location

<?php 
// Place your own unique token here
// ie. itpc://teamtreehouse.com/library/websites/build-a-simple-website.rss?feed_token=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 
// $token = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
$token = '';

// Place any itunes feeds here
// This is an almost complete list... I left off some beginner lessons
// This might compile slowly depending on server... You can split this array up

$urls = array(
'itpc://teamtreehouse.com/library/installing-a-ruby-development-environment.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/how-to-build-a-wordpress-plugin.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/implementing-designs-for-iphone.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/illustrator-foundations-3.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/usability-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/logo-design-basics.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/html-email-design.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/objectivec-basics.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/framework-basics.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/sass-basics.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/installing-a-ruby-development-environment.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/how-to-build-a-wordpress-plugin.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/implementing-designs-for-iphone.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/illustrator-foundations-3.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/usability-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/logo-design-basics.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/objectivec-basics.rss?'.$token,
'itpc://teamtreehouse.com/library/ios-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/build-a-simple-iphone-app-ios7-2.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/build-a-simple-php-application.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/building-social-features-in-ruby-on-rails.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/build-a-simple-ruby-on-rails-application.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/enhancing-a-simple-php-application.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/using-php-with-mysql.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/advanced-social-features-in-ruby-on-rails.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/database-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/ruby-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/introduction-to-programming.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/console-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/programming/git-basics.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/build-a-responsive-website.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/design-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/build-an-interactive-website.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/how-to-build-a-wordpress-theme.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/html.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/css-foundations-2.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/website-basics.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/aesthetic-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/javascript-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/photoshop-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/accessibility.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/technology-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/websites/illustrator-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/ios-development/build-a-simple-iphone-app.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/ios-development/build-a-blog-reader-iphone-app.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/ios-development/build-a-selfdestructing-message-iphone-app.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/ios-development/ios-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/business/how-to-start-a-business.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/business/how-to-build-your-company.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/business/how-to-market-your-business.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/business/careers-foundations.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/business/copyright-basics.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/business/how-to-run-a-web-design-business.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/business/how-to-build-your-business-through-blogging.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/android-development/build-a-simple-android-app.rss?feed_token='.$token,
'itpc://teamtreehouse.com/library/android-development/build-a-blog-reader-android-app.rss?feed_token='.$token
);

foreach ($urls as $url):
    $url = str_replace("itpc://","http://",$url);
    $xml = simplexml_load_file($url);

    echo '<h2>'.$xml->channel[0]->title.'</h2>';
    foreach ($xml->channel->item as $pixinfo):
        $title=$pixinfo->title;
        $link=$pixinfo->enclosure['url'];
        // In chrome the HTML5 download attribute will auto download, no right clicking necessary
        // Hold Alt plus Click will autodownload
        echo '<a href="'.$link.'" download>'. $title .'</a><br>';
    endforeach; 

endforeach; 



?>
Rushil Patel
Rushil Patel
1,664 Points

How do you find your token??

I wrote this small python parser. It returns a list of curl commands ready to create the dirs and rename the downloaded files You can locate the itpc link along with the token by going to the course page and copying the itunes link.

python parser.py itpc://teamtreehouse.com/library/how-to-run-a-web-design-business.rss?feed_token=3453456457657asdfsdfsfd

#parser.py
import string
import sys
import urllib
import xml.etree.ElementTree as ET

arg=sys.argv[1]
feed=arg.replace("itpc://", "http://");

def formatString(unformatted):
    unformatted=unformatted.lower()
    unformatted=unformatted.strip()
    unformatted=unformatted.replace("treehouse - ", "");
    unformatted=unformatted.replace("&", "and");
    unformatted=unformatted.translate(None, "'?()")
    unformatted=unformatted.replace("  ", " ");
    unformatted=unformatted.replace(" ", "-");
    formatted=unformatted.replace("--", "-");
    return formatted

def getList(listOfDicts, key):
    return [i[key] for i in listOfDicts if key in i]

i=0
nChapter=0
nEpisode=0
oldChapter=''
extension='.mp4'

try:
    f=urllib.urlopen(feed)
    s=f.read()

    episode=dict()
    repository=list()

    root = ET.fromstring(s)

    for channel in root.iter('channel'):
        course=formatString(channel.find('title').text)

        for item in channel.iter('item'):
            t=item.find('title').text
            title= t.split(': ')

            chapter=formatString(title[0])
            name=formatString(title[1])

            url=item.find('enclosure').get('url')

            episode['course']=course
            if oldChapter != chapter:
                 nChapter=nChapter+1
                 nEpisode=1
            episode['chapter']=format(nChapter,"02d")+'-'+chapter
            episode['name']=format(nEpisode,"02d")+'-'+name
            episode['url']=url
            episode['filename']=episode['name']+extension

            repository.append(episode.copy())

            i+=1
            nEpisode+=1
            oldChapter=chapter

    for ep in repository:
        output='treehouse/'+ep['course']+'/'+ep['chapter']+'/'+ep['filename']
        print "curl --limit-rate 800K -L --create-dirs -o "+output+" "+ep['url']

except:
    print "Error"
Jonathan Obino
Jonathan Obino
3,155 Points

I have developed a little web app where you can insert your token and you can download videos from teamtreehouse http://jonathanobino.16mb.com/treehouse/

how can i download the videos please ?,

Replace the itpc with https in the link. It's not as computer fancy as others; but you'll be able to to see the RSS Feed as links of downloads. It's a start.