Skip to content

Commit

Permalink
feat: add support for audio files
Browse files Browse the repository at this point in the history
  • Loading branch information
vzhd1701 committed Jun 8, 2022
1 parent 9425343 commit 8507bcb
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 11 deletions.
75 changes: 71 additions & 4 deletions gridplayer/params_static.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,69 @@ class WindowState(NamedTuple):
"ru_RU",
)

# https://github.com/videolan/vlc/blob/3.0.16/include/vlc_interface.h#L152
SUPPORTED_AUDIO_EXT = frozenset(
(
"3ga",
"669",
"a52",
"aac",
"ac3",
"adt",
"adts",
"aif",
"aifc",
"aiff",
"amb",
"amr",
"aob",
"ape",
"au",
"awb",
"caf",
"dts",
"flac",
"it",
"kar",
"m4a",
"m4b",
"m4p",
"m5p",
"mka",
"mlp",
"mod",
"mpa",
"mp1",
"mp2",
"mp3",
"mpc",
"mpga",
"mus",
"oga",
"ogg",
"oma",
"opus",
"qcp",
"ra",
"rmi",
"s3m",
"sid",
"spx",
"tak",
"thd",
"tta",
"voc",
"vqf",
"w64",
"wav",
"wma",
"wv",
"xa",
"xm",
)
)

# https://github.com/videolan/vlc/blob/3.0.16/include/vlc_interface.h#L158
SUPPORTED_VIDEO_EXT = frozenset(
(
"3g2",
Expand All @@ -70,7 +132,7 @@ class WindowState(NamedTuple):
"asf",
"avi",
"bik",
"dav",
"crf",
"divx",
"drc",
"dv",
Expand All @@ -80,17 +142,18 @@ class WindowState(NamedTuple):
"flv",
"gvi",
"gxf",
"iso",
"m1v",
"m2v",
"m2t",
"m2ts",
"m2v",
"m4v",
"mkv",
"mov",
"mp2",
"mp2v",
"mp4",
"mp4v",
"mpa",
"mpe",
"mpeg",
"mpeg1",
Expand All @@ -101,6 +164,7 @@ class WindowState(NamedTuple):
"mts",
"mtv",
"mxf",
"mxg",
"nsv",
"nuv",
"ogg",
Expand All @@ -114,18 +178,21 @@ class WindowState(NamedTuple):
"rpl",
"thp",
"tod",
"tp",
"ts",
"tts",
"txd",
"vob",
"vro",
"webm",
"wm",
"wmv",
"wtv",
"xesc",
)
)

SUPPORTED_MEDIA_EXT = frozenset(SUPPORTED_AUDIO_EXT | SUPPORTED_VIDEO_EXT)

VLC_USER_AGENT_NAME = "Mozilla"
VLC_USER_AGENT = (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
Expand Down
26 changes: 23 additions & 3 deletions gridplayer/player/managers/add_videos.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@
from PyQt5.QtWidgets import QFileDialog

from gridplayer.dialogs.add_urls import QAddURLsDialog
from gridplayer.params_static import SUPPORTED_VIDEO_EXT
from gridplayer.params_static import (
SUPPORTED_AUDIO_EXT,
SUPPORTED_MEDIA_EXT,
SUPPORTED_VIDEO_EXT,
)
from gridplayer.player.managers.base import ManagerBase
from gridplayer.utils.misc import tr
from gridplayer.utils.url_resolve.url_resolve import plugin_list_urls
Expand All @@ -22,8 +26,7 @@ def cmd_add_videos(self):
dialog = QFileDialog(self.parent())
dialog.setFileMode(QFileDialog.ExistingFiles)

supported_exts = " ".join((f"*.{e}" for e in sorted(SUPPORTED_VIDEO_EXT)))
dialog.setNameFilter("{0} ({1})".format(tr("Videos"), supported_exts))
dialog.setNameFilters(_get_name_filters())

if dialog.exec():
videos = filter_video_uris(dialog.selectedFiles())
Expand All @@ -45,3 +48,20 @@ def cmd_add_urls(self):

if valid_urls:
self.videos_added.emit(valid_urls)


def _get_name_filters():
ext_types = [
{"name": tr("Media"), "extensions": SUPPORTED_MEDIA_EXT},
{"name": tr("Video"), "extensions": SUPPORTED_VIDEO_EXT},
{"name": tr("Audio"), "extensions": SUPPORTED_AUDIO_EXT},
]

name_filers = []

for ext_type in ext_types:
ext_with_asterisk = (f"*.{e}" for e in sorted(ext_type["extensions"]))
ext_list = " ".join(ext_with_asterisk)
name_filers.append("{0} ({1})".format(ext_type["name"], ext_list))

return name_filers
4 changes: 2 additions & 2 deletions gridplayer/utils/next_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from pathlib import Path
from typing import Optional

from gridplayer.params_static import SUPPORTED_VIDEO_EXT
from gridplayer.params_static import SUPPORTED_MEDIA_EXT


def next_video_file(file: Path, is_shuffle=False) -> Optional[Path]:
Expand Down Expand Up @@ -40,5 +40,5 @@ def _file_siblings(file: Path):
return sorted(
f
for f in file.parent.iterdir()
if f.is_file() and f.suffix[1:].lower() in SUPPORTED_VIDEO_EXT
if f.is_file() and f.suffix[1:].lower() in SUPPORTED_MEDIA_EXT
)
4 changes: 2 additions & 2 deletions gridplayer/video.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from pydantic.color import Color

from gridplayer.params_static import (
SUPPORTED_VIDEO_EXT,
SUPPORTED_MEDIA_EXT,
VideoAspect,
VideoRepeat,
WindowState,
Expand Down Expand Up @@ -48,7 +48,7 @@ def validate(cls, path: Path) -> Path:
if not path.is_absolute():
raise PathNotAbsoluteError(path=path)

if path.suffix[1:].lower() not in SUPPORTED_VIDEO_EXT:
if path.suffix[1:].lower() not in SUPPORTED_MEDIA_EXT:
raise PathExtensionNotSupportedError(path=path)

return path
Expand Down

0 comments on commit 8507bcb

Please sign in to comment.