Code Monkey home page Code Monkey logo

octoprint-pushover's Introduction

OctoPrint-Pushover

This project is a Pushover plugin for OctoPrint, I wanted to receive notifications on my phone when Octoprint finished, paused or gives an error while printing, and e-mail just isn't good enough. So I build a plugin for the app/service that I use, Pushover.

Installing

Install it trought the bundled Plugin manager or manually by using this url

https://github.com/thijsbekke/OctoPrint-Pushover/archive/master.zip

Configuration

Obtain an API key through the following Link, this is not necessary for this plugin to work.

You also have to enter your user key. You can find your own user key on your Pushover page. Copy and paste it to the "user key" field in the settings dialog of the Octoprint-Pushover plugin. And then you are done.

Additional you can set a priority for each event you want to be notified of.

Features

This plugin supports the following features

  • Send notifications on an interval (percent or time)
  • Include a capture of your camera with your notifications
  • Temperature reached
  • Print done
  • After first couple of layer
  • Print Failed
  • Print Started
  • Printer is Waiting
  • Printer Shutdown
  • Print Paused
  • Alert Event (M300)
  • Panic Event (M112)
  • Error Event
  • Limit to specific devices

This plugin will also append an url to your OctoPrint instance with the notification. If you are missing a feature you can create an issue or you are welcome to contributing by creating a pull request.

Priority

  • Lowest Priority

When this priority is set, messages will be considered lowest priority and will not generate any notification. On iOS, the application badge number will be increased.

  • Low Priority

Messages with this priority will not generate any sound or vibration, but will still generate a popup/scrolling notification depending on the client operating system.

  • Normal Priority

Messages with the normal priority trigger sound, vibration, and display an alert according to the user's device settings. On iOS, the message will display at the top of the screen or as a modal dialog, as well as in the notification center. On Android, the message will scroll at the top of the screen and appear in the notification center.

If a user has quiet hours set and your message is received during those times, your message will be delivered as though it had a priority of Low priority

  • High Priority

Messages sent with this priority bypasses a user's quiet hours. These messages will always play a sound and vibrate (if the user's device is configured to) regardless of the delivery time.

Sound

You can specify a custom sound, your device will play this sound when receiving a message. You can specify one of these sounds

Devices

You can enter the name of your device to send the message directly to that device, rather than all of your devices. An alternative option is to create a delivery group where you can specify your devices and enter that group key as an user key in this plugin.

Pause/Waiting Event

When for example a M0 or a M226 command is received and the settings are complied. This plugin will send a notification. And as bonus it will append any M70 message to the notification, so you can remind yourself which colour you need to switch.

For example

G1 X109.071 Y96.268 E3.54401
G1 X109.186 Y97.500 E3.63927
M70 Sleep Message
M0
G1 X109.186 Y102.500 E4.02408
G1 X108.789 Y104.770 E4.20140

Support my efforts

This is a fun project for me, and I do my best to support those that have issues with this plugin. If you want you can return the favor and leave me a tip trough paypal !

paypal

octoprint-pushover's People

Contributors

foosel avatar jasonmillward avatar lukeiam avatar thijsbekke avatar thomaspurchas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

octoprint-pushover's Issues

Feature request: notification when bed cools off

It would be nice to know when the bed cools off after a print finishes. Otherwise, I have to monitor the temperature until it cools down to room temperature. I can't use the 'Temperature Reached' option because the target is 'off' after the print completes (according to Octoprint), and it never gets down to zero. Maybe there could be some configurable limit that one could set to approximately the room temperature. Then after a print finishes, and it reaches that temperature, send a notification.

Support for "device"

I don't want to spam all devices, so on my own applications I usually restrict the messages to a single device, that is relevant to this action. Would be great to have a textbox/selector for that.

Yes my fault (no notifications)

Yes it is my fault notifications are not sending anymore. I was procrastinating, I was planning on making it easier to enter your own API key. Like I mentioned in issue #22. This API key has a limit.

You can enter your own API key under the advanced setting, and you can get your own API key here: https://pushover.net/apps/clone/octoprint.

Now I am quickly develop something fancy too, hopefully fix this issue.

Always says there are new updates

It appears as though the version in setup.py was not bumped with the new tag and so octoprint thinks that there is a new version available even after updating repeatedly.

Send push message with webcam image

Hi there,

since pushover 3.0 it supports also to send push messages with images.
It would be a cool feature if your plugin could send a webcam image of the finished print.

[Request] Send an image every X% of progress

I currently use an external method to do this, but I would love for example to send a picture every 25% or so to be reminded to check on the status of the print and quickly see if it has failed.

Using my other method that currently uses homeassistant I send notifications at 5/25/50/75/99% completion.

Customize pushover message

I'd like to customize the message that comes from the pushover notification. At the moment they all start with "Thijs". I'd like it to say "3d printer" or "Octoprint" or something.

Feature Request: Notification on startup.

There is already a notification for printer shutdown, but how about printer startup? It would let me know if something bad happened to octoprint and the printer restarted or such.

Feature: Pushover Macro(s) to be used in GCode

Hi.

at first a big thank your for the great plugin. Tip is coming.
Wouldn't it be easier to allow users to use macros like

@pushover "this my message" Low ....
or
G999 "this my message" Low ....

at any point of time in the Gcode.

The idea came when I saw the new macro plugin. Code for intercepting macros or fake GCode commands.
Then you do not need to add any kind of event, e.g. for reaching the temperatur, then someone could add a command at the end of his start script.

Here is some nice code from the macro plugin:


def gcode_queueing(
self,
c,
p,
command,
ct,
g,
subcode=None,
tags=None,
*args,
**kwargs,
):
if command.startswith("@"):
...

Thanks
Christof

%Progress Spam

When using "Notify me (percent)" the plugin seems to send the notification multiple times, especially on slower prints.

Expected behavior:
Single notification at requested percentage.

Current behavior:
Multiple notifications occurring within requested percentage, especially on longer prints.

Use camera to capture image not working

I have "Use camera of OctoPrint to send a image" option checked, but my push notification (iOS) does not contain any images. My OctoPrint webcam works fine otherwise.

IMG_0C7899B5045C-1

Feature request: Notify per x layers / notify after bed cooled down to specific temperature

Notify per x layers: This would be a nice feature to have, it seems more useful to me than just notifying per x time passed, or per %. You would get more notifications for tall narrow prints that might have a high chance of failing, like you would with % while still not getting spammed with notifications for quick prints like you would with %. And with time passed, you may not yet any notifications for quick prints, where you would get at least one or two with per x layers.

As for the bed cooldown, those of us with printer beds like the AnyCubic Ultrabase and Geeetech Superplate need to wait for the bed to cool down a bit to easily remove prints (below 40C or so) so having a notification for when the print is ready to be removed would be really helpful. Those beds are designed for the print to stick when the bed is hot, but come off easily when it's cooled down, and it really works.

Command for saving picture to be used in job finished message

Somebody else also asked about this in another way. When the job is finished the bed moves forward and out of view of the camera so I will always get a picture from an empty part of the bed. You adviced to use a 'Pause' code.
But is it possible to have a 'custom' G-code that will save the current image form the camera as a picture and that will be used in the job finished message. Then I can insert that code in the job end G-codes before the final move of the bed and the problem is solved.

notification test

is there any way you can add a test button to make sure notification works on your phone so like send a print done or print failed was not sure where to post this so i put it here

Request

Hi. Firstly, thanks for making this plugin for pushover, it's awesome!

I wondered if there was any way you could add a notification option, like you have for failed and completed, but for when a print is paused using the M0 command? Sometimes I add some pause code into my gcode so I can change colours and it works great. I make the printer beep when it pauses, so I know when to change colours, but sometimes I don't hear this from where I am. If I could get a pushover notification to say the pause has happened that would be amazing.

Thanks again for your work!

Multiple Pushover accounts

Is it possible to configure and send notifications to 2 different Pushover accounts? Thank you. Great job.

No connection

The plugin tells me since the last update thats no internet connection could be established.... Why?
Using a console, i can reach pushover and any other site on the internet...

no Pushover message with event PrintStarted

I am not receiving a Pushover message upon the "Print Started" event.
When activating debug logging it appears this event triggers an 'invalid user' error?

2020-11-30 22:32:06,785 - octoprint.plugins.pushover - DEBUG - Got an event: PrintStarted, payload: {'name': 'CE3PRO_freezing-pixels-christmas-tree-a_02mm_pla_mk3s_.gcode', 'path': 'CE3PRO_freezing-pixels-christmas-tree-a_02mm_pla_mk3s_.gcode', 'origin': 'local', 'size': 2167685, 'owner': 'Sen', 'user': 'Sen'}
2020-11-30 22:32:06,786 - octoprint.plugins.pushover - DEBUG - Event triggered: PrintStarted 
2020-11-30 22:32:06,786 - octoprint.plugins.pushover - DEBUG - Snapshot URL: https://router.lan/nxwitness/snapshot.php 
2020-11-30 22:32:12,267 - octoprint.plugins.pushover - DEBUG - Response: b'{"user":"invalid","errors":["user identifier is not a valid user, group, or subscribed user key"],"status":0,"request":"b156f17a-a0f6-4a32-b357-b6ff68803c45"}'

Pushover messages do arrive for all other activated events (Startup, Shutdown, Print Done, Percent schedule notifications).

2020-11-30 23:34:17,668 - octoprint.plugins.pushover - DEBUG - Got an event: DisplayLayerProgress_heightChanged, payload: {'updateReason': 'heightChanged', 'totalLayer': '1026', 'currentLayer': '56', 'lastLayerDuration': '0h:00m:21s', 'lastLayerDurationInSeconds': 21, 'averageLayerDuration': '0h:00m:21s', 'averageLayerDurationInSeconds': 21, 'currentHeight': '11.47', 'currentHeightFormatted': '11.5', 'totalHeight': '205.3', 'totalHeightFormatted': '205.3', 'feedrate': '1200', 'feedrateG0': '9000', 'feedrateG1': '1200', 'fanspeed': '100%', 'progress': '10', 'printTimeLeft': '9h18m10s', 'printTimeLeftInSeconds': 33490, 'estimatedEndTime': '08:52', 'estimatedChangedFilamentTime': '-', 'changeFilamentTimeLeft': '-', 'changeFilamentTimeLeftInSeconds': 0, 'changeFilamentCount': 0}
2020-11-30 23:34:17,668 - octoprint.plugins.pushover - DEBUG - event: DisplayLayerProgress_heightChanged has an AttributeError {'updateReason': 'heightChanged', 'totalLayer': '1026', 'currentLayer': '56', 'lastLayerDuration': '0h:00m:21s', 'lastLayerDurationInSeconds': 21, 'averageLayerDuration': '0h:00m:21s', 'averageLayerDurationInSeconds': 21, 'currentHeight': '11.47', 'currentHeightFormatted': '11.5', 'totalHeight': '205.3', 'totalHeightFormatted': '205.3', 'feedrate': '1200', 'feedrateG0': '9000', 'feedrateG1': '1200', 'fanspeed': '100%', 'progress': '10', 'printTimeLeft': '9h18m10s', 'printTimeLeftInSeconds': 33490, 'estimatedEndTime': '08:52', 'estimatedChangedFilamentTime': '-', 'changeFilamentTimeLeft': '-', 'changeFilamentTimeLeftInSeconds': 0, 'changeFilamentCount': 0}
2020-11-30 23:34:17,753 - octoprint.plugins.pushover - DEBUG - Response: b'{"status":1,"request":"92d1b6a5-1f0e-49d7-8586-6f6bccbf0b0c"}'
...
2020-12-01 03:52:26,064 - octoprint.plugins.pushover - DEBUG - Got an event: PrintDone, payload: {'name': 'CE3PRO_freezing-pixels-christmas-tree-a_02mm_pla_mk3s_.gcode', 'path': 'CE3PRO_freezing-pixels-christmas-tree-a_02mm_pla_mk3s_.gcode', 'origin': 'local', 'size': 2167685, 'owner': 'Sen', 'time': 19219.36798565113}
2020-12-01 03:52:26,064 - octoprint.plugins.pushover - DEBUG - Event triggered: PrintDone 
2020-12-01 03:52:26,064 - octoprint.plugins.pushover - DEBUG - Snapshot URL: https://router.lan/nxwitness/snapshot.php 
2020-12-01 03:52:35,027 - octoprint.plugins.pushover - DEBUG - Response: b'{"status":1,"request":"d691ee0d-bacb-4c91-abef-8168e420c47f"}'

Notifications are not working

This plugin gets more popular I guess, again the api key reached it limit of 12,500 messages this month. This is the second time (#13), and maybe I must beg for more free notifications.

You have 2 options now.

  • Create an own API Token, and enter it in the plugin, see the pushover website for more info how too create an API Token.
  • Wait until it is April the message count is reset by then. In the meantime walk too your printer more often :(.

image

Only receive the "Temperature Reached" notification whenever I start a print. Not before.

I only receive a notification that the set temperature has been reached whenever I "load and print" a file in octoprint. When the temp is reached without loading a print, I don't receive any notification. It could be at the set temperature for 5/10 minutes and I will not get a notification until I start a print, and then I instantly get the notification. Is there any way to modify this?

MMU Notifications

I am looking for notification for when the Prusa MMU2 needs attention. It displays a message on the screen so I am guessing that there is a code that can be trapped.

Webcam Image Missing

Since the most recent update the webcam snapshot is missing from the push notification? Snapshot test within Octoprint works fine.

[Request] Add support for event.waiting ?

Hey - I'm enjoying this plugin, but I'm not getting pause alerts for when I inject an M600 filament color change. I've tinkered with coding this myself, but no luck yet.

I did notice in Octoprint's /OctoPrint/blob/master/src/octoprint/util/comm.py file, there's a gcodeToEvent section, that includes entries like "M226": Events.WAITING. So this might be possible by adding an entry for "M600": Events.WAITING to the OctoPrint code, plus adding support for this plugin detecting these Waiting events.

Not Sending Push Notifications

As of yesterday, all push notification are no longer being delivered from any of my Octoprint Devices. I tested with the test option and watched the console on the pushover website and the Messages Delivered/Pending did not change.

Plugin interrupts startup....

Hi, with the plugin installed from repository and configured the webinterfaces from octoprint dont comes up.

I activated plugin debug and found this:

Sep 21 21:24:11 octopi octoprint[6409]: 2021-09-21 21:24:11,685 - octoprint.plugins.pushover - DEBUG - Got an event: ClientClosed, payload: {'remoteAddress': '192.168.99.50'}
Sep 21 21:24:11 octopi octoprint[6409]: 2021-09-21 21:24:11,687 - octoprint.plugins.pushover - DEBUG - event: ClientClosed has an AttributeError {'remoteAddress': '192.168.99.50'}
Sep 21 21:28:35 octopi octoprint[6409]: 2021-09-21 21:28:35,408 - octoprint.plugins.pushover - DEBUG - Got an event: UserLoggedIn, payload: {'username': 'thomas'}
Sep 21 21:28:35 octopi octoprint[6409]: 2021-09-21 21:28:35,408 - octoprint.plugins.pushover - DEBUG - event: UserLoggedIn has an AttributeError {'username': 'thomas'}
Sep 21 21:28:42 octopi octoprint[6409]: 2021-09-21 21:28:42,889 - octoprint.plugins.pushover - DEBUG - Got an event: ClientClosed, payload: {'remoteAddress': '192.168.99.50'}
Sep 21 21:28:42 octopi octoprint[6409]: 2021-09-21 21:28:42,890 - octoprint.plugins.pushover - DEBUG - event: ClientClosed has an AttributeError {'remoteAddress': '192.168.99.50'}

this messages loops multiple times ...

Any idea what could me wrong?

BUG: Failure in newest update

I updated to the latest version today (with Python3 support), and now most of my notifications are gone. I get % complete notifications, and "Print finished".. But bed temp and scheduled notifications don't come through.

The logs show this error:

2020-05-12 10:06:24,782 - octoprint.plugins.pushover - INFO - Got an event: DisplayLayerProgress_feedrateChanged Payload: {'changeFilamentTimeLeft': '-', 'totalHeightWithExtrusionFormatted': '9.9', 'feedrate': '7200', 'updateReason': 'fee
drateChanged', 'totalHeight': '9.89', 'totalLayer': '55', 'estimatedEndTime': '16:13', 'changeFilamentCount': 0, 'estimatedChangedFilamentTime': '-', 'printTimeLeftInSeconds': 22021, 'totalHeightFormatted': '9.9', 'currentHeight': '0.79',
 'printTimeLeft': u'6h7m1s', 'lastLayerDuration': '0h:15m:15s', 'averageLayerDurationInSeconds': '-', 'lastLayerDurationInSeconds': 915, 'changeFilamentTimeLeftInSeconds': 0, 'averageLayerDuration': '-', 'feedrateG1': '960', 'feedrateG0':
 '7200', 'totalHeightWithExtrusion': '9.888', 'fanspeed': '100%', 'progress': '7', 'currentHeightFormatted': '0.8', 'currentLayer': '3'}
2020-05-12 10:06:27,898 - octoprint.util.comm - ERROR - Error while processing hook pushover for phase sent and command M105:
Traceback (most recent call last):
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/util/comm.py", line 3332, in _process_command_phase
    hook_results = hook(self, phase, command, command_type, gcode, subcode=subcode, tags=tags)
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint_pushover/__init__.py", line 257, in sent_gcode
    self.check_schedule()
  File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint_pushover/__init__.py", line 236, in check_schedule
    self._settings.get(["events", "Scheduled", "message"]).format(elapsed_time=self.last_minute))
UnicodeEncodeError: 'ascii' codec can't encode character u'\u23f0' in position 42: ordinal not in range(128)

No notification on error

Hello,

I had a "thermal runaway" today andgot no notification.
"Print done" notification works.

Configure api_token?

Hey,

i would like to set the api_token, so i can change the pushover-channel/application.
It seems, that you hardcoded your api_token into init.py. I wish, i could change it in the settings, not in the code itself.

Error trace when calling pushover plugin

Hi,

I found this trace in my logs but from what I can tell the pushover plugin seems to work as intended. Can't imagine such a trace is intended though so I thought I'd report it :)

Using Octoprint 1.3.7rc2 and Pushover Plugin 0.2.1

2018-03-29 01:22:57,754 - octoprint.plugin - ERROR - Error while calling plugin pushover Traceback (most recent call last): File "/home/pi/OctoPrint/venv/local/lib/python2.7/site-packages/octoprint/plugin/__init__.py", line 225, in call_plugin result = getattr(plugin, method)(*args, **kwargs) File "/home/pi/OctoPrint/venv/local/lib/python2.7/site-packages/octoprint_pushover/__init__.py", line 229, in on_event payload["message"] = getattr(self, event)(payload) File "/home/pi/OctoPrint/venv/local/lib/python2.7/site-packages/octoprint_pushover/__init__.py", line 177, in PrintFailed file = os.path.basename(payload["name"]) KeyError: 'name'

install problems

Hi, plugin not appearing in settings list after install, although is shown as installed in plugins manager. Turn off plugin Octoprint asks to restart, reenable plugin and still doesn't show. Un/reinstalled and it didn't help. Other than a clean octoprint install, do you have any ideas? Thanks

0.1.5 on 1.3.0 master.
pip 8.1.1 to 9.0.1 upgrade notification on install but no other errors. I've tried on

Option to change Octoprint Name in Pushover

I've got your plugin installed and working on a couple of installs of Octopi. It is working great and very helpful.

Is there a way to have the Name that displays the message from Pushover be different? I have 2 installations of Octopi and it would be helpful to me if I could distinguish which installation the messages are coming from. I'm not sure if this is a function of Pushover or the plugin at this point.

Thank you for your work so far.

Question about development

Hello!

If I were to make a pull request adding features such as notification on start, notification of time remaining every X minutes, etc. Would you be interested in reviewing and pulling said changes? I think it would have to disable said features if the user does not use their own API key, as you mentioned that was an issue for you. However, I use my own anyways, so that is not an issue for me.

If you would rather not, would you be OK with me making my own plugin, borrowing some of your pushover-interfacing code to add the sole features I am missing? (I know it's GPL, but I'd rather still ask if you have any preferences about if it's etc.)

Thanks!

Take photo before print ends

G91
G1 F1800 E-3
G1 F3000 Z10
G90
G1 X0 Y220 F1000 ; prepare for part removal
M106 S0 ; turn off cooling fan
M104 S0 ; turn off extruder
M140 S0 ; turn off bed
M84 ; disable motors

Above is my end g-code, which moves the bed to the front and this is out of the view of the camera. Would it be possible to take a photo before the move happens?

Below is a screenshot from my phone how it looks. The bed moves to right from the camera POV, so the print is not visible.

screenshot_20181125-165657

Feature Request

Hi. I love this plug in. I can finally know when my prints finish.

One thing I would love to see is the option to motify when the print head and bed reach their target temperature. My printer for some reason does not wait for temp before starting, so I have to preheat it, but then sometimes I get distracted and forget to start the print for a while. It would be great to have a notificaiton when it reached temp.

Thank you for your awesome plug in. Please let me know your thoughts on whether this is possible.
Todd

Network Error

Hello,

I've installed the plugin, he work normally.
But, after a server restart, the plugin don't work.
the error is :

Sending failed: error while instantiating Pushover: HTTPSConnectionPool(host='api.pushover.net', port=443): Max retries exceeded with url: /1/users/validate.json (Caused by SSLError(SSLError("bad handshake: Error([('', 'osrandom_rand_bytes', 'getrandom() initialization failed.')],)",),))

Can you help me, please ? :D

Notifications are not working

I’ll guess that everyone is printing Christmas ornaments and send a Pushover message when it is done. At the time of writing it almost reach the limit of messages this plugin can send for free. And that is probably the reason why you are reading this. This plugin uses an API key that is able too send 12,500 messages each month. And this month it will be close to this limit. Actually I must be happy that 123,045 messages are sent this year.

You have 2 options now.

  • Create an own API Token, and enter it in the plugin, see the pushover website for more info how too create an API Token.
  • Wait until it is January the message count is reset by then. In the meantime walk too your printer more often (it is good for burning that Christmas food we ate).

Happy new year !!

image
A graph with the message count each month

Request: Add support for Job Started Notifcation

It would be great to also get a notification when a job starts (As in, bed warmed up and print commencing).

I like to watch the first couple minutes of a print to make sure the bed adhesion looks good but given my printer takes a while to heat up for ABS and it's in another room I often miss the start.

Installation failed

I tried to install with Octoprint's Plugin Manager, but at the end I got error:

creating build/lib.linux-armv7l-2.7
creating build/lib.linux-armv7l-2.7/PIL
copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/TarIO.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/SgiImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageWin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageTransform.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/__init__.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/FtexImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ExifTags.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageOps.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PcfFontFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/GbrImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/DdsImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageDraw.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImagePalette.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageMath.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImtImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PdfImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageDraw2.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/WebPImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageMorph.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PyAccess.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/IcoImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/BmpImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/version.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/MicImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/MpegImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/GimpPaletteFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/_tkinter_finder.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/IptcImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/WmfImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/features.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageSequence.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/GimpGradientFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageEnhance.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageQt.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PcxImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PcdImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/JpegImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/MspImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageFont.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageTk.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PdfParser.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/SunImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/XpmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/GdImageFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageColor.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/EpsImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImagePath.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PaletteFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PpmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ContainerIO.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageMode.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/WalImageFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageStat.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/FliImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PSDraw.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/FontFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageFilter.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/_binary.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/DcxImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/TgaImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageCms.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/GifImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PalmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/BlpImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/BdfFontFile.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PsdImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/FpxImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/MpoImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/OleFileIO.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/JpegPresets.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/XbmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageGrab.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PngImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/_util.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/PixarImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageChops.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/TiffTags.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/ImageShow.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/Image.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/TiffImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
copying src/PIL/CurImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
running egg_info
writing src/Pillow.egg-info/PKG-INFO
writing top-level names to src/Pillow.egg-info/top_level.txt
writing dependency_links to src/Pillow.egg-info/dependency_links.txt
reading manifest file 'src/Pillow.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.c'
warning: no files found matching '*.h'
warning: no files found matching '*.sh'
no previously-included directories found matching 'docs/_static'
warning: no previously-included files found matching '.appveyor.yml'
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.codecov.yml'
warning: no previously-included files found matching '.editorconfig'
warning: no previously-included files found matching '.landscape.yaml'
warning: no previously-included files found matching '.travis'
warning: no previously-included files found matching '.travis/*'
warning: no previously-included files found matching 'build_children.sh'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files matching '.git*' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
running build_ext
The headers or library files could not be found for jpeg,
a required dependency when compiling Pillow from source.
Please see the install instructions at:
https://pillow.readthedocs.io/en/latest/installation.html
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-UcPdCZ/pillow/setup.py", line 806, in <module>
raise RequiredDependencyException(msg)
__main__.RequiredDependencyException:
The headers or library files could not be found for jpeg,
a required dependency when compiling Pillow from source.
Please see the install instructions at:
https://pillow.readthedocs.io/en/latest/installation.html
----------------------------------------
Command "/home/octoprint/OctoPrint/venv/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-UcPdCZ/pillow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-OuJ5wm/install-record.txt --single-version-externally-managed --compile --install-headers /home/octoprint/OctoPrint/venv/include/site/python2.7/pillow" failed with error code 1 in /tmp/pip-install-UcPdCZ/pillow/
Error!
Could not parse output from pip, see plugin_pluginmanager_console.log for generated output

Enhancement: Timelapse GIFs in Finished Notification

Earlier this year, pushover added support for animated GIFs. It would be awesome to have a GIF sent instead of a still image for the print finished notification. I am not sure how easy it would be to convert the timelapse into a GIF.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.