制作实时照片幻灯片

时间:2016-07-14 18:16:32

标签: angular raspberry-pi raspberry-pi3

我的项目需要一些帮助。

我需要在商店放置一台电视显示器,并在那里显示照片的幻灯片。 为此,我买了一个Raspberry Pi 3通过hdmi连接到电视,安装Samba服务器并与我的电脑共享一个文件夹。到目前为止一切都很好。

现在我需要一种方法来“监听”目录,并将更改绑定到我的图库,所以如果我将照片添加到文件夹中,它会自动将它们添加到幻灯片中,如果我删除照片,它会从中删除它们。幻灯片放映。

当然 - 所有这一切都应该在不需要刷新页面的情况下完成,因为没有键盘或鼠标将连接到RasPi。

我将使用Angular2构建图库。

有什么想法吗?

1 个答案:

答案 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/

相关问题