我在我的覆盆子pi上使用github上的“Dropbox-Uploader”脚本在我的Dropbox帐户上传视频。
https://github.com/andreafabrizi/Dropbox-Uploader
它工作得很好,但现在我希望我的覆盆子pi在dropbox上自动上传视频。为此我写了python脚本
import os
path="/tmp/motion/"
def upload_files():
if not os.path.exists(path):
return
os.stdir(path)
for files in os.listdir("."):
if files.endswith(".avi"):
cmd = "/home/pi/dropbox_uploader.sh upload " + path + files
os.system(cmd)
os.system("sudo rm /tmp/motion/" + files)
if _name_ == "_main_":
upload_files()
并将其设置为cronjob,但它不起作用,它不会在我的帐户上传任何内容。任何帮助将不胜感激
答案 0 :(得分:1)
我从许多不同的脚本编写脚本,最后它的工作很棒。 首先要安装的东西: - 你做一个完整的更新,升级 我现在还不知道所有不必要的步骤,但我会在这里写下来,你可以自己编辑 - 但它仍然可以工作,对你的设备没有任何伤害。
第1步
一步一步地将其复制+粘贴到您的终端:
sudo apt-get install python3-picamera
sudo apt-get install python3-pip
sudo apt-get install python-pip
pip3 install unicornhat
pip install unicornhat
sudo apt-get update
sudo apt-get upgrade -f
sudo apt-get upgrade
sudo apt-get install pip
sudo pip install dropbox
第2步
git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
chmod +x dropbox_uploader.sh
./dropbox_uploader.sh
- 您还需要从Dropbox.com获取Accesstoken (https://www.dropbox.com/developers/apps)
我不知道是否有必要,但你需要在MyApps中有一个文件, 并给它一个名字" Raspi-upload" +我的设置里面: 现状:发展 开发用户:只有你 权限类型:完整Dropbox 允许隐式授权:允许
- 然后你有你的KEY:
每隔10秒拍摄一张照片,并将其上传到手机上的Dropbox应用程序。
上传完成后,将删除拍摄的照片,因此您不会在SD卡上浪费空间。
这是脚本:####### TOP
#!/usr/bin/env python3.4
import dropbox
from dropbox.exceptions import ApiError, AuthError
import time
import datetime
import picamera
import sys, os
from time import sleep
import dropcamloop1
# Authorisation token
TOKEN = 'HERE IS YOUR ACCESS TOKEN'
# Format photo will be saved as e.g. jpeg
PHOTOFORMAT = 'jpeg'
# Create a camera object and capture image using generated filename
def camCapture(filename):
with picamera.PiCamera() as camera:
camera.resolution = (1920, 1080)
print("Photo: %s"%filename + "." + PHOTOFORMAT)
time.sleep(2)
camera.capture(filename + '.' + PHOTOFORMAT, format=PHOTOFORMAT)
print("Photo captured and saved ...")
return filename + '.' + PHOTOFORMAT
# Generate timestamp string generating name for photos
def timestamp():
tstring = datetime.datetime.now()
print("Filename generated ...")
return tstring.strftime("%Y%m%d_%H%M%S")
#return tstring.strftime("image")
# Upload localfile to Dropbox
def uploadFile(localfile):
# Check that access tocken added
if (len(TOKEN) == 0):
sys.exit("ERROR: Missing access token. "
"try re-generating an access token from the app console at dropbox.com.")
# Create instance of a Dropbox class, which can make requests to API
print("Creating a Dropbox object...")
dbx = dropbox.Dropbox(TOKEN)
# Check that the access token is valid
try:
dbx.users_get_current_account()
except AuthError as err:
sys.exit("ERROR: Invalid access token; try re-generating an "
"access token from the app console at dropbox.com.")
# Specify upload path
uploadPath = '/' + localfile
# Read in file and upload
with open(localfile, 'rb') as f:
print("Uploading " + localfile + " to Dropbox as " + uploadPath + "...")
try:
dbx.files_upload(f.read(), uploadPath)
except ApiError as err:
# Check user has enough Dropbox space quota
if (err.error.is_path() and
err.error.get_path().error.is_insufficient_space()):
sys.exit("ERROR: Cannot upload; insufficient space.")
elif err.user_message_text:
print(err.user_message_text)
sys.exit()
else:
print(err)
sys.exit()
# Delete file
def deleteLocal(file):
os.system("rm " + file)
print("File: " + file + " deleted ...")
def main():
# Generate name for file based on current time
filename = timestamp()
# Capture photo
file = camCapture(filename)
# Upload file
uploadFile(file)
# Delete local file
deleteLocal(file)
print("Done")
#time.sleep(4)
#x=0
#while(x <4):
#os.execv(sys.executable, ['/home/pi/Adafruit_Python_DHT/examples/dropcamloop1.py'])
if __name__ == '__main__':
main()
time.sleep(4)
x=3
while(x <4):
#os.execv(sys.executable, [sys.executable] )
execfile('dropcamloop.py')
else:
start ['dropcamloop1.py']
### END = dropcamloop1.py是同一个文件,名称不同。
如果您有任何疑问,我可以帮助您,但目的不是100%确定。