screenly / anthias Goto Github PK
View Code? Open in Web Editor NEWThe world's most popular open source digital signage project.
Home Page: https://anthias.screenly.io
License: Other
The world's most popular open source digital signage project.
Home Page: https://anthias.screenly.io
License: Other
Looks like I failed to bring over the code for deleting uploaded assets from disk when they are being deleted from the UI.
Adding assets broke in a recent update.
Bug report here:
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=41&t=12396&sid=c9a02a1801c30814465d50b927819885&p=149703#p149703
From a usability standpoint, it makes sense to move some of the settings from screenly.conf into the web interface.
In order to successfully do this, we need to create a new database table named 'config'.
The settings page should include the following:
[I'm using this issue to document what I found in a topic on the raspberrypi forum ]
Our Screenly-controlled display is in the office; it seems a waste to have it always on, also at night and during the weekends when there is noone there.
[I don't care (yet?) about suspending/resuming the Raspberry Pi, but I guess that could be done too.]
To switch off display, programmatically, on raspberry pi:
/opt/vc/bin/tvservice -p; /opt/vc/bin/tvservice -o
To switch the display on again (the chvt command combination re-activates X Windows):
/opt/vc/bin/tvservice -p ; sudo chvt 6; sudo chvt 7
I use the following crontab entry, to switch the display off after working hours, and to switch it on in the morning, on working days.
# minute hour day of month month day of week command
# 0-59 0-23 1-31 1-12 0-7 (0/7 is Sun)
30 18 * * * /opt/vc/bin/tvservice -p ; /opt/vc/bin/tvservice -o
30 8 * * 1-5 /opt/vc/bin/tvservice -p ; sudo chvt 6; sudo chvt 7
When adding an asset (remote or local), we should make an educated guess based on the mimetype in order to pre-populate the asset-type drop-down.
Since it is harder to guess the mimetype for websites, we could simply assume it is a website if it doesn't match either video nor image.
A couple feature requests....
1.) The ability to assign in a screenly config file a unique id for this device.
2.) Then several of these devices could "call home" to a public server to get their asset list and then begin playing them.
This will allow devices behind a firewall to be administered easily without having to poke holes in the firewall and hard code a server and viewer port for multiple Pi's at a location.
Think this is easily do-able?
Zack
It appears as the save of asset's status broke. When you toggle the status of an asset, the stat isn't being saved.
Here's an example:
https://dl.dropbox.com/u/2096546/tmp/save_problem.mov
On a scale from 0 - 10 how likely will UNC paths supported as a source? Or is this impossible to do.
One commonly requested feature is the ability to set the play order. I think this is a reasonable feature.
The most intuitive way to solve this would to simply turn the 'active' section into an ordered list. The user would then be able to drag the items to the desired play order. By default new items would appear at the end of the list.
from looking at the code, I got the impression that the asset name is used for the html file that is generated for an image asset.
because there may be more than one asset with the same name, this somehow doesn't feel too good...
what about using asset ID instead?
I have rotated the screen on my pi 90 degrees and was wondering if it would be possible to have a 1080x1920 display setting. Thanks, Adam
Is there any specific reason why screenly uses a static resolution?
I see it somewhat as problem to configure the resolution depending on screen size or orientation.
I would suggest the following change and then remove the resolution code, only used to set the size of uzbl?
--- a/misc/lxde-rc.xml
+++ b/misc/lxde-rc.xml
@@ -657,6 +657,7 @@
<!-- match all windows, and remove their decorations -->
<application class="*">
<decor>no</decor>
+ <maximized>yes</maximized>
</application>
<!--
How reproduce:
You can now see that the end-date changed, but the desired result would be that the start/end remains the same, but the asset simply is deactivated.
Since it is possible to add assets without a duration, we should add a default duration when assets without a duration is activated.
I think it would be reasonable to set this default duration to 10 seconds.
Looks like a recent commit broke viewer.py when there were unscheduled events.
$ python viewer.py Traceback (most recent call last): File "viewer.py", line 284, in <module> asset = scheduler.get_next_asset() File "viewer.py", line 66, in get_next_asset self.refresh_playlist() File "viewer.py", line 87, in refresh_playlist elif self.deadline <= time_cur: TypeError: can't compare datetime.datetime to NoneType
At this point, settings are only refreshed at the start of viewer.py. Hence, if you make a change in the server module, the changes are written to disk, but never refreshed.
We need to both investigate how much disk space Screenly (or rather, the dependencies) require and add a checker that ensures that this much space is available in the installation process.
If not enough space is available, the installer should exit.
Now that we are using UTC internally, which was the whole poing of 'standalone' vs. 'managed', we can as well kill this setting entirely.
it would be very nice to not have those lines
(but only messages when something goes wrong)
I looked, but could not easily see how to disable those lines;
they seem to be generated via the python urllib (or urllib2 or urllib3).
First of all I want to thank you for a wonderful program. I am really interested in using this along side the raspberry pi throughout my facility. I am really interested in trying out the Pro version. I did sign up to be notified.
Let me share my observations of bugs and requests.
Bugs:
#1 Popping sound at end and beginning of video assets out of the analog port.
#2 5-10 second view of another website asset when transitioning from video to website listed on playlist. I have 2 websites and 2 videos setup for testing.
Requests:
#1 Being able to prioritize or arrange the order of the playlist. Found that if you place a number in front of asset name it will play in order I want according to my numbering convention.
#2 Transition between assets (fade, dissolve...etc)
Is it possible to add login information input into the asset configuration? This would be helpfull in cases where you are showing secured information on a screen (in my case using Nagios monitoring information for our costumers).
I know once logged in, it saves it for a while (cache maybe?) but that requires acces to keyboard to the Pi, which isnt ideal.
If I upload a jpg that is larger than the screen resolution, Screenly displays it at 100%, which crops the edges. This may be an omxplayer issue...
I can re-size the pictures manually before uploading, but I'd prefer the system to be more tolerant.
Smaller than full-screen pictures display nicely: centered with a black background.
At this point, there is no way to determine the asset type from the front-page (other than clicking edit). It would be great if one could easily determine this.
To solve this, let's add an indicator for this. Let's add the following (stock bootstrap) icons for this purpose:
We can simply add this icon to the left of the asset name.
When I let run the git clone command i get following error.
pi@raspberrypi ~ $ git clone [email protected]:wireload/screenly-ose.git ~/screenly
Cloning into '/home/pi/screenly'...
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
When I download the zip and extract it on the pi it worked.
Please give some information what i could do to use the git clone comman.
Thx and compliment
Tommy
I was just wondering if hdmi is the only working output? or Will the composite video out work also?
Let's use iOS-style toggle icons on the settings page instead of drop-downs for splash screen and shuffle, since they're both booleans.
Since movies already have a built-in duration (ie. the length), it's both confusing and redundant to display this information.
As a result, we should hide the duration field entirely if the asset type is set to 'movie'.
It appears as the API has properly handling for this, but when you try to add (or edit) an assit such that it has both an URL and an uploaded file, you get the following message from the API displayed:
{"error": "Invalid combination. Can't select both URI and a file."}
However, there is no handling for this in the UI.
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=41&t=12396&p=170939#p170939
Images are read once (cached forever)
URIs ("web" resource type) are read in anew every 5 times through the display loop.
It'd make more sense to have caching selectable by image type, or just rename them
"Static, read it once and use it forever"
versus
"Dynamic, refresh every 5 times through the loop".
User "bostjan" reported:
I also found error trying to edit a schedule...some attribute error because of datetime...
A lot of surveillance cameras are using mjpeg for their feed. It would be great if Screenly would support this too in order to make it more versatile.
As it turns out, mplayer can handle mjpeg streams using the command:
mplayer -fs -demuxer lavf http://webcam/stream.mjpg
Mplayer also support the '-zoom' option to bring the camera up to full screen, but the Raspberry Pi doesn't appear to be powerful enough to bring up the test-stream I used (640x480) to full screen with zoom.
This would of course also require that mplayer is installed. It would also require a new handling for mplayer along with a new content type.
As asked in the screenly topic on the forum: it would be nice if the web server port could be configured.
The code in my branch config-port tries to do this, by allowing a 'port = 8080' line in the '[main]' config section, where
a default of 8080 is specified in both python files.
I'm wondering whether it would be nicer
There is a bug in server.py that results in all uploaded assets being zero length files.
The fix:
$ git diff
diff --git a/server.py b/server.py
index 63b06e4..030a060 100644
--- a/server.py
+++ b/server.py
@@ -202,11 +202,11 @@ def process_asset():
return template('message', header=header, message=message)
if file_upload:
- asset_id = md5(file_upload.read()).hexdigest()
+ asset_file_input = file_upload.read()
+ asset_id = md5(asset_file_input).hexdigest()
local_uri = path.join(asset_folder, asset_id)
f = open(local_uri, 'w')
- asset_file_input = file_upload.read()
f.write(asset_file_input)
f.close()
Cheers.
Screenly doesn't think it recognizes my WiFi. The adapter is setup, resolves an IP, but Screenly reports trouble ("can't detect configuration" or whatever the splash-screen message is). However, if I got to <IP.address>:8080 it works fine. If I didn't know how else to look up my IP I'd be in trouble. It's a minor problem and not holding me up, but I thought I'd report it.
I plan to play almost entirely local content, and use the WiFi only for setup/management.
While the loader takes care of a crash of viewer.py just fine, it can be improved.
Right now, if viewer.py crashes, it automatically reloads, but it brings up the splash page. It would be much better if viewer.py was intelligent enough to only view the splash-page if the uptime of the node was less than N minutes.
In a perfect world, viewer.py would never crash, but we don't live in such world. :)
Hi,
Screenly-ose is awesome! Looking forward to the Pro plan!
I've got one question/issue. How can I make two playlists that alternates and pick 3 movies / playlist?
Eg. (6 movies in Playlist1, 3 movies in playlist2)
Playlist1: movie 1-3
Playlist2: movie 1-3
Playlist1: movie 4-6
Playlist2: movie 1-3
etc...
Which files should I edit in that case?
Thanks in advance!
Best regards,
Jonas
We decided in ticket #53 that the default duration should be 5 seconds. However, the more I think of it, the more I think it makes sense to move this to a setting.
Hence, let's add a field to the settings page (and in screenly.conf) for default duration and use this value.
Has anyone been able to get audio out of the analog port? I can get audio from HDMI.
As I understand it. If I set the duration to 1000. It will take 1000 seconds, before screenly notice any new changes to the playlist?
I would suggest a button somewhere in the web configuration tool, that will force sceenly to reread the playlist, and refresh the screen.
The usage i'm thinking of is this:
I have 2 webpages.
I want to only show webpage 1, so I set the duration to 10000 (or more).
Later on, I want to change to webpage 2, so I go to View Assets, and removes the start/end date from webpage 1.
The I go to Schedule asset, and sets the webpage 2 to be shown.
... but I still have to wait the 10000 seconds, before it updates... therefore a refresh-button would be nice :)
While playing certain video-clips, Screenly appears to break out of the loop and restart the browser. Needs further investigation.
Right now if there isn't a network connection, screenly thorws an error
I'd like to see some basic logic to address the issue
pseudo-coded
if eth[0] = null
then
Display page "you need a network connection to edit content on this device"
else
Display splash
Add an extra layer of logic that checks if the database was successfully created (in case of issues like low disk storage)
While the viewer-module does obey the end date/time setting, the view playlist page does not.
While the new logo will be the center piece of the splash page. In the meantime, let's update the splash page to use the new look and feel. Once we have the logo, we can simply add it.
I've noticed at a few occasions that omxplayer freezes up, which in turn stops Screenly (since it is gently waiting for it to wrap up).
To avoid this, we need some kind of watchdog functionality that scans for omxplayer-processes that are older than n hours (where n should probably be a setting).
Only affects view_image(), but breaks it.
patch follows:
(branch: master)
diff --git a/viewer.py b/viewer.py
index a56ecd4..6f34eca 100755
--- a/viewer.py
+++ b/viewer.py
@@ -93,7 +93,7 @@ def generate_asset_list():
logging.debug('generate_asset_list: %s: start (%s) end (%s)' % (name, start_date, end_date))
if start_date and end_date:
if start_date < time_cur and end_date > time_cur:
- playlist.append({"name": name, "uri": uri, "duration": duration, "mimetype": mimetype})
+ playlist.append({"asset_id": asset_id, "name": name, "uri": uri, "duration": duration, "mimetype": mimetype})
if not deadline or end_date < deadline:
deadline = end_date
elif start_date >= time_cur and end_date > start_date:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.