Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
PPCMC 7.2.8 Changelog so far...

* Native Intel build.
* Complete rewrite to using a universal bash script for web interface and GUI.
* Specify your desired resolution once (480p, 720p, 1080p) and it will download the highest closest resolution instead of getting errors about some specific resolution not being available for a specific video and having to start all over.
* Functional equivalent web interface.
* Updates to open source software suite and certificates.

I am running GCC 4.0/10.4SDK into the ground kicking and screaming :). YT-DLP continues to support Python 3.10 (the last C99 compatible version, which still needs tons of patches).I will be quite sad when they drop python 3.10 support.

Thanks for your work
Not sure if it can help in any way , but there is this site for YouTube for nokias,
Also works on PowerPC

 
Can confirm, s60tube allows smtube to search it's site and grab urls for streaming with mplayer. It all works on Tiger. Good find!
Nice! Reminder safari can still grab urls, and you can use the PPCMC Web Interface on anything from Netscape on Mac OS 9 to your latest iPhone to download urls for playback later on your PPC or early intel Mac.

Another exciting feature for the next update I hope I can work out is “beam”. Basically send a url to your ppc Mac from any device on your LAN/same Wi-Fi, and not only will it download the video it will auto play it on said Mac.
 
  • Like
Reactions: z970
I've been wanting to make a thread about this for the longest time now but can never get around to it, so I'll just leave this here and hopefully people will notice...

This site accepts most YouTube URLs and converts them into an (I believe) MP4 video file directly embedded in the browser, bypassing the advanced requirements imposed by YouTube just to access their library, and is a great alternative when Invidious either isn't available or isn't compatible with your device. Case in point, I've tested it with success on Safari 5 in both iOS 5 and OS X 10.5. Great for 1st Generation iPads and 1.25+ GHz G4s alike.


The Internet Archive has also saved versions of their website dating back to 2019, so it's a safe assumption that it will probably continue to function into the future and not abruptly break or disappear like tonvid.com, ytprivate.com, and iteroni.com in the past (who remembers MacTubes and YouView?).

I think S60Tube is even better for weaker / older systems though, besides PPCMC (on the Mac end, that is). These frontends are both joined by the ranks of curated video libraries such as Bolkonskij's Cornica.org and Protoweb's Warpstream.org specially-designed for our vintage systems.

PS: Here's another vote for inv.nadeko.net. The guy behind this instance is ingenious for coming up with the backend system and deserves all of the accolades; hopefully other instances will copy his approach to better distribute server load and revive Invidious from almost dying.
 
Nice! Reminder safari can still grab urls, and you can use the PPCMC Web Interface on anything from Netscape on Mac OS 9 to your latest iPhone to download urls for playback later on your PPC or early intel Mac.

Another exciting feature for the next update I hope I can work out is “beam”. Basically send a url to your ppc Mac from any device on your LAN/same Wi-Fi, and not only will it download the video it will auto play it on said Mac.

BTW, if this is of any interest, you are welcome to submit a port for PPCMC. (I can help with writing it, if you aren’t familiar enough with MacPorts specifics.) I dunno if we already have all dependencies, but if not, it should be easy to add missing ones.
 
  • Like
Reactions: alex_free
I've had to update yt-dlp twice in the past 24 hours, and both times it worked so I can continue watching 720p videos on my MacBook running tiger. This is my youtube downloader updater code, and is why the PPCMC7 youtube downloader updater works better then your linux distro :) thinking about doing a check for if it hasn't been ran in the past day, and automatically doing so for PPCMC 7.2.8. Youtube sure is getting agressive. Thats why I decided in even 2024 when PPCMC 7.2.7 was release to NOT wait on official releases, and to instead download the actual github repo source tree so as soon as commits are put in we get them. It's already faster to use the decompressed python __main__.py anyways, win-win.
1755961567664.png
 
Last edited:
It actually works, I've been wanting to do this since 2020. You can set your preference saying "I want 720p" or "I want 480p". Then:

1. Attempts 720p download.
2. If 720p doesn't exist, checks the available formats that do exist.
3. Gets the highest resolution actually offered by youtube, so could be 480p, 360p, etc. (this is dependent on video).
4. Downloads that.

No more will you try to download a video at i.e. 480p and leave with nothing but an error, having to start all over again.

This also works with the newer video formats via an optional setting, but that seems to be not compatible with legacy VLC/QuickTime. More testing will need to be done to see if it works with FFplay/makes sense to implement since these may now just be the same quality videos at a lower bitrate set due to more advanced/cpu intensive encoding.

Bash:
# $1 is requested URL.
# $2 is download filepath. This needs to be an argument because if we are downloading+converting that needs to be a temp dir!
download_youtube_video_requested_format()
{
    #$youtube -F "${1}"
    # Request to download requested video format+M4A 128KB/s AAC combined.
    if ! $youtube -f "$requested_format"+140 "${1}" -o "$2"/"%(title)s.%(ext)s"; then
        # Error handling. Requested format did not exist... so what about lower resolutions?
        formats="$($youtube -F "${1}")"
        echo $formats
        # Check higher bitrate set first, because if that doesn't exist for this specific video, we need to drop into the lower bitrate set gaurenteed to exist.
        if [ "$download_quality" = "high" ]; then
            # Find lines containing 'avc1' and sort them by format number in reverse order. If this format set exists we will never get to the lower bitrate format set. If it doesn't we will skip format 160 (144p lower bitrate) and drop into 133-137 range. Full highest bitrate set for H.264 (AVC1) video is:
            # * 394 (144p).
            # * 395 (240p).
            # * 396 (360p).
            # * 397 (480p).
            # * 398 (720p).
            # * 399 (1080p).
            # Check UP TO the requested format, but NO LOWER then 394 (144p).
            highest_supported_format="$(echo "$formats" | grep 'mp4' | awk -v req="$requested_format" '$1 >= 394 && $1 <= req' | sort -t ' ' -k1,1nr | head -n 1 | awk '{print $1}')"
            # Did we get anything??
            if [ -z "$highest_supported_format" ]; then
                echo "Info: unable to get any video format in the higher bitrate set. Trying lower bitrate set."
                download_quality=low
                # Want to get the same res now in the lower bitrate set. 399-137=262 difference.
                requested_format=$((requested_format - 262))
                echo "Trying format: $requested_format"
            else
                echo "Got format "$highest_supported_format""
                $youtube -f "$highest_supported_format"+140 "${1}" -o "$2"/"%(title)s.%(ext)s"
            fi   
        fi

        # NOTICE: this is not an elif or else because the above COULD trigger this.
        if [ "$download_quality" = "low" ]; then
            # Find lines containing 'avc1' and sort them by format number in reverse order. Ignores everything after 137 (higher quality set of AVC1). Ignores format 160 (144p) because 240p is always available and that seems like a pain in the ass to implement. Full lower bitrate set for H.264 (AVC1) video is:
            # * 160 (144p) (ignored, never downloaded see above).
            # * 133 (240p).
            # * 134 (360p).
            # * 135 (480p).
            # * 136 (720p).
            # * 137 (1080p).

            
            # Check UP TO the requested format, doesn't check format 160 since if that is what was originally desired it is a non-issue.
           # highest_supported_format="$(echo "$formats" | grep 'avc1' | awk '$1 <= 137' | sort -t ' ' -k1,1nr | head -n 1 | awk '{print $1}')"
            highest_supported_format="$(echo "$formats" | grep 'mp4' | awk -v req="$requested_format" '$1 <= req' | sort -t ' ' -k1,1nr | head -n 1 | awk '{print $1}')"

            if [ -z "$highest_supported_format" ]; then
                echo "Error: unable to get any video format. Try updating the youtube downloader!"
                exit 1
            fi
    
            echo "Got format "$highest_supported_format""
            $youtube -f "$highest_supported_format"+140 "${1}" -o "$2"/"%(title)s.%(ext)s"
        fi
    # It worked first try!
    fi
}
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.