-
Notifications
You must be signed in to change notification settings - Fork 152
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't hardcode media file directory #388
Comments
There is a request related to this, probably in the labs board: gopro/labs#505 |
Working on this soon. I'll change this to force the user to always enter the complete path, including directory. |
Cool, thanx. The only question would be, how to get the current working directory. I did a fast hack and reused the get_media_list function calling it "get_media_folders" giving me back all folders on cam and by an own, outside function I checked which is the current one by number and date - meaning, which one has the latest files written inside. |
I've added a post-init step in the MediaList class to append the directory name to each filename. So you should now get the full filename when accessing the media items through, for example, the files helper property. So for example: import asyncio
from open_gopro import WirelessGoPro
async def main():
async with WirelessGoPro() as gopro:
# Get flat list of all media files
media_files = (await gopro.http_command.get_media_list()).data.files
# Get the first file
media_file = media_files[0]
print(media_file.filename) # Prints: 100GOPRO/GOPR0001.JPG
# Download
await gopro.http_command.download_file(camera_file=media_file.filename)
asyncio.run(main()) I'll wait to see if anyone has any issues with this but otherwise will merge it and make a release in a few days. |
Thanx @tcamise-gpsw, your idea to post init the path of the directory to the file makes it much easier to handle everything. We now have not to mess around with the directories, we just get the file including the path (never mind where it is on the camera) and can directly "do" something with it. This is an enormous help, top, thx. ps. Maybe we can discuss adding something the following delete function to the http_commands.py as well? ;-) @http_get_json_command(endpoint="gopro/media/delete/file", arguments=["path"])
def delete_media_file(self, *, file: str) -> GoProResp:
"""Delete a file on the camera.
add correct path like e.g. "100GOPRO/GOPR0001.JPG" to file argument when calling
Returns:
GoProResp: Empty object
"""
return {"path": f"{file}"} # type: ignore```
|
@tcamise-gpsw , maybe this is also important and, I think, there might be an further issue but I can't figure out where it is and if it can be resolved by your fix: If I open the camera through mtp (Linux, UBUNTU 20.04 LTS) it shows me two folder, 100GOPRO and 101GOPRO. In every of these folder there are several mp4-files (which are valid videos). If I use http://172.2[X].1[Y][Z].51:8080/gopro/media/list it shows me only the files from the 101GOPRO folder. The OpenGoPro function get_media_list() --> HttpParsers.MediaListParser() returns the same results - only the 101GOPRO folder and its files. Is there something else or do I miss something to add? |
@robertgalo Your last two comments seem worthwhile to investigate but are out of the scope of this issue. Can you make new issues for them? Thanks. I'll merge the PR for this fix now. |
@tcamise-gpsw yes, I know, I tried just to mention it not to forget it (as well as for myself ;-)) I'll put them into another thread, thx. |
Within the library (in particular here in http_commands.py and as an example)
there are various places where the current path for functions is linked with a static, hard coded value for the path to the current files by "100GOPRO". According to official GoPro Information, after 999 files a new folder 101GOPRO is created, after next 999 files 102... and so on. In this case, when reaching 999 files, the OpenGoPro library is not working properly and you can't do anything anymore with your code/solution/program where you rely on a working library. This happens as well, when you always delete your files.
There could be 2 solution fixing this problem:
There is a flag in the firmware which can be set by an command and which turns this behavior off and sets always 100GOPRO (or anything else, custom) as the main directory
There is
a) a function, which reports the current working directory back and injects it into every necessary path of above functions in the list and
b) a function to choose the path by yourself.
c) Additionally there should be a function to select the director where the files get saved and the possibility to create own directories.
The text was updated successfully, but these errors were encountered: