Commit graph

3785 commits

Author SHA1 Message Date
910304b817
[Media UI] More URI-persisted navigation items.
- `player`
- `provider`
2024-07-15 23:12:04 +02:00
e8723eae98
Merge branch 'master' into 391/improve-youtube-support 2024-07-15 22:35:24 +02:00
a746273f73
[Media UI] Added media view to URL fragment. 2024-07-15 22:34:32 +02:00
e180c9c76f
[Media UI] Extend YouTube video events to all media views.
These events should be available for all YouTube videos, regardless of
where they are rendered:

- `add-to-playlist`
- `remove-from-playlist`
- `download`
2024-07-15 22:32:13 +02:00
c416d0ea1f
[Media UI] MediaImage should emit both play and select. 2024-07-15 22:28:06 +02:00
75aed6af92
[UI] Added asynchronous timeout utility. 2024-07-15 22:26:42 +02:00
ef4d0bd38c
[media] Support for generic media downloads. 2024-07-15 04:09:54 +02:00
bd01827b52
[Automatic] Updated components cache 2024-07-15 04:09:54 +02:00
f64d47565d
[Media UI] Support for generic media download. 2024-07-15 04:09:54 +02:00
79ba8deb71
[media] Added support for yt-dlp-compatible URLs to media.download.
Also, added `MediaDownloadEvent`s to keep track of the state of the
download.
2024-07-15 04:09:53 +02:00
84e06e30fe
[core] New architecture for the Redis bus.
- Use pubsub pattern rather than `rpush`/`blpop` - it saves memory, it's
  faster, and it decreases the risk of deadlocks.

- Use a connection pool.

- Propagate `PLATYPUSH_REDIS_QUEUE` environment variable so any
  subprocesses can access it.
2024-07-15 04:09:53 +02:00
f78027a6eb
[Automatic] Updated components cache 2024-07-15 02:09:39 +00:00
b43c4612fd
[media] Support for generic media downloads. 2024-07-15 04:08:26 +02:00
dce6096020
[Automatic] Updated components cache 2024-07-14 01:07:51 +00:00
96aa22c03e
[media] Added support for yt-dlp-compatible URLs to media.download.
Also, added `MediaDownloadEvent`s to keep track of the state of the
download.
2024-07-14 03:06:36 +02:00
16527417da
[core] New architecture for the Redis bus.
- Use pubsub pattern rather than `rpush`/`blpop` - it saves memory, it's
  faster, and it decreases the risk of deadlocks.

- Use a connection pool.

- Propagate `PLATYPUSH_REDIS_QUEUE` environment variable so any
  subprocesses can access it.
2024-07-14 03:06:35 +02:00
1ad68cac11 Merge branch 'master' into 391/improve-youtube-support 2024-07-13 00:55:34 +02:00
972f9dffb9
[YouTube UI] Fixed infinite scroll for channels. 2024-07-13 00:54:29 +02:00
6a0f19a62f
[Automatic] Updated components cache 2024-07-12 22:42:49 +00:00
81fb1a47c3
Merge branch 'master' into 391/improve-youtube-support 2024-07-13 00:41:46 +02:00
24b5b3ba14
[youtube] Added youtube.is_subscribed action. 2024-07-13 00:41:38 +02:00
21ac87394a
[YouTube UI] Added channel subscribe/unsubscribe buttons. 2024-07-13 00:40:29 +02:00
55c4f5797b
[YouTube UI] Added support for browsing channels from search results. 2024-07-13 00:04:26 +02:00
c7f12e0bd8
[Automatic] Updated components cache 2024-07-12 01:13:48 +00:00
5ff839919c
Merge branch 'master' into 391/improve-youtube-support 2024-07-12 03:12:39 +02:00
7266fe8a43
[youtube] Always add id and url to playlist results. 2024-07-12 03:12:31 +02:00
c8fa53e62f
[media.mpv] Fix for media duration if playback_time is not available. 2024-07-12 03:12:31 +02:00
e65bf99baf
[YouTube UI] Added support for browsing playlists from search results. 2024-07-12 03:10:43 +02:00
9b42815d77
[Automatic] Updated components cache 2024-07-11 21:45:09 +00:00
7c610413df
Merge branch 'master' into 391/improve-youtube-support 2024-07-11 23:44:07 +02:00
aaf6c39255
Fixed RST doc typo. 2024-07-11 23:43:53 +02:00
a4979f1513
[Media UI] Support for playlists in search results. 2024-07-11 23:42:18 +02:00
ded64e8dc2
[UI Performance] Lazy initialization for router components. 2024-07-11 23:40:19 +02:00
1a9ac56923
Merge branch 'master' into 391/improve-youtube-support 2024-07-11 23:37:57 +02:00
12d53b846e
[Automatic] Updated components cache 2024-07-11 21:37:44 +00:00
5e905db0f5
[youtube] Support for playlists and channels in search results. 2024-07-11 23:36:25 +02:00
snyk-bot
e70f12b948
fix: upgrade vue from 3.4.27 to 3.4.29
Snyk has created this PR to upgrade vue from 3.4.27 to 3.4.29.

See this package in npm:
vue

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-07-06 04:46:46 +00:00
snyk-bot
e59606e588
fix: upgrade vue-router from 4.3.2 to 4.3.3
Snyk has created this PR to upgrade vue-router from 4.3.2 to 4.3.3.

See this package in npm:
vue-router

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-07-02 06:32:38 +00:00
98a6adb7ef
[Youtube UI] More playlist actions.
- `create_playlist`
- `rename_playlist`
- `delete_playlist`
2024-06-27 01:26:00 +02:00
d4354e81f8
[Youtube UI] Added playlist operations.
- `add_to_playlist`
- `remove_from_playlist`
2024-06-27 00:24:31 +02:00
c9daa037a7
[Automatic] Updated components cache 2024-06-26 22:23:01 +00:00
701623c99d
Merge branch 'master' into 391/improve-youtube-support 2024-06-27 00:22:22 +02:00
8880b966fc
[youtube] Fixed playlist operations URLs. 2024-06-27 00:21:27 +02:00
5f23aa8e78 Merge branch 'master' into 391/improve-youtube-support 2024-06-26 00:05:22 +02:00
8cea668e37
[Automatic] Updated components cache 2024-06-25 22:04:33 +00:00
26d9e6d9b9 Merge branch 'master' into 391/improve-youtube-support 2024-06-26 00:03:47 +02:00
b890326e71 [youtube] Added Piped edit actions.
- `subscribe`
- `unsubscribe`
- `add_to_playlist`
- `remove_from_playlist`
- `create_playlist`
- `remove_playlist`
2024-06-25 22:03:40 +00:00
b83dee50e5 Merge branch 'master' into 391/improve-youtube-support-backend 2024-06-26 00:02:26 +02:00
773986f211
[youtube] Added Piped edit actions.
- `subscribe`
- `unsubscribe`
- `add_to_playlist`
- `remove_from_playlist`
- `create_playlist`
- `remove_playlist`
2024-06-25 23:59:20 +02:00
705ba82fa1
[Media UI] Added button to get the raw stream URL from youtube-dl compatible media. 2024-06-25 23:03:44 +02:00
affe95be96
[Automatic] Updated components cache 2024-06-25 21:02:16 +00:00
6faa845afd
Migrated /file route.
Streaming content from a Flask route wrapped into a Tornado route is a
buffering nightmare.

`/file` has now been migrated to a pure Tornado asynchronous route
instead.
2024-06-25 23:00:51 +02:00
c7ee97bb0b
Bump version: 1.1.0 → 1.1.1 2024-06-25 01:51:27 +02:00
1a21671dde
[Automatic] Updated components cache 2024-06-24 18:30:48 +00:00
1f544c9e53
Fixed schema attribute description type mismatch. 2024-06-24 20:29:35 +02:00
a754b06f88
[Automatic] Updated UI files 2024-06-24 17:23:31 +00:00
3dc1ff3c6e
[#408] Rewritten+expanded torrent UI.
Closes: #408
2024-06-24 19:20:04 +02:00
1774e464cc
[torrent] Added is_media attribute to torrent results. 2024-06-24 01:12:00 +02:00
1dd905dc66
[torrent] Normalized limit/page parameters in torrent.search. 2024-06-23 23:42:04 +02:00
ec050b2853
[HTTP] Added authenticated /file?path=<path> route. 2024-06-23 23:40:39 +02:00
5672b23fbe
[Automatic] Updated UI files 2024-06-22 23:43:49 +00:00
91e2530dd5 [#407] Implemented torrent.csv backend 2024-06-22 23:42:18 +00:00
8fc3201b8c [torrent] Refactored torrent search.
Allow for more torrent search providers other than PopcornTime (in
preparation for torrent-csv).
2024-06-22 23:42:18 +00:00
snyk-bot
9027eaf4d1
fix: upgrade sass from 1.77.2 to 1.77.3
Snyk has created this PR to upgrade sass from 1.77.2 to 1.77.3.

See this package in npm:
sass

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-06-20 20:17:29 +00:00
dependabot[bot]
8b65a5f151
Bump braces from 3.0.2 to 3.0.3 in /platypush/backend/http/webapp
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 02:36:09 +00:00
snyk-bot
d8598f60a2
fix: upgrade axios from 1.6.8 to 1.7.1
Snyk has created this PR to upgrade axios from 1.6.8 to 1.7.1.

See this package in npm:
axios

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-06-10 17:58:39 +00:00
36f49952c4
Merge pull request #430 from blacklight/snyk-upgrade-710b29e45259ad93d91928143706d645
[Snyk] Upgrade sass from 1.76.0 to 1.77.2
2024-06-10 16:33:58 +02:00
snyk-bot
d6ab2ee02b
fix: upgrade sass from 1.76.0 to 1.77.2
Snyk has created this PR to upgrade sass from 1.76.0 to 1.77.2.

See this package in npm:
sass

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-06-07 17:21:22 +00:00
snyk-bot
2e08e2f820
fix: upgrade vue from 3.4.24 to 3.4.27
Snyk has created this PR to upgrade vue from 3.4.24 to 3.4.27.

See this package in npm:
vue

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-06-07 17:21:17 +00:00
3f2832a077
Merge branch 'master' into snyk-upgrade-2f9bcb05344a53203d1db8700a74298c 2024-06-06 22:32:04 +02:00
6f8eb397d2
Merge pull request #427 from blacklight/snyk-upgrade-97c24303ee224553f29b460d83c6c780
[Snyk] Upgrade cronstrue from 2.49.0 to 2.50.0
2024-06-06 22:30:59 +02:00
3163721bf3
Merge pull request #426 from blacklight/snyk-upgrade-26bc4dca62d58f39bfb77f2e69121708
[Snyk] Upgrade sass from 1.75.0 to 1.76.0
2024-06-06 22:30:43 +02:00
d79b8a1de5
Merge pull request #425 from blacklight/snyk-upgrade-a75151e7066361ecbf2a647d6e707a32
[Snyk] Upgrade vue from 3.4.23 to 3.4.24
2024-06-06 22:30:20 +02:00
3afc6b2271
[Automatic] Updated components cache 2024-06-06 20:29:13 +00:00
17b6b02986 Replaced warnings.warn with logging.warnings.
I couldn't find an easy and reliable way of routing `warnings.warn` to
`logging`.

Closes: #281
2024-06-06 20:28:23 +00:00
87a902bfa3
[Automatic] Updated components cache 2024-06-06 01:28:13 +00:00
421feffd3e
Bump version: 1.0.7 → 1.1.0 2024-06-06 03:27:04 +02:00
8814859abc
[zwave.mqtt] Fixed typo in documentation. 2024-06-06 03:27:03 +02:00
0ccd029ff1
[Automatic] Updated components cache 2024-06-06 00:25:21 +00:00
e52f5e06f4 [calendar.ical] Fixed timezone/datetime parsing issues.
Closes: #405
2024-06-06 00:24:31 +00:00
snyk-bot
066d71faa3
fix: upgrade core-js from 3.37.0 to 3.37.1
Snyk has created this PR to upgrade core-js from 3.37.0 to 3.37.1.

See this package in npm:
core-js

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-06-04 18:18:54 +00:00
4f19b45975 Bump version: 1.0.6 → 1.0.7 2024-06-02 15:49:59 +00:00
7a8f30e5e0 [#384] Added assistant.openai and tts.openai plugins.
Closes: #384
2024-06-02 15:31:11 +00:00
3528b3646f [openai] Update documentation to include assistant and tts. 2024-06-02 15:31:11 +00:00
9cca928d4b [#348] Added openai.transcribe action.
This API is the foundation for the `assistant.openai` plugin.
2024-06-02 15:31:11 +00:00
f356fcd844 Added tts.stop method. 2024-06-02 15:31:11 +00:00
fcae7aa3ad Several improvements for assistant plugins.
- `stop_conversation_on_speech_match` should default to True.

- `render_response` should also handle conversation follow-ups, set the
  follow-up to True if the response ends with a question mark and the
  value of `with_follow_on_turn` is not set,

- Don't render responses if a `tts_plugin` is not set.
2024-06-02 15:31:11 +00:00
c7d640a1d2 IntentRecognizedEvent should stop the current assistant conversation when matched by a hook. 2024-06-02 15:31:11 +00:00
1cc2aaf5a4 [assistant.picovoice] _on_response_* methods should have varargs. 2024-06-02 15:31:11 +00:00
2acf6ef3e9 Bump version: 1.0.5 → 1.0.6 2024-06-01 09:01:07 +00:00
5fc9c1199b Fixed the root cause of the failure on the time module.
The previous commit prompted a new error:

```
2024-06-01 10:54:08,310|ERROR|platypush:plugin:bluetooth|module 'platypush.entities.time' has no attribute 'time'
Traceback (most recent call last):
  File "/usr/lib/python3.9/dist-packages/platypush/plugins/__init__.py", line 247, in _runner
    self.main()
  File "/usr/lib/python3.9/dist-packages/platypush/plugins/bluetooth/__init__.py", line 590, in main
    self._refresh_cache()
  File "/usr/lib/python3.9/dist-packages/platypush/plugins/bluetooth/__init__.py", line 146, in _refresh_cache
    get_entities_engine().wait_start()
  File "/usr/lib/python3.9/dist-packages/platypush/entities/__init__.py", line 48, in get_entities_engine
    time_start = time.time()
AttributeError: module 'platypush.entities.time' has no attribute 'time'
```

Which explains even the previous error: `import time` in that module
won't use the `time` module from the Python library, but the `.time`
module within the same directory.

This error only happens when the current directory is part of PYTHONPATH
(and usually it shouldn't), but for sake of keeping things safe I've
replaced `time()` with `utcnow().timestamp()`, with `utcnow` imported
from `platypush.utils`.
2024-06-01 09:01:07 +00:00
b067430cd5 Weird fix for a weird error that suddenly started on one of my machines.
```
Traceback (most recent call last):
  File "/usr/lib/python3.9/dist-packages/platypush/plugins/__init__.py", line 247, in _runner
    self.main()
  File "/usr/lib/python3.9/dist-packages/platypush/plugins/bluetooth/__init__.py", line 590, in main
    self._refresh_cache()
  File "/usr/lib/python3.9/dist-packages/platypush/plugins/bluetooth/__init__.py", line 146, in _refresh_cache
    get_entities_engine().wait_start()
  File "/usr/lib/python3.9/dist-packages/platypush/entities/__init__.py", line 48, in get_entities_engine
    time_start = time()
TypeError: 'module' object is not callable
```

There isn't a single reason in this world for this error to happen.

If I do `from time import time`, then `t = time()` is 100% valid Python.

I have no clue of what may be causing it, but I hope that this will fix
it.
2024-06-01 08:50:30 +00:00
ff60896625
[Automatic] Updated components cache 2024-05-31 23:55:27 +00:00
67b6e3a608
Bump version: 1.0.4 → 1.0.5 2024-06-01 01:43:12 +02:00
c9a5c29a4a
🐛 A proper cross-version solution for the utcnow() issue.
No need to maintain two different pieces of logic - a `utcnow()` for
Python < 3.11 and `now(datetime.UTC)` for Python >= 3.11.

`datetime.timezone.utc` existed long before datetime.UTC and that's what
the `utcnow` facade should use.

This means that all the `utcnow()` will always have `tzinfo=UTC`
regardless of the Python version.

There's still a problem with the `utcnow()`-generated timestamps that
have been generated by previous versions of Python and stored on the db.

Therefore, when the code performs comparisons with timestamps fetched
from the db, it should always explicitly do a `.replace(tzinfo=utc)` to
ensure that we always compare offset-aware datetime representations.

See blog post for technical details:
https://manganiello.blog/wheres-my-time-again
2024-06-01 01:34:47 +02:00
1067ab04d9
[tts.picovoice] Adapted to the new orca.synthesize API.
The new API no longer returns a list of numeric values alone. Instead,
it returns a tuple where the first element is the raw audio, and the
second element contains extra info on the rendered phonemes.
2024-05-31 21:10:48 +02:00
06f0ac4545
[Automatic] Updated components cache 2024-05-31 17:59:06 +00:00
944fd45f9f
Bump version: 1.0.3 → 1.0.4 2024-05-31 19:57:51 +02:00
3583dafbc3
🐛 Partial revert of c18768e61f
`datetime.utcnow` may be deprecated on Python >= 3.12, but
`datetime.UTC` isn't present on older Python versions.

Added a `platypush.utils.utcnow()` method as a workaround compatible
with both.
2024-05-31 19:55:19 +02:00
4513bb9569
Set a plugin argument on AssistantEvents besides assistant.
`assistant` contains the assistant plugin object that triggered the
event, but you can't create event hook conditions on attributes that are
plugins.

The event should also store a `plugin` attribute which contains the
unique plugin name, so hooks like these can be built:

```
from platypush import hook
from platypush.events.assistant import ConversationStartEvent

@when(ConversationStartEvent, plugin="assistant.google")
def on_google_conversation_start():
  ...
```

It wouldn't be possible to construct a hook condition like the one above
on the plugin object reported on the `assistant` attribute.
2024-05-31 19:55:19 +02:00