Attach/reattach subtitles to video in Google Drive - google-drive-api

I have a directory of video files in my Google Drive that I would like to attach subtitles to, and keep the subtitles updated regularly.
I am aware that this can be achieved through the in-browser Google Drive interface, by manually right-clicking on each video to "Manage caption tracks" and then locating the subtitles file (format: .vtt) in my Google Drive. However, I noticed that when I update the subtitles file later, the video does not "refresh" its access to it, but instead continues to display an older version of the subtitles .vtt file.
Is there a way to add and/or update the subtitles track using the Google Drive API? For background, I use PyDrive, and when I look at the GoogleDriveFile properties for one of my videos with subtitles, I don't see any parameters that look like the subtitles file or a link to the subtitles file, or any other parameters like the language code (en for English, etc.).

At the moment there are no API methods to do this. The Drive API documentation doesn't show any. Also, the metadata for Drive files does not include anything related to captions/subtitles. This means that adding these subtitles is probably done on a different "layer" unique to the Drive player that doesn't affect the files at all, and an API has not been considered for it.
There's also this issue tracker post requesting this feature, but it seems that it was shot down as they want Drive to focus more on file sharing. This may or may not change in the future.
As an alternative you could consider importing your videos from Drive to YouTube since the YouTube API does have methods to manage captions.
Google also has an API called Transcoder. I'm not familiar with it but after reviewing the documentation it seems that it allows you to transcode videos and add subtitles to them. This would be more complex and would probably require you to download, transcode, and reupload the videos which would end up with built-in subs, but it is something that you could potentially fully automate with APIs.

Related

What is the internal file format of a .glink file?

I would like to add URL links into a web-based Google Drive folder. Searching online, it appears that this was once possible with files that ended in a .glink extension. I'm looking for documentation on the file format so that I can create them programmatically.
[EDIT] Why do I want to create .glink files? Because I want links (bookmarks, URLs) to be able to appear in my Google Drive web page and to be able to click on them an go to the page. Microsoft OneDrive supports this functionality.
GLINKS Files
The URL link file feature was available due to a workaround with Back Up and Sync before being deprecated with Drive for Desktop. The .glink seems to be patched and no longer available as it was also part of a third party tool no longer available. It seems it now only saves them as .URL and automatically gives it the icon for Google Docs, as it would take it as a simple file with text.
Checking the .url type file of Windows, when uploading to Drive it does not update as it should, even utilizing Drive for Desktop (as an alternative to sync data like back up and sync) the outcome is the one suggested above.
This is the main reason why there is no longer any documentation about the matter, due to this one not being an official feature and being also fully deleted, it can be confirm by the file type available when creating files with the Drive API:
https://developers.google.com/drive/api/guides/ref-export-formats
I would suggest to request a feature to allow this or to provide a new way to store URL links as before or report it to review if possible any references on how it used to work by submitting a feature request or checking the issue tracker about the matter:
https://issuetracker.google.com/issues/new?component=191650&template=824106
You can also add the details of the previous threads or discussions about the GLINKS.

How to get a direct link from Google Drive?

I know it is possible to get a link that will initiate a download of a file from Google Drive. But this is not exactly what I am looking for. I want to be able to have the link of a file with its extension.
For example, it is possible to do this with Dropbox. I am able to get a direct link if I change "www.dropbox.com" to "dl.dropboxusercontent.com". So if I have a video file, it will play on the browser's player instead of opening the page to download it.
With Google Drive I don't know how to do this. If I generate a direct link, it will then create a link that automatically starts a download. A direct link for a .txt file will not be rendered on the browser. It will be downloaded instead.
So, it is possible to have a direct link to a file in Google Drive that is not the direct link that starts downloading automatically, but instead with the directory/file.ext?
There are several things you need to understand about how the Google drive api works.
When you do a file.get with the Google Drive api it returns a file resource this is the response for the file itself. The information about it that google is willing to share with us. There are two fields here you may find interesting
The first thing you should know is that a file has one or the other of these links not both. If the file is a binary type for example an image you will be given a webContentLink which can be used to download the file, If its say a google sheet then you will be given a webViewLink which can be used to view the file in Google Drive web application.
Which link you get depends entirely upon the type of file it is. No matter which link you get you will still need to have permission to access this file. So whoever clicks the link must have at the very least read permission to the file.
On the Google drive web application we can create links which can be shared with anyone and allow anyone to "access" there is no way to create these links VIA the api.
What you wish to do is out of scope for the Google drive api, probably due to security reasons. Also the simple fact that google drive api is not a file service api it a file storage system. THere is a difference.

Gdrive - Need mp3 direct permanent url to play it in wordpress site

I have large audio files to be played in my wordpress site. As my server being shared hosting, streaming has become much slow. I am thought of uploading the mp3 in gdrive and give the mp3 url in wordpress.
I have followed the below process-
1
clicked on download mp3 from gdrive, took the address, gave &type=.mp3 to the last. It worked for a day, but from next day onwards my audio doesn't play in my site. I am thinking that google is changing the url on daily basis dynamically.
2
thought of using the shared public link. But that takes me to google's download page. What all I need is a direct permanent link with mp3 extension for streaming purposes. This is not serving the purpose.
Any other approach in getting the permanent url with mp3 extension? Thanks.
Have you tried this URL ?
https://drive.google.com/uc?export=download&id=YOUR_FILE_ID
Check also this page for another way; but you must use the Drive API. The idea is to use the webViewLink url provided by the Drive API.

getting videos in google drive (and Microsoft onedrive) to show in a video tag?

I have a website that has a web page with a html5 video-tag, and the user can supply a URL, and it will play in the video-tag.
The webpage uses JavaScript commands that control the video-tag - for instance, it can pause the video, move to a different point in the video, etc.
It works fine with the cloud. Videos stored on Microsoft Azure can be used, for instance (Azure gives you a way to get a URL to any video on your cloud storage, and streams it too).
However, I have users that store videos on Google-drive, and also on Microsoft One-Drive.
From what I can see, I can play these videos, but only in a page (probably with Google's own player in it) on their site.
It seems that there is no way to get a URL to these videos that I can put in a video tag.
Without the ability to do that, I can't use the javascript commands that work with the html5 video-tag.
Is there any workaround?
Or am I missing something?
Thanks.
For playing videos that are stored in google-drive using your app:
you need oauth2 credentials to access the user's drive, but assuming you have the oauth part covered :
you can create a drive application as a google appengine app and deploy it in a part of your website.
enable the drive-sdk and set the open-url to your website (that you have verified)
-> basically this tells drive to redirect towards your website whenever the user clicks on the video (from his drive)
when drive redirects to your website a json file will be sent, you'll have informations such as fileId from there i think you can execute the method files().get() to retrieve the necessary information for you to play the video
I advise you to take a look at this course in codeschool.

Incorporate Google Drive solution in existing Android app project?

I have an existing Android app project which has been already published on the Google Play, and now I would like to incorporate in my app the possibility to use the Google Drive possibilities in order to download *.jpg files directly to the sd card when the app is opened or load for the first time. Like this I liberate the internal memories of the phones where this app is installed (All the images are stored in the resources of the app actually which is >~ 20MB). I have read a lot of forums concerning the Google Drive SDK or API subjects and I can say that I'm a little bit lost on the manner to manage it for my present app. Some ideas or suggestions would be very very very appreciated.
Thank you very much).
Please see this question for the basics on how to integrate your Android app with Google Drive SDK: Access to Google Drive from self implemented Android application
In it, I reference a good Google+ tutorial on how to get started, and it's easy enough to take the concepts and apply them to an existing app. (That's how I did it too.) Before you get started, sign up for the Google APIs (https://code.google.com/apis/console/), get into the API Console, and turn on both the Google Drive API and Drive SDK. This'll make coding go a lot smoother. Let me know if you have any problems.
One addendum for your specific case relating to *.jpg files is you could set a MIME type for fetching strictly the pictures. It'd go something like this:
request = service.files().list(); // .setQ("mimeType=\"text/plain\"");
Unfortunately setQ is commented out because it would fail to return any results when I used it. However, you may have better luck with the image/jpeg MIME type.