群晖python脚本_群晖、Python、小米摄像头、OneDrive应用案例
概要:
将“小米摄像头”录制的视频转存至“群晖”,在“群晖”上与onedrive同步,同时根据onedrive的 1T空间限制(个人版或家庭版)进行文件转移,使onedrive存有最新的视频文件(1T大小),并将旧文件存放至另一位置(视情况保留或删除)。
这样一来,云盘和本地至少都有 1T 的视频在。
起因:
笔者需要将本地的录像文件留一个备份,以备不时之需。
家中有三个小米摄像头,它们都支持转存到群晖(有些型号会不支持,记得问好卖家)。正是因为这个,才买的小米摄像头,之前用小蚁摄像头,云存储一年的费用不少,而且是按照机器来收取,存储天数越长越贵,不划算。
一台设备一天下来大约8个g,群晖单盘有2t空间,算下来3台设备可存77天。
正好家里也有台群晖d218j,支持onedrive转存(好像所有群晖nas设备都支持)。我自己购买了onedrive家庭版,有个1T的空间。
开始操作:
第一步:设置好摄像头的转存文件夹,这一步在小米摄像头内操作,米家app里。多台摄像头记得放同一位置,方便一同与onedrive同步。
第二步:群晖内设置onedrive
将摄像头文件夹,我这的名称为xiaomi_camera_videos,与onedrive云端文件夹(新建一个,自己取名)同步,同步方式选择“双向”
我的设置
这样的话群晖本地的小米摄像头转存文件就能与onedrive同步了。
但是onedrive有空间限制,且满了不会自动删除旧文件,只会限制你的上传,这样的话,只能咱自己来搞了。
第三部:编写python脚本,加入任务计划程序中。
基本逻辑就是:设定一个阀值,在空间快满时,把旧的文件移动到另一个文件夹,释放onedrive的空间(因为选择了“双向同步”)。
代码如下:
import os
import shutil
import re
#输出和路径不能有中文,不然会在计划程序中报错。ssh里可以执行
def get_doc_size(doc):#获取文件大小,单位g,两位小数
size = 0.0
for root,dirs,files in os.walk(doc):
size += sum([os.path.getsize(os.path.join(root, file)) for file in files])
size = round(size/1024/1024/1024, 2)
return size
def transfer_file(path,n,x):#各参数:初始路径,转存文件数,转存路径
lists = os.listdir(path) #取目录下的文件保存到lists
lists.sort(key=lambda fn: os.path.getmtime(path + "/" + fn),reverse = True) # 按修改时间排序,正序
for i in range(1,n+1):# 获取最旧的n个非空文件
file = os.path.join(path,lists[-i])
if get_doc_size(file)==0:#如果文件夹大小为0,则删除
print('empty file,delete it'+str(lists[-i]))
os.remove(file)
n+=1#空文件则增加循环次数
else:#移动文件
shutil.move(file,x)
print('moving'+str(lists[-i]))
if get_doc_size('/volume1/homes/bb/xiaomi_camera_videos')>900:#阀值900g
#24为一天的视频量,任务计划程序可2天运行一次,可加大些
transfer_file('/volume1/homes/bb/xiaomi_camera_videos/5ce50c62ae61',50,'/volume1/homes/bb/b/transferonedrive/5ce50c62ae61')
transfer_file('/volume1/homes/bb/xiaomi_camera_videos/5ce50ca9f839',50,'/volume1/homes/bb/b/transferonedrive/5ce50ca9f839')
else:
print('sapce enough')
自己改里面的路径(需无中文)、转存数即可。将py文件保存,放到群晖的任意文件夹内(之后要调用)。
然后在群晖的“任务计划”中,添加执行脚本的代码。(默认已经配置好了python3)
我这为
python3 /volume1/homes/bb/b/dd.py
更改阀值,试运行一下。低于阀值时:显示空间足够超出阈值时:
运行成功
大功告成。
技术总结:
中文路径、输出中文的问题没解决,就索性用英文了,问题不大,个人使用满足需求就好。
感谢阅读。
群晖python脚本_群晖、Python、小米摄像头、OneDrive应用案例相关推荐
- 路由器运行python脚本_写个Python脚本来登录小米路由器
这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速.好了,一起来分析分析. 首先看下小米路由器的登录界面 可以看到只需要输入密码即可登录,博主 ...
- 常用的python脚本_五个python常用运维脚本面试题实例
一.用Python写一个列举当前目录以及所有子目录下的文件,并打印出绝对路径 #!/usr/bin/env python import os for root,dirs,files in os.wal ...
- php运行python爬虫_群晖系统中运行python爬虫程序
重要:本文最后更新于2021-01-28 17:02:43,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗. 准备入手一台NAS,事先的学习是必须的,今天在VM虚拟机中安装好NAS后, ...
- java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本
举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...
- 群晖docker火狐_群晖 篇一:群晖docker安装Bitwarden教程
群晖 篇一:群晖docker安装Bitwarden教程 2019-04-07 18:17:54 22点赞 179收藏 29评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无 ...
- python编写接口自动化脚本_简单的python http接口自动化脚本
摘抄:今天给大家分享一个简单的python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值 ...
- python能写什么脚本_你用 Python 写过哪些牛逼的程序/脚本?
原标题:你用 Python 写过哪些牛逼的程序/脚本? [导读]:有网友在 Quora 上提问,「你用 Python 写过最牛逼的程序/脚本是什么?」.本文摘编了 3 个国外程序员的多个小项目,含代码 ...
- anaconda怎么运行python程序_第一个python程序,从安装python环境到人生第一个py脚本运行全过程...
文章目录 前言一.安装python运行环境 1.官网https://www.python.org下载安装包.exe 2.安装python二.python模块下载 1.配置pip环境变量 2.下载pyt ...
- python脚本中执行另一个脚本_如何用python调用另一个python脚本?
如果想要将已经设置好的内容,在转移到另一个位置要怎么做呢?小编能写到的方法有,照抄,复制,以及转移使用.在我们日常办公上是非常好理解的,就是ctr v,但是如果想在编程上,将某一位置拿去到别的项目上使 ...
最新文章
- 搞定Linux只要半年
- Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(下)
- json数组显示格式
- UWP Composition API - RadialMenu
- atitit.it企业管理 项目管理 中的 授权机制 的来源 君权神授 的一定合理性
- android sha1和签名证书的学习
- CentOS7.2 network.service NetworkManager.service 冲突
- 微信小程序弹框之获取输入内容(2)
- java动态数组大总结
- cheerio获取outerHTML
- IDEA git 切换分支注意事项(好文章!!)
- 小学计算机设备报表,小学信息技术教育及电教设备自查报告
- dvi黑屏解决方法_电视维修|电视机屏幕出现条纹该怎么解决?
- 谷歌Imagen,人工智能对语言更加深入理解
- 华为电脑浏览器主页被劫持
- 随机生成一个1 到100之间的整数,从键盘输入数字进行猜数,一共可以猜5次
- Thimax膳美师牛排机体验:做一份顶级牛排,简直0难度!
- html樱花飘落特效js
- Spring Security实现用户名密码验证的原理
- C语言-switch-case语句与多分支结构
热门文章
- Open62541 为硬件设备(PLC)构建OPC UA模型
- 修改hosts文件时可能遇到的问题以及解决方法
- 分享个WIFI 一键配置原理-以ESP8266为例
- js验证港澳居民通行证号码是否合规
- mysql外部架包_命令行编译带外部包依赖的java源文件 [以JDBC MySQL8为例]
- gromore穿山甲接入激励视频Android 原生
- 为什么Python不适合写游戏?
- python自动化下载_selenium+python自动化--文件下载弹窗处理(PyKeyboard)
- vs调试技巧(详细)
- 有符号数与无符号数之间运算问题探究