We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.
Forum Discussion
AdanHerrera
7 years agoExplorer | Level 3
Python API
I'm working with Python & API v2
I need the following information:
If I have a shared folder with several users, is it possible to obtain a record of the users who have visited or downloaded the files?
---------------------
I was reading this information but I do not know if it's what I'm looking for.
class dropbox.sharing.UserFileMembershipInfo (access_type = None, user = None, permissions = None, initials = None, is_inherited = None, time_last_seen = None)
Bases: dropbox.sharing.UserMembershipInfo
The information about a user member of the shared content with an appended last seen timestamp.
Variables: time_last_seen - The UTC timestamp of when the user has last seen the content, if they have.
thanks!
It looks like you have the right basic idea, but there are a few things to note:
- You have 'none' instead of 'None'.
- You can filter by category, which in this case would be 'dropbox.team_log.EventCategory.file_operations'.
- You can filter by time, which can be good as without a time filter you may have to parse through more events than desired.
- You need to check GetTeamEventsResult.has_more, and call back to team_log_get_events_continue if it's True.
So, for example, to look for file_download events from the past week, that might look like:
import datetime import dropbox access_token = '...' dbx_team = dropbox.DropboxTeam(access_token) account_id = 'dbid:...' time_range = dropbox.team_common.TimeRange( start_time=datetime.datetime.now() - datetime.timedelta(days=7)) def handle_events(events): print("Processing %s events..." % len(events)) for event in events: if event.event_type.is_file_download(): print(event) result = dbx_team.team_log_get_events( limit=1000, account_id=account_id, time=time_range, category=dropbox.team_log.EventCategory.file_operations) handle_events(result.events) while result.has_more: result = dbx_team.team_log_get_events_continue(result.cursor) handle_events(result.events)
- 1. No, unfortunately there isn't a way to filter by path across all members, but I'll pass this along as a feature request.
2. Also no, it's not possible to filter to a specific event type, but we'll consider this a feature request as well.
- Greg-DBDropbox Staff
The UserFileMembershipInfo object is used in SharedFileMembers, which is returned by sharing_list_file_members. That only applies to specific files that have been shared individually, not to files inside shared folders. That being the case, it sounds like this isn't what you're looking for in your scenario.
There isn't an equivalent property for files in shared folders, though if you're using a Dropbox Business API app with "team auditing" access , you can get 'file_download' events from team_log_get_events and team_log_get_events_continue.
- AdanHerreraExplorer | Level 3
Thanks Greg for your time.
1) I was looking into UserFileMembershipInfo and get some value information.
2) I'm working now with Dropbox Business API app "team auditing" access, you can please show me how can I get the 'File_download' events. I don't know how to do, I was trying this:
import dropbox
token= ' '
dbx_team = dropbox.DropboxTeam(token)
Resultado = dbx_team.team_log_get_events(limit=1000, account_id=u'dbid:fsfdsddf', time=None, category=none)
print(Resultado)- Greg-DBDropbox Staff
It looks like you have the right basic idea, but there are a few things to note:
- You have 'none' instead of 'None'.
- You can filter by category, which in this case would be 'dropbox.team_log.EventCategory.file_operations'.
- You can filter by time, which can be good as without a time filter you may have to parse through more events than desired.
- You need to check GetTeamEventsResult.has_more, and call back to team_log_get_events_continue if it's True.
So, for example, to look for file_download events from the past week, that might look like:
import datetime import dropbox access_token = '...' dbx_team = dropbox.DropboxTeam(access_token) account_id = 'dbid:...' time_range = dropbox.team_common.TimeRange( start_time=datetime.datetime.now() - datetime.timedelta(days=7)) def handle_events(events): print("Processing %s events..." % len(events)) for event in events: if event.event_type.is_file_download(): print(event) result = dbx_team.team_log_get_events( limit=1000, account_id=account_id, time=time_range, category=dropbox.team_log.EventCategory.file_operations) handle_events(result.events) while result.has_more: result = dbx_team.team_log_get_events_continue(result.cursor) handle_events(result.events)
- John112233New member | Level 2
i am also searching for the same problem solution altough i'm reading a book to master python named as Python data science handbook PDF
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
5,877 PostsLatest Activity: 12 months agoIf you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!