在路由宝实现实时监控并上传百度云
准备工作:1、刷潘多拉系统;
2、安装python、python-requests;
3、插入USB摄像头并安装摄像头驱动和motion;
4、下载bypy,并把bypy.py放到/usr/bin/中。先看效果,可以保存相片和视频,一秒钟大概保存2到3张照片,相片有地理位置信息。
http://img.blog.csdn.net/20150507215934621
http://img.blog.csdn.net/20150507220311664
http://img.blog.csdn.net/20150507220328266
http://blog.csdn.net/myscnu/article/details/45567153编写on_picture_save.sh#!/bin/bashSHELL=/bin/bashUSER=rootPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binPWD=/rootLANG=en_GB.UTF-8SHLVL=1HOME=/rootLOGNAME=root_=/usr/bin/envOLDPWD=/tmp/motionpython /root/exif.py $1>> /tmp/motion/picture.log 2>&1bypy.py -v upload $1 /picture/`date +%Y`/`date +%Y%m`/`date +%Y%m%d`/ >> /tmp/motion/picture.log 2>&1rm -rf $1exit 0
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
编写on_moive_end.sh#!/bin/bashSHELL=/bin/bashUSER=rootMAIL=/var/mail/rootPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binPWD=/rootLANG=en_GB.UTF-8SHLVL=1HOME=/rootLOGNAME=root_=/usr/bin/envOLDPWD=/tmp/motionbypy.py -v upload $1 /movie/`date +%Y`/`date +%Y%m`/`date +%Y%m%d`/ >> /tmp/motion/movie.log 2>&1rm -rf $1exit 0
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
修改motion.conf
在on_picture_save和on_movie_end那些指向上述脚本
output_all on
max_mpeg_time 600 #十分钟上传一次,可以改启动motion -c motion.conf就可以了。本来上面那样就可以了,但是上传的图都没有exif,在百度云中显示为神秘时间,看着不爽,继续折腾。编写location.py#!/usr/bin/python# -*- coding: utf-8 -*-"""Created on Wed May 06 15:26:19 2015@author: HP"""import json, urllib2import reimport pickleimport stringimport fractionsclass Getmyip: def getip(self): try: myip = self.visit("http://www.123cha.com/") except: try: myip = self.visit("http://www.bliao.com/ip.phtml") except: try: myip = self.visit("http://www.whereismyip.com/") except: myip = "So sorry!!!" return myip def visit(self,url): opener = urllib2.urlopen(url) if url == opener.geturl(): str = opener.read() return re.search('\d+\.\d+\.\d+\.\d+',str).group(0)getmyip = Getmyip()localip = getmyip.getip()print localipclass location_baidu(): '''build the mapping of the ip address and its location.the geo info is from <freegeoip.net>''' def __init__(self, ip): '''Constructor of location_freegeoip class''' self.ip = ip self.ak = 'KMdRKwHjWHCtMLe72bnTWEpq' self.api_url = 'http://api.map.baidu.com/location/ip?ak=%s&ip=%s&coor=bd09ll' % (self.ak, self.ip) urlobj = urllib2.urlopen(self.api_url) data = urlobj.read() self.datadict = json.loads(data, encoding='utf-8')# print datadict def get_address(self): key = 'address' return self.datadict# def get_region(self):# key = 'region_name'# return self.datadict## def get_city(self):# key = 'city'# return self.datadict def get_latitude(self): lati = string.atof(self.datadict['content']['point']['y']) a = fractions.Fraction(int(lati), 1) b = fractions.Fraction(int((lati - int(lati)) * 60), 1) c = fractions.Fraction(int(((lati - int(lati)) * 60 - b) * 60), 1) return def get_longitude(self): lati = string.atof(self.datadict['content']['point']['x']) a = fractions.Fraction(int(lati), 1) b = fractions.Fraction(int((lati - int(lati)) * 60), 1) c = fractions.Fraction(int(((lati - int(lati)) * 60 - b) * 60), 1) return if __name__ == '__main__': iploc = location_baidu(localip) print iploc.get_latitude() print iploc.get_longitude() f = file('gea.pickle', 'w') pickle.dump(, f) # dump the object to a file f.close()
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]45
[*]46
[*]47
[*]48
[*]49
[*]50
[*]51
[*]52
[*]53
[*]54
[*]55
[*]56
[*]57
[*]58
[*]59
[*]60
[*]61
[*]62
[*]63
[*]64
[*]65
[*]66
[*]67
[*]68
[*]69
[*]70
[*]71
[*]72
[*]73
[*]74
[*]75
[*]76
[*]77
[*]78
[*]79
[*]80
[*]81
[*]82
[*]83
[*]84
[*]85
[*]86
[*]87
[*]88
[*]89
[*]90
[*]91
[*]92
上面脚本每次网络连接的时候运行就可以了,可以在if-up.d设一个脚本启动它。接下来就是写exif的exif.py#!/usr/bin/env pythonimport datetimefrom fractions import Fractionimport sysimport pyexiv2import picklef=file('/root/gea.pickle')gea=pickle.load(f)f.close()metadata = pyexiv2.ImageMetadata(sys.argv[1])metadata.read()nowtime = datetime.datetime.now()metadata['Exif.Image.DateTime'] = pyexiv2.ExifTag('Exif.Image.DateTime', nowtime)metadata['Exif.Photo.DateTimeDigitized'] = pyexiv2.ExifTag('Exif.Photo.DateTimeDigitized', nowtime)metadata['Exif.Photo.DateTimeOriginal'] = pyexiv2.ExifTag('Exif.Photo.DateTimeOriginal', nowtime)metadata['Exif.Image.Make'] = pyexiv2.ExifTag('Exif.Image.Make', 'Youku')metadata['Exif.Image.Model'] = pyexiv2.ExifTag('Exif.Image.Model', 'Router Bitch')#metadata['Exif.Image.GPSTag'] = pyexiv2.ExifTag('Exif.Image.GPSTag', '1598L')metadata['Exif.GPSInfo.GPSLatitudeRef'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSLatitudeRef', 'N')metadata['Exif.GPSInfo.GPSLatitude'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSLatitude', gea[0])metadata['Exif.GPSInfo.GPSLongitudeRef'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSLongitudeRef', 'E')metadata['Exif.GPSInfo.GPSLongitude'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSLongitude', gea[1])metadata['Exif.GPSInfo.GPSAltitudeRef'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSAltitudeRef', '0')metadata['Exif.GPSInfo.GPSAltitude'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSAltitude', Fraction(19179, 866))metadata['Exif.GPSInfo.GPSTimeStamp'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSTimeStamp', 1, 1), Fraction(20, 1), Fraction(104, 25)])metadata['Exif.GPSInfo.GPSSpeedRef'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSSpeedRef', 'K')metadata['Exif.GPSInfo.GPSSpeed'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSSpeed', Fraction(0, 1))metadata['Exif.GPSInfo.GPSDateStamp'] = pyexiv2.ExifTag('Exif.GPSInfo.GPSDateStamp', datetime.date.today())metadata.write()
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
到此,照片里面根据IP地址加入了GPS位置,还有时间什么的了。
太乱了,你不能整理一下吗?
发个清爽点的:http://blog.csdn.net/myscnu/article/details/45567153 看不懂............ 这货就是说能做,但绝不是做的最好 网络摄像头那个多比这货做的更好 技术流,膜拜
页:
[1]