我的项目需要一些帮助。
我需要在商店放置一台电视显示器,并在那里显示照片的幻灯片。 为此,我买了一个Raspberry Pi 3通过hdmi连接到电视,安装Samba服务器并与我的电脑共享一个文件夹。到目前为止一切都很好。
现在我需要一种方法来“监听”目录,并将更改绑定到我的图库,所以如果我将照片添加到文件夹中,它会自动将它们添加到幻灯片中,如果我删除照片,它会从中删除它们。幻灯片放映。
当然 - 所有这一切都应该在不需要刷新页面的情况下完成,因为没有键盘或鼠标将连接到RasPi。
我将使用Angular2构建图库。
有什么想法吗?
答案 0 :(得分:0)
看起来与我几天前开发的内容类似!我注册并使用Flickr API和密钥将照片目录映射到我的Flickr帐户。现在,我只需在我的手机/桌面上添加/删除我的Flickr应用程序中的照片,并在脚本再次运行时更新更新。
它仍处于开发阶段,很多东西已从网上接管并同步到完美。只是启动时自动运行功能(Chron)正在等待。
<强> download_flickr.py:强>
#!/usr/bin/env python
import flickrapi
import requests
import os
import re
FLICKR_KEY = "0585ef7a*****************" #Your Flickr Key
FLICKR_SECRET = "469fe1e********" #Secret Key
USER_ID = "9741****@**"
SET_ID = "721576********"
def make_url(photo):
# url_template = "http://farm{farm-id}.staticflickr.com/
# {server-id}/{id}_{secret}_[mstzb].jpg"
photo['filename'] = "%(id)s_%(secret)s_z.jpg" % photo
url = ("http://farm%(farm)s.staticflickr.com/%(server)s/%(filename)s"
% photo)
return url, photo['filename']
def main():
#get new imaged from flickr
print " ---> Requesting photos..."
count = 0
update = False
flickr = flickrapi.FlickrAPI(FLICKR_KEY, FLICKR_SECRET)
photos = flickr.walk_set(SET_ID)
for photo in photos:
count += 1
url, filename = make_url(photo.attrib)
path = '/home/pi/photoframe/flickr/%s' % filename
try:
image_file = open(path)
print " ---> Already have %s" % url
except IOError:
print " ---> Downloading %s" % url
r = requests.get(url)
image_file = open(path, 'w')
image_file.write(r.content)
image_file.close()
update = True
#check to see if it needs to remove photos from folder
filelist = os.listdir("/home/pi/photoframe/flickr")
if count < len(filelist):
print " ---> Removing photos"
for f in filelist:
pics = flickr.walk_set(SET_ID)
print f
for pic in pics:
url, filename = make_url(pic.attrib)
matchObj = re.match(f, filename)
if matchObj:
print " ---> Found %s, matched %s" %(f,filename)
break
else:
print " ---> Deleting %s" %f
os.remove("/home/pi/photoframe/flickr/%s" %f)
update = True
#if it added or removed a photo, update slideshow
if update == True:
print " ---> Restarting slideshow"
os.system("sh kill $(ps aux | grep '[f]eh' | awk '{print $2}')")
os.system("sh /bin/script_slideshow")
if __name__ == '__main__':
main()
<强>杀死强>
#!/bin/bash
if [ ! -z "$1" ]; then
PROCESS=$1
PIDS= ps ax | grep $PROCESS | sed -e "s/.*killp.*//" -e "s/ *\ ([0-9]\ {$.*/\1/" | grep -v "^$"
if [ ! -z "$PIDS" ]; then
echo Killing $PROCESS pid=$PIDS
kill -9 $PIDS
else
echo No process $PROCESS in process list
fi
else
echo Usage : $0 process_name
fi
<强> scripy_slideshow:强>
DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority feh -Z -F -z -Y -D 3 /home/pi/photoframe/flickr &
现在,只需运行download_flickr.py文件,如果一切顺利,您将在显示屏中显示图像。
P.S:您需要注册并获取Flickr API和密钥 - https://www.flickr.com/services/apps/create/