Replies: 5 comments 1 reply
-
This is the first time something like this is being reported. I suspect that the OneDrive API lacks support for this. This client downloads all relevant data and files as per https://docs.microsoft.com/en-us/onedrive/developer/rest-api/?view=odsp-graph-online specifically https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_delta?view=odsp-graph-online You can use MS Graph Explorer to investigate - https://developer.microsoft.com/en-us/graph/graph-explorer?request=me%2Fdrive%2Froot%2Fchildren&method=GET&version=v1.0 You can then validate what MS Graph Explorer is doing, via using the application in debug mode By default, there are no .mov file exclusions - so, either other backup programs are using some other API that is not published to access the data, or there is some sort of other mechanism being used. |
Beta Was this translation helpful? Give feedback.
-
@thill It is the OneDrive API that is failing - it does not support the live images, appears to be converting the live image to it's 'jpg' equivalent, and only passing the 'jpg' as the download. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the quick reply! To clarify, by "other backup platforms" I meant Google Photos vs OneDrive, not other OneDrive clients. It seems this is a OneDrive specific issue then, which is unfortunate. |
Beta Was this translation helpful? Give feedback.
-
I ended up replying in OneDrive/onedrive-api-docs#1532 - thanks a ton for digging that up! |
Beta Was this translation helpful? Give feedback.
-
I've managed to download the full live photo from OneDrive. maybe it'll help you with this issue. A live photo consists of two files, one *.heic (or .jpg) and one *.mov. There is no issue getting the image part (heic/jpg). To get the video part, you need to use API endpoint for personal OneDrive (SharePoint/corporate OneDrive does not support Live Photos to the best of my knowledge; and the graph endpoint does not seem to support live photos either) First step is to identify if a photo is a live photo at all. During POST to get folder data (POST to https://api.onedrive.com/v1.0/drives/*****/items...) include "select=photo" to get photo metadata and add magic parameter &ump=1 at the end. The returned object will include empty livePhoto object in case it is a live photo: "photo": {
"cameraMake": "Apple",
"cameraModel": "iPhone 15 Pro",
"exposureDenominator": 900.0,
"exposureNumerator": 1.0,
"focalLength": 6.764999866,
"fNumber": 1.779999971,
"iso": 80,
"livePhoto": {},
"orientation": 1,
"takenDateTime": "***"
}, Next step is to get content with undocumented parameter format=video (found by a dumb luck...):
This will even return correct filename (e.g. the same as the image, but with .mov extension) in reponse headers:
The returned data is exactly the same as the .mov file copied from iPhone locally EDIT: It seems that parameter &ump=1 is needed in both calls for this to work. It is used by OneDrive web application, it looks it turns on undocumented MSFT extensions... |
Beta Was this translation helpful? Give feedback.
-
I predominantly use OneDrive to backup photos from my iPhone, and I use
onedrive
to ensure I maintain a local copy of my entire OneDrive account in case anything ever happens to it (lost access, bad actor, etc). Overall, it is an excellent piece of software, so thank you for all of the hard work!I recently realized that my local backup was about 25% smaller than the space OneDrive was reporting I was using. After some digging, I realized that my Live Photos are all reported as being substantially larger in the OneDrive details view on the web. On some other backup platforms, Live Photos are accompanied by a *.mov file of the same name. I see no such files on my local copy of my OneDrive data. Yet, I can view Live Photos on OneDrive web!
This leads me to believe that this software either does not download the "live" part of the photos. So either
onedrive
is missing functionality to attempt to download that part of the file (pair of files?), or OneDrive does not make them available at all in the first place. Has anyone encountered the same issue? Does anyone have any experience digging into this?If this is simply missing functionality, I'm a Software Engineer and happy to help work on a solution to this, but first I'd need some pointers on what needs gluing together to get it to work.
Thanks!
References
Beta Was this translation helpful? Give feedback.
All reactions