Storing YouTube metadata - youtube

I've read YouTube's Terms of Service several times and have Googled this question tirelessly with no concrete answer. This is not a legal question about my specific YouTube API client, I just want to know if any YouTube developer has used the API in this way. I'm working on a side project for myself that's essentially an Instagram-YouTube mashup. I am a YouTube developer with an API key. Can my API client store a videos title, description and id in my database when my users like a video on my client? I don't know how else I can keep track of my users liked videos within my client.

Since you already specified that this is in fact not a legal question, the short answer is: Yes, you can (meaning it is possible).
There is one more possibility coming to mind, though:
You could authenticate users via OAuth 2.0 using the https://www.googleapis.com/auth/youtube scope. That way, you can manage their liked videos and add/remove videos to this list when a user clicks the according buttons on your website (you can also check if any given video is already liked by the user). In this case, all the track-keeping is done by YouTube itself. This ultimately means that whenever a user likes a video in your app, they also like it on the YouTube website. This may or may not be desired, it is for you to decide that.

Related

Getting access to YouTube Content ID API

My original purpose is to get all of the channels that a user manages. I found a code snippet that does exactly that: https://developers.google.com/youtube/partner/code_samples/python#retrieve_a_content_owner_s_managed_channels
However, it seems to rely on the YouTube Content ID API, when I run it I get the following error:
YouTube Content ID API has not been used in project ... before or it is disabled.
However, the YouTube Content ID API doesn't show in the projects console. I manage several YouTube channels, and one of them is part of the YouTube Partner Program. So, my question is, how do I get access to the YouTube Content ID API?
I've been reading about this for several hours and found several conflicting statements.
Here, saying:
As a YouTube partner, you can use the API...
Here, saying:
in order to be able to access the ContentID API, you have to be part of
the ContentID Partner Program, not the YouTube Partner Program.
However, you're not likely going to have ContentID access if you don't have major copyright management control issues
Which is weird, since the data I need has nothing to do which copyrights at all, so why would I need an API that relates to that to get it?
Here, saying:
You don't see it in the list auf available APIs, unless your account
is connected to a CMS and some time has past... It takes 7-14 days
unless the Content ID API is available for your account. This is a
information i got from the support, but they told me, that it is an
automated step.
So, which one is it? If I'm only part of the YouTube Partner Program, should I just wait for 2 weeks until the API shows up in my console?
Or does it actually require to be in the ContentID Partner Program (which is not the case here)?

Youtube v3 API comment retrieval with commentThreads.list endpoint

I am using commentThreads.list endpoint in Youtube v3 API to get all the comments for particular videos. This works well for us, however, this endpoint requires youtube.force-ssl scope which is a pretty sensitive one. The doc says that this scope is the only option. The issue is that the user gets a warning screen upon connecting the account:
At this point, users become concerned about the permissions that they are giving to our app, as youtube.force-ssl scope gives the app a bunch of sensitive permissions as "See, edit, and permanently delete your YouTube videos, ratings, comments and captions", according to the doc
Why Youtube v3 API comment retrieval with commentThreads.list endpoint requires such a sensitive scope and is there an alternative way to retrieve all comments for my videos? Now looks like the only option is to get through the verification.
P.S. I know that may seem more a discussion topic, however, that looks like an overkill to give such set of permissions to retrieve the information that is available publicly on the page, so I am looking for possible alternatives.

Is there a Youtube API endpoint to set sharing on a video within an organization?

I'm working on an app that uploads private videos to Youtube to be viewed by everyone at our organization. Luckily, Google and Youtube have an awesome company-wide permission for this, which allows for anyone with an email address within the company to view these videos.
Youtube has 3 options for video privacy status: Public, Unlisted and Private. I'd usually just go with Unlisted and call it a day, but due to the nature of these videos, I'd prefer for them to Private, then manually grant access to the video and share it with everyone at the organization. When done through the Youtube Video Manager page, here is the dialog box I'm looking for an API endpoint for:
Manual Approach
We can go through each video and check this box in each video, but that's not something that scales well. I'd love to find documentation on a Youtube API endpoint that handles this. There's a clear status.privacyStatus attribute for videos that can be set to private, public or unlisted, but nothing for this.
Does anyone know of a Youtube API andpoint to control this permission for private videos on Youtube?
I can back up the assumption from my comment that private video sharing is not possible through the Data API v3 with this article I found on the topic.
The author of the article even provides a workaround to this problem, although I strongly discourage using it, since it requires parsing sensitive account information (password) in PHP. Apart from that, the code is from 2010 and will most likely not work anymore because it is from before YouTube channels were linked to Google+ pages.

Youtube auto subcribe is possible with api v3?

I want to know how can I do auto subcribe an account with youtube api v3. Can I it to register with youtube account. For example, some script do auto post share on your twitter account.
I do not personally use YouTube API, but after looking over the YouTube Data API's documenation pages, it seems that the API supports a method to subscribe users to a channel.
The API Overview documentation page states:
A subscription resource contains information about a YouTube user subscription. A subscription notifies a user when new videos are added to a channel or when another user takes one of several actions on YouTube, such as uploading a video, rating a video, or commenting on a video.
You may view all the methods supported by the subscription resource on the subscription resource's documentation page. The method that you would need is called insert. This allows you to automatically subscribe an authenticated user to a specified channel. The insert method's description can be found on its page along with detailed usage examples. The page provides examples in Apps Script, Java, PHP, Python, and Ruby; however this method can be used any programming language which supports the YouTube Data API Client Libraries.

Is it possible to host videos uploaded to my website on youtube?

I have Java based website. I would like users to log into my website and then upload videos to youtube using my youtube account. Users should not be required to have their own youtube account since videos will be uploaded using my youtube account.
Does youtube support this scenario?
If so, is there a sample code that shows me how to do this in Java?
I have used UploadVideo.java sample provided by google (https://developers.google.com/youtube/v3/code_samples/java#upload_a_video), but it requires users to log into youtube account using their id and password. That is not my use case.
Please study the terms and conditions of the Youtube service ; I think they do not allow this:
https://www.youtube.com/static?gl=GB&template=terms
YouTube accounts
4.1 In order to access some features of the Website or other elements of the Service, you will have to create a YouTube account. When
creating your account, you must provide accurate and complete
information. It is important that you must keep your YouTube account
password secure and confidential.
4.2 You must notify YouTube immediately of any breach of security or unauthorised use of your YouTube account that you become aware of.
4.3 You agree that you will be solely responsible (to YouTube, and to others) for all activity that occurs under your YouTube account.
and
5.1.L: you agree not to access Content or any reason other than your personal, non-commercial use solely as intended through and permitted
by the normal functionality of the Service, and solely for Streaming.
"Streaming" means a contemporaneous digital transmission of the
material by YouTube via the Internet to a user operated Internet
enabled device in such a manner that the data is intended for
real-time viewing and not intended to be downloaded (either
permanently or temporarily), copied, stored, or redistributed by the
user.
You can not let other people use your YouTube account/channel. The way to do is using YouTube Direct Lite
You basically add a ytdl with playlist tag while uploading videos.
You can check Android Client for how to do it in Java.
As to whether it is technically possible, yes, see https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol
The technical problem here is users will be able to delete videos too if they have your access token with full permissions. basically you need to:
load your html page with the upload interface.
add to the onclick event of the upload button to send an ajax request to a script on your server which will:
return the access token of your account to the client
soon thereafter change the access token using the refresh token
Its still technically vulnerable though. a possible solution is to obtain the access token ONLY with the scope:
https://www.googleapis.com/auth/youtube.upload
There is a very good chance it will not be vulnerable then. You should test it.

Resources