• Kinda. While there is no API to make a phone call, you can use the webbrowser module to open a tel:PHONE_NUMBER url. This will show a dialog, asking for confirmation to initiate the call. This should work for you since, when the call ends, you automatically return to Pythonista.

    For example, this code makes a call to Amazon Germany:

    import webbrowser webbrowser.open('tel:+49-800-2629663')
  • @NoBetterName, if you want to create a p2p chat, and the emails, sms etc. were just ideas on how to move the chat messages, I suggest you check Pubnub and/or getstream instead. Or Amazon Web Services, Azure or Google messaging and notification services. All have example chat implementations and free options to get started with.

  • So... I tried the first one. I have about 450 pictures that I put into 45 gifs because Pythonista crashed when I tried to make them longer. Simple solution for me, was to split it into 10 frames per gif, then combine them. It seemed simple to me, but I guess it's not. Oh well. I'll use an online program for this; I just wanted to see if I could hone my coding skills with this project. Thanks for the help, @abcabc

  • Thanks everybody for your quick answers. I have another question, but I'll ask it in another thread.

  • @omz's approach should work fine, as long as you use the returned filename to derive the filename to write, instead of forcing an m4v filename (i.e use os.path.split). Timelapses seem to be .mov files, but in my quick testing seems to copy just fine.

  • This is a known bug. See this tweet from @omz for a workaround: https://twitter.com/olemoritz/status/824848141732106242

  • I tried to remove as many class attributes from GifSpriteNode as possible to simplify/streamline the class. Perhaps a bit too radical. ;-) The duration is now hard coded because I did not find the gif.info['duration'] values to be very helpful. The commented URL seems to have a palette issue on one frame.

    https://github.com/balachandrana/animating_gif_in_pythonista_scene/blob/master/GifSpriteNodeHorse.py

  • Anybody?

  • You can achieve the shake to undo effect using objc_util, thought that may be overkill
    https://developer.apple.com/library/content/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/motion_event_basics/motion_event_basics.html#//apple_ref/doc/uid/TP40009541-CH6-SW2
    It would take a little effort to translate this to pythonista, and you would have to be careful about management of the callback/globals, but should be totally doable, and then you don't have a tight loop checking accel data which would waste battery.

  • @NoBetterName To be honest, I thought it would be easier to do this than it seems to be. It looks like you'd actually need to capture a short video sequence (which doesn't trigger the shutter sound), and then extract the still image from the video somehow, but I'm not sure about the details, and the code would probably be quite different from that for still images.

    As for muting the ringer programmatically, I believe that's not possible at all, but I could be wrong. At the very least, there is no straight-forward way to do this, and it would actually be weird if it worked, because the mute switch is mechanical on iPhones (so if muting the device programmatically was possible, the switch would be in the wrong state).

  • To make it work in multiple-calls, we need to call "manualCapture" from threading.

    It's mistake. The result might be caused from inappropriate handling of delegate disposal. In instant way, removing delegate.release() will be solve the problem. But, fundamentally, we should request to remove a reference to the delegate.

  • if you are able to install your own wireless bridge in your classroom (not sure if all routers let you do this, certainly ones supported by dd-wrt can), then you could log them into the router, then lock them into pythonista. on the router, you would set the firewall to only allow sites on a whitelist.

    Another option may be a custom ui module, which you place in site-packages, and which stubs out ui.WebView, or maybe even implements a white list. You could show a "siteminder" page for sites not on the whitelist, so they think it is a router limitation and don't keep digging. Maybe log such attempts, so you can figure out who the aspiring hackers in your class are.

    ok, another option... you could install into site-packages a pythonista_startup, which uses objc to swizzle the underlying UIWebView class to be nonfunctional. Then use the chmod trick above to prevent casual editing of that file.

  • I still use Python 2.7 in the py3 app

  • @NoBetterName , you m9ght want to,also look at this post. A think @JonB helped me with

    https://forum.omz-software.com/topic/3297/ui-tableviewcell-returning-a-custom-class-instead

Internal error.

Oops! Looks like something went wrong!