Skip to content

Instantly share code, notes, and snippets.

@ferm10n
Created December 30, 2018 02:02
Show Gist options
  • Save ferm10n/f8754dfcbddc81019045c647f3b6d6e3 to your computer and use it in GitHub Desktop.
Save ferm10n/f8754dfcbddc81019045c647f3b6d6e3 to your computer and use it in GitHub Desktop.
Like scp, but via pushbullet!
#!/usr/bin/env python3
import json
import sys
import os.path
import magic
import requests
token='' # <--- your API token here
targetFile = sys.argv[1]
# read file
file = None
if os.path.isfile(targetFile):
file = open(targetFile, 'rb')
else:
print('File does not exist!')
sys.exit(1)
# upload request
data = {
'file_name': targetFile,
'file_type': magic.Magic(mime=True).from_file(targetFile)
}
uploadRequestResponse = requests.post('https://api.pushbullet.com/v2/upload-request', data=data, headers={'Access-Token': token})
uploadRequestResponse.raise_for_status() # halt on failure
# actual upload
uploadUrl = uploadRequestResponse.json().get('upload_url')
fileUrl = uploadRequestResponse.json().get('file_url')
uploadedName = uploadRequestResponse.json().get('file_name')
uploadedType = uploadRequestResponse.json().get('file_type')
uploadResponse = requests.post(uploadUrl, files={'file': file})
uploadResponse.raise_for_status()
# create the push notification
pushPayload = {
'type': 'file',
'body': 'File upload',
'file_name': uploadedName,
'file_type': uploadedType,
'file_url': fileUrl
}
pushResponse = requests.post('https://api.pushbullet.com/v2/pushes', data=pushPayload, headers={'Access-Token': token})
pushResponse.raise_for_status()
print(fileUrl)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment