Youtube has finally destroyed their RSS feeds

A few days ago they turned off the v2 API in favor of v3, but v3 has no mechanism to get an RSS feed (or any other kind of listing) of a Youtube user's uploaded videos without authenticating first.

Because RSS feeds are not a thing that you should want.

Youtube: every day, making everything worse, in every way.

I don't know if anyone but me is using my youtubefeed program, but if you are, and you had Youtube users in your feeds list, you'll need to upgrade, and cope with the horrible fact that it now has a dependency on youtube-api.pl. (You'll need the latest version of that, as well as of youtubedown.)

But using youtube-api.pl at all means that first you have to jump through a bunch of hideous hoops to generate authentication keys and session IDs, pretty much ensuring that it's far too much of a pain in the ass for anyone to actually use it. Are you using it? Let me know.

Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.

Tags: , , , , , , , ,

40 Responses:

  1. We did some feedly back end work so that RSS feeds are transparently migrated in the background to v3 APIs. This way as a user, you continue to get yours feeds.

  2. E says:

    They have a new URL for RSS feeds that don't require authentication.

    https://www.youtube.com/feeds/videos.xml?channel_id=CHANNELID
    https://www.youtube.com/feeds/videos.xml?user=USERNAME

    They aren't quite the same, and may have some rate limiting, but might be an option for you.

  3. Leo says:

    Yep, they broke the YouTube feeds in my feed reader. It's exasperating.

    • Asm says:

      It's fucking google. Making the world a worse place, one fucked up feature at a time. I cannot for the life of me figure out why anyone actively defends them these days.

      (Not that any of the other tech giants are any better.)

  4. The newsblur users have been discussing this for the last few days, one of them made this: http://morning-retreat-1911.herokuapp.com/

    Discussion here:
    https://getsatisfaction.com/newsblur/topics/youtube-eliminating-support-for-rss-atom

  5. Rena says:

    I am increasingly convinced that Youtube is deliberately making their UI as awful as possible.

  6. Parismania says:

    By the way, I don't know if the Funker Vogt's new guys are nazis, but I know sure the author of this blog is an assole. Un trou du cul comme on dit en France

  7. nooj says:

    Exactly on schedule, v2 is fully gone.

    Anyone know if there is a way to do search in v3 without authenticating? I heard a rumor that you could do some of that, just not get all the video's details. Also, anonymous search still works from a browser, of course.

  8. Michael says:

    Is there any way to get the extra information back such as the thumbnail and the author comments in the "show more" bit that the old one had?

  9. I used the feed to include our Youtube videos on our website (and be able to search them using a keyword).

    The new URL would be https://www.youtube.com/feeds/videos.xml?user=woltexnl

    Problem that I encountered is that when I test it with a Youtube user with a lot of vidoes it only shows the last 15.
    https://www.youtube.com/feeds/videos.xml?user=robberthardwell

    Not a huge problem at the moment but it will be once we added the 16th video. Is there any way to add commands to show more or show the next 15?

    With the old RSS you could give additional commands.
    This gave the first 50.
    http://gdata.youtube.com/feeds/base/users/robberthardwell/uploads?orderby=updated&v=2&client=ytapi-youtube-rss-redirect&alt=rss&start-index=1&max-results=50

    This gaves the next 50:
    http://gdata.youtube.com/feeds/base/users/robberthardwell/uploads?orderby=updated&v=2&client=ytapi-youtube-rss-redirect&alt=rss&start-index=51&max-results=50

    I tried these additional comments to the new feed but they don't work. :(
    Any alternative?

  10. Wolf says:

    I'm using both v2 and v3 API together at the moment, but as long as some of the v2 calls are working, I will try to get it working again using pure v2 API.

    My Uploads listing routine does 2 calls. The first against v3 API to get user id/channel id:
    https://www.googleapis.com/youtube/v3/channels?part=id&forUsername=username&key=your_api_key
    And the second against the v2 API, getting access to the uploads playlist ("UU" + channel id/user id), which may be not up to date (usually a few minutes to hours behind). But this suppresses the "device not supported" video.
    However, since its a playlist and has some restrictions in v2 API, you cannot access entries higher than 1000.

    The playlist lister works as before, as it has not been partly or totally disabled and returns the usual feed:
    http://gdata.youtube.com/feeds/api/users/username/playlists?start-index=1&max-results=50&v=2

    To prevent additional calls against the v3 API (which can sum up), I store the uploads playlist id temporary, as long as it is the same channel/user.

    I'm planning to retrieve the channel/user id using v2 API, so it does not call against v3 API (which requires authentication because of the API key).

    • nooj says:

      Is anyone doing search with v3?

      I can't find documentation/examples of what urls to load for a search! All google's docs show examples using their libraries. I'm using perl, there is no library offered. The "API Explorer" works without authentication, and I can't figure out how to get it to show me search WITH authentication!

      Also, updating tokens is a nightmare; I guess I can do that with jwz's youtube-api.

        • nooj says:

          so that actually works? that's what i can't confirm.

          because i've tried it, and got some "invalid key" error. maybe the token had expired, even though they're supposed to last for 60 minutes. or maybe you're supposed to immediately refresh it after creating your "project". or "token" != "api_key". i don't know.

          • jwz says:

            Sounds like some of this confusion would go away by adding a --search mode to youtube-api.pl, since the (irritatingly complex) token refreshing logic is already handled there.

          • I found Google's "API console" to be pretty impenetrable, and my brain has ufortunately suppressed the horrors I went through trying to get things to work. But I vaguely remember that I had to add Youtube to the allowed services for my "application"? Or something?

            And I just had a peek at the console. The key is really called "API key" (and is not called "token"), and is under the "Key for server applications" box on the page for my "application".

            Google rocks, man.

            • Wolf says:

              Yes, you need to explicitly add the Youtube API to your API Console in your Developer Account, it is not activated by default.

              There is a difference between a token and an API key (at least with Google):

              A token is always session based and loses its permissions when you log out (for example). A token is generated, if you login to your Google account and, for example, allow a thirdparty application to access some of the data, which is normally protected. On most systems you keep logged in, even if you close the apps, except you uninstall the app or log out explicitly.

              An API key is used to allow an app communicate with the system the key is for and is used to restrict the access.

              • nooj says:

                Thanks guys! After reading these posts, the documentation makes so much more sense! My API Key has been created, and search works as advertised.

                --

                Another question: So there are four different kinds of "API Keys": for server applications (for making queries on behalf of other users), for browser applications (the one I want, mimics v2 access), for Android applications, for iOS applications.

                Are there different API Keys for each API (Youtube Data, Youtube Analytics, various Maps APIs, Social APIs, Cloud APIs, mobile APIs, etc., ad naseum)? It appears not. I could be wrong.

                Seems a little silly to use an "API Key" as an access restriction, but then not allow specific API Keys to be restricted to specific APIs.

                That is, if I write a mapping program, "FapMap", I would turn on a Maps API and use an API Key for that program. If I then wrote a Google Contacts program, "Grindee", I would turn on the Contacts API and use an API Key. I could even use a different API Key. But it appears to me--and correct me if I am wrong--that ALL my API Keys can access ALL my enabled APIs. Do I want this? Do I care?

                (Actually, that would be just fine. Because now I want FapMap to merge with Grindee to solve the weekend's traveling salesman problem.)

  11. Wolf says:

    Each API from Google requires its own API key, means, you can't use your Youtube key for GMaps. If you try to use the key from another API, it would simply not work.

    Server Applications: all applications running on a server system and providing some sort of network access; if you are programming a website, then this key is needed for the backend side, mostly containg the logic, e.q. written in PHP, ASP.NET, as Java Servlet or whatever.
    Browser Applications: Client-side applications running inside the browser, either as JavaScript inside a webpage or as browser addon.
    Android Applications: Client-side applications running on the Android OS, but if you are running server applications on Android (there are a few), you have to use the server key instead.
    iOS Applications: the same as with Android Applications, just for iOS

    • nooj says:

      Each API from Google requires its own API key, means, you can't use your Youtube key for GMaps. If you try to use the key from another API, it would simply not work.

      Ugh. I'm here on the Developers Console, and the APIs section (where you enable and disable APIs) is parallel with the Credentials section (where you view your API Keys). And looking at my API Keys, there is nothing to indicate a given API Key is for any particular API. Even with multiple APIs enabled, the "Create new Key" button only shows the choices Server, Browser, Android, iOS--not choices for different APIs.

      Similarly, when I look around at my enabled APIs, I see nothing that says "Hey, AAA and BBB are the API Keys that go with API XXX. CCC is the API Key that goes with API YYY."

      How would I set which goes with which? I guess I don't care, because I'm only using the one Key right now.

      • Wolf says:

        Thats just the way most other providers handle this, so it seems that Google is different and allows for all APIs the same assigned key (at least which APIs are enabled in your account).

        Since I only generated a key to use Youtube and don't need the others, I supposed it would require different keys for different APIs.

        Also it's a shame, that all v2 calls are now throwing a 410 Gone, except for comments and captions. Working with v2 was really easy.

        • nooj says:

          Fucking tell me about it. If I want to do a v3 search and rule out, say, videos with low play counts, I have to load fifty-one urls! One for the search, and one for each video. They'll happily tell me three different thumbnail urls for each video in the search results, but a play count or duration? Fuuuuuuuck no.

          With v2, I could just do the search and say, "I want the following metadata." Bam, one page load. That's the optimal number of urls to wait for and parse; how many fewer urls could it be? None. None fewer urls.

          Documentation for v2 sucked balls even harder than the current schlock, though. So that's an improvement?

  12. apurv says:

    How can I get feed for retrieving related videos?

  13. Bob says:

    Below link of Youtube feed(URL) to get most_popular video is throwing error now(Not Found)

    http://gdata.youtube.com/feeds/api/standardfeeds/IN/most_popular?time=today&v=2&alt=json

    Please help to get the different URL for the same purpose.

  14. Jane says:

    I have a page which lazy-loaded thumbnails for my playlist via the old RSS feed system. It's broken now: http://yiddishtheatersongs.com/yiddish-music-videos.html - I am not a developer so I don't know if this is fixable or I have to scrap the page completely? Help would be most appreciated!

  • Previously