Skip to content

Commit

Permalink
Merge pull request #14 from OpenVoiceOS/release-0.1.3a1
Browse files Browse the repository at this point in the history
Release 0.1.3a1
  • Loading branch information
JarbasAl authored Nov 20, 2024
2 parents d2e2427 + d0ab37f commit 03738fa
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 19 deletions.
14 changes: 5 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
# Changelog

## [0.1.2a2](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/tree/0.1.2a2) (2024-09-11)
## [0.1.3a1](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/tree/0.1.3a1) (2024-11-20)

[Full Changelog](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/compare/V0.1.2a1...0.1.2a2)
[Full Changelog](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/compare/V0.1.2...0.1.3a1)

**Merged pull requests:**

- feat:semver [\#9](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/pull/9) ([JarbasAl](https://github.com/JarbasAl))
- fix: drop deprecated dependency [\#13](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/pull/13) ([JarbasAl](https://github.com/JarbasAl))

## [V0.1.2a1](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/tree/V0.1.2a1) (2024-01-21)
## [V0.1.2](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/tree/V0.1.2) (2024-09-11)

[Full Changelog](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/compare/V0.1.1...V0.1.2a1)

**Merged pull requests:**

- update for utils \>0.1.0 [\#8](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/pull/8) ([builderjer](https://github.com/builderjer))
[Full Changelog](https://github.com/OpenVoiceOS/ovos-ww-plugin-vosk/compare/0.1.2...V0.1.2)



Expand Down
113 changes: 111 additions & 2 deletions ovos_ww_plugin_vosk/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,18 @@
#
import enum
import json
from os.path import join, exists
import os
import shutil
import tarfile
import zipfile
from os import makedirs
from os.path import isdir, join, exists
from tempfile import mkstemp

import requests
from ovos_bus_client.message import Message
from ovos_bus_client.util import get_mycroft_bus
from ovos_plugin_manager.templates.hotwords import HotWordEngine
from ovos_skill_installer import download_extract_zip, download_extract_tar
from ovos_utils.log import LOG
from ovos_utils.parse import fuzzy_match, MatchStrategy
from ovos_utils.xdg_utils import xdg_data_home
Expand Down Expand Up @@ -373,3 +380,105 @@ def found_wake_word(self, frame_data):
return False
return True
return False


def download(url, file=None, session=None):
"""
Pass file as a filename, open file object, or None to return the request bytes
Args:
url (str): URL of file to download
file (Union[str, io, None]): One of the following:
- Filename of output file
- File opened in binary write mode
- None: Return raw bytes instead
Returns:
Union[bytes, None]: Bytes of file if file is None
"""

if isinstance(file, str):
file = open(file, 'wb')
try:
if session:
content = session.get(url).content
else:
content = requests.get(url).content
if file:
file.write(content)
else:
return content
finally:
if file:
file.close()


def download_extract_tar(tar_url, folder, tar_filename='',
skill_folder_name=None, session=None):
"""
Download and extract the tar at the url to the given folder
Args:
tar_url (str): URL of tar file to download
folder (str): Location of parent directory to extract to. Doesn't have to exist
tar_filename (str): Location to download tar. Default is to a temp file
skill_folder_name (str): rename extracted skill folder to this
"""
try:
makedirs(folder)
except OSError:
if not isdir(folder):
raise
if not tar_filename:
fd, tar_filename = mkstemp('.tar.gz')
download(tar_url, os.fdopen(fd, 'wb'), session=session)
else:
download(tar_url, tar_filename, session=session)

with tarfile.open(tar_filename) as tar:
tar.extractall(path=folder)

if skill_folder_name:
with tarfile.open(tar_filename) as tar:
for p in tar.getnames():
original_folder = p.split("/")[0]
break
original_folder = join(folder, original_folder)
final_folder = join(folder, skill_folder_name)
shutil.move(original_folder, final_folder)


def download_extract_zip(zip_url, folder, zip_filename="",
skill_folder_name=None, session=None):
"""
Download and extract the zip at the url to the given folder
Args:
zip_url (str): URL of zip file to download
folder (str): Location of parent directory to extract to. Doesn't have to exist
zip_filename (str): Location to download zip. Default is to a temp file
skill_folder_name (str): rename extracted skill folder to this
"""
try:
makedirs(folder)
except OSError:
if not isdir(folder):
raise
if not zip_filename:
fd, zip_filename = mkstemp('.tar.gz')
download(zip_url, os.fdopen(fd, 'wb'), session=session)
else:
download(zip_url, zip_filename, session=session)

with zipfile.ZipFile(zip_filename, 'r') as zip_ref:
zip_ref.extractall(folder)

if skill_folder_name:
with zipfile.ZipFile(zip_filename, 'r') as zip_ref:
for p in zip_ref.namelist():
original_folder = p.split("/")[0]
break

original_folder = join(folder, original_folder)
final_folder = join(folder, skill_folder_name)
shutil.move(original_folder, final_folder)
4 changes: 2 additions & 2 deletions ovos_ww_plugin_vosk/version.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# START_VERSION_BLOCK
VERSION_MAJOR = 0
VERSION_MINOR = 1
VERSION_BUILD = 2
VERSION_ALPHA = 0
VERSION_BUILD = 3
VERSION_ALPHA = 1
# END_VERSION_BLOCK
3 changes: 0 additions & 3 deletions requirements.txt

This file was deleted.

5 changes: 2 additions & 3 deletions requirements/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
numpy
vosk
ovos-plugin-manager~=0.0, >=0.0.1
ovos-skill-installer~=0.0
ovos-bus-client >=0.0.6
ovos-plugin-manager>=0.0.1
ovos-bus-client>=0.0.6

0 comments on commit 03738fa

Please sign in to comment.