annotate cagou/plugins/plugin_transfer_android_video.py @ 356:307c2501d8b2

chat: keep as many instances of opened chat as there are active WHWrapper, instead of just one: Chat instances can be shown on any WHWrapper, even in all at the same time, so we keep as many instances as active wrapper to avoid unnecessary widget (re)creation
author Goffi <goffi@goffi.org>
date Fri, 17 Jan 2020 20:35:57 +0100
parents 772c170b47a9
children 4d660b252487
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
94
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/python
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
3
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Cagou: desktop/mobile frontend for Salut à Toi XMPP client
282
1b835bcfa663 date update
Goffi <goffi@goffi.org>
parents: 126
diff changeset
5 # Copyright (C) 2016-2019 Jérôme Poisson (goffi@goffi.org)
94
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
6
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
11
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
16
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
19
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
20
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from sat.core import log as logging
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
22 log = logging.getLogger(__name__)
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from sat.core.i18n import _
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
24 import sys
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
25 import os
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
26 import os.path
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
27 import time
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
28 if sys.platform == "android":
95
3e3c097b07b7 upload: added voice plugin (for Android)
Goffi <goffi@goffi.org>
parents: 94
diff changeset
29 from plyer import camera
94
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
30 from jnius import autoclass
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
31 Environment = autoclass('android.os.Environment')
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
32 else:
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
33 import tempfile
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
34
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
35
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
36 PLUGIN_INFO = {
312
772c170b47a9 Python3 port:
Goffi <goffi@goffi.org>
parents: 282
diff changeset
37 "name": _("take video"),
94
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
38 "main": "AndroidVideo",
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
39 "platforms": ('android',),
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
40 "external": True,
312
772c170b47a9 Python3 port:
Goffi <goffi@goffi.org>
parents: 282
diff changeset
41 "description": _("upload a video from video application"),
772c170b47a9 Python3 port:
Goffi <goffi@goffi.org>
parents: 282
diff changeset
42 "icon_medium": "{media}/icons/muchoslava/png/film_camera_off_50.png",
94
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
43 }
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
44
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
45
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
46 class AndroidVideo(object):
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
47
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
48 def __init__(self, callback, cancel_cb):
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
49 self.callback = callback
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
50 self.cancel_cb = cancel_cb
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
51 filename = time.strftime("%Y-%m-%d_%H:%M:%S.mpg", time.gmtime())
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
52 tmp_dir = self.getTmpDir()
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
53 tmp_file = os.path.join(tmp_dir, filename)
312
772c170b47a9 Python3 port:
Goffi <goffi@goffi.org>
parents: 282
diff changeset
54 log.debug("Video will be saved to {}".format(tmp_file))
94
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
55 camera.take_video(tmp_file, self.callback)
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
56 # we don't delete the file, as it is nice to keep it locally
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
57
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
58 def getTmpDir(self):
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
59 if sys.platform == "android":
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
60 dcim_path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
61 return dcim_path
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
62 else:
b94967b7ebfd upload: added android video app plugin
Goffi <goffi@goffi.org>
parents:
diff changeset
63 return tempfile.mkdtemp()