I'm building a website that will eventually host educational how-to videos that intend to charge for via subscription based services. I am using Firebase and have done some research for the best ways to do this.
I've come to the conclusion that hosting videos on your own storage isn't trivial and cost efficient. So my question is if using YouTube's API is the right choice?
Here are my pros and cons:
PROS
Leverage YouTube's storage
Better user experience
Option to leverage YouTube platform for views, user signups, traffic, etc
CONS
Need to have users authenticate with YouTube
Privacy of content will be able to be set in two different places (on website thru api, on youtube).
Less reputable business if not hosting own content
I looked around and did not see sites using YouTube in such a way. Obviously if successful the end solution should be in-house, but prior to that it seems like going with YouTube API for a startup is a better choice.
Related
We are building an application that manages video campaigns on DV 360. It includes uploading and changing a lot of YouTube videos on a daily basis.
We found that the YT Data API allows us to upload about 5 videos daily before we exhaust the API quota. We requested an extension via the public form. But there is no public information about the SLA for that form or how to get additional Dev support with the API. Which we will need, as our use case is different from the typical API user (apparently).
Has anybody gone through this process successfully and/or found a way to get Dev Support from Google for the YouTube Data API?
Thanks!
Your questions are indeed very much pertinent.
I can state -- based on my experience monitoring the tags youtube-data-api and youtube-api for more than three years -- that there's no official info related to SLAs and Dev Support here on SO.
The YouTube Data API is officially a free of charge API. But that does not exclude the possibility of Google offering this API under different conditions to clients willing to pay for the services provided to them.
I'd recommend to address your issues directly to Google, either through its own issue tracker site, or through its own support forum.
I requested more quota and after months of back and forth YouTube decided to revoke my API key for 'reverse engineering' the API. I am not intending to reverse engineer anything and followed the developer policies closely. My app is described at https://playsiv.com
Can anyone help guide me as to how to open a line of communication with the API team so I can resolve their concerns and obtain the desired quota limit to launch my app.
Thanks!
(Disclaimer: Please note the fact that I'm not a Google employee, neither am affiliated or connected in any way with this company; am only using its public APIs, as many others do.)
A first question that pops into my mind: are you using web-scraping over YouTube? That's forbidden by section III.E.6 of DTOS.
To my understanding, your app employing reverse engineering (if it actually does that; I cannot know) means that the app makes use of undocumented YouTube APIs. That's forbidden by section III.D.7 of DTOS.
A first look at one of app's web page made me think that the app downloads video content from YouTube -- if it does not, I honestly misunderstood that page's descriptions. Downloading video content from YouTube does imply using undocumented APIs and, indeed, reverse engineering.
I'm trying to develop an open source solution which will be deployed on Raspberry Pi's or similar SBCs. The RPi part is only relevant insofar as it means all the code and app resources need to be publicly available.
The solution needs to read Twitter statuses, as close to real time as possible, and with as little interference from third parties as possible. I found Twitter's Streaming API, which is blazingly fast, and would be perfect for my application – except it requires OAuth. And as far as I can tell, the OAuth mechanism isn't well suited for deployment on users' machines, since it relies on a secret key which belongs to the application owner (the consumer secret).
I couldn't find any easy way around this – the only solutions I could think of are either handling request signing on a central server, or asking each user to create their own Twitter app account. And I find both solutions terribly distasteful.
Do you see any elegant way out?
It turns out this is indeed not currently feasible cleanly with any of Twitter's public APIs; not now, and not in the foreseeable future. Refreshingly, for once we do have proof for a negative: I also asked this on Twitter's own forum, and I was lucky enough to have my question kindly answered by Andy Piper, Global Lead Developer Advocate at Twitter. There you go.
Your app can open a web browser with Twitter's application authentication webpage loaded. When the user enters their credentials Twitter will return a code which they can copy/paste into your app. It's not particularly elegant. Here is a Python example of the workflow: https://github.com/geduldig/TwitterAPI/blob/master/examples/oauth_test.py
I want to develop some stuff with the twitter streaming API and twitter4j in university. I read now about shutting down the share-count API (https://blog.twitter.com/2015/hard-decisions-for-a-sustainable-platform). Will this effect the twitter streaming API and how it works in any way? Because I need this service for at least 6 month.
The Share-Count and the Streaming API do not cross paths, actually you can obtain the share-count from the Streaming API data as suggested in this post.
Since they are discontinuing that service, it will have no effect on the data that you're able to obtain from the Streaming API so it won't effect the progress of your project.
As far as GNIP goes, that's overkill, it should not have been suggested at all. For research base, especially during initial stages and possibly later phases, the Streaming API will provide you with excellent amount of data. You can even request a limit increase through Twitter's Sale Department but it's up to them to make the final decision. They can be contacted at data-sales#twitter.com
Share count and streaming are totally separate APIs.
If you need guaranteed access, I suggest paying for Twitter's GNIP service - https://www.gnip.com/
Recently, YouTube decided to make video tags unavailable publicly. So to get the tags for a given video, I need to make an authenticated request to the API as the owner of the video. This is not a problem in my case as I'm fetching my own videos.
However, I'm confused about the authentication flow since YouTube strongly recommends to use OAuth2. Since I'm always going to authenticate as the same user (the owner of the video, aka myself), I definitely don't need to have any browser page for the actual user of the app to do anything. I see how I could have done it using ClientLogin (hardcoding login and password into the app) but I'm not sure how to approach this using OAuth2.
One last detail - that is not necessarily relevant since a high-level answer would be enough - is that I'm developing on iOS. Also I looked at this https://developers.google.com/accounts/docs/OAuth2 and particularly the web server case which seems closest to mine but was not able to get a clear idea from it.
Thanks in advance for your help and don't hesitate if you need me to be more specific.
There is no OAuth flow that supports your use case.
In general, you should not be distributing your YouTube login as part of your application. Even if this were available via ClientLogin, after a certain number of logins, you would likely be presented with a challenge because the authentication servers would detect a strange usage pattern.
OAuth is not for distribution a single user's login to a large N, where N is the number of users of your application. OAuth is meant for your application to act on behalf of an end user, and because tags are no longer exposed to end users through the UI, it does not make sense to expose them to users via the API either. More details can be found here:
http://apiblog.youtube.com/2012/08/video-tags-just-for-uploaders.html
How many videos do you have? What is the purpose for needing the tag metadata? From a pragmatic perspective, here are a few alternative implementations that would be easier and would not require users to log in as you:
Store a single file mapping video IDs to tags on a server somewhere and fetch this periodically. Google App Engine is a good place to do this.
Put the tag data in the description in a predictable format (you host the videos), and generate the metadata from this.