Compare commits

..
Author SHA1 Message Date
Jonah Brüchert f4b2f06484 Small library cleanup 2023-08-07 01:54:55 +02:00
Jonah Brüchert 89dda4c28a Filter search history in the database
Allows to easily limit the default number of history entries.
Previously, limiting the number of sql results would not have worked,
since the filter was being applied on top of them.
2023-08-07 01:45:54 +02:00
Jonah Brüchert e82fb652ee Improve performance of search popup with new local search model 2023-08-07 01:32:07 +02:00
Bart Ribbers 2894ab83e2 Allow building with KF6 2023-08-06 21:32:23 +02:00
Jonah Brüchert 7677ba8bf5 Update ytmusicapi to 1.1.1 2023-08-06 16:37:54 +02:00
Jonah Brüchert 678111a144 Fetch up too 100 search results 2023-08-06 16:36:39 +02:00
l10n daemon script 825ab78b46 GIT_SILENT Sync po/docbooks with svn 2023-08-03 02:04:21 +00:00
l10n daemon script b7ed9d6c2d GIT_SILENT Sync po/docbooks with svn 2023-07-31 02:05:26 +00:00
l10n daemon script cb9b3ef479 GIT_SILENT Sync po/docbooks with svn 2023-07-29 01:45:21 +00:00
l10n daemon script d8f30ae36f GIT_SILENT Sync po/docbooks with svn 2023-07-24 08:59:52 +00:00
l10n daemon script 930c1506a0 GIT_SILENT Sync po/docbooks with svn 2023-07-19 02:31:36 +00:00
Albert Astals Cid aa393e4278 GIT_SILENT Upgrade release service version to 23.11.70. 2023-07-17 12:49:23 +02:00
27 changed files with 344 additions and 497 deletions

No files matched your search

+2 -4
View File
@@ -3,7 +3,5 @@
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
include:
- project: sysadmin/ci-utilities
file:
- /gitlab-templates/reuse-lint.yml
- /gitlab-templates/flatpak.yml
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/reuse-lint.yml
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/flatpak.yml
+14 -7
View File
@@ -6,21 +6,28 @@ cmake_minimum_required(VERSION 3.16.0)
# KDE Applications version, managed by release script.
set(RELEASE_SERVICE_VERSION_MAJOR "23")
set(RELEASE_SERVICE_VERSION_MINOR "08")
set(RELEASE_SERVICE_VERSION_MICRO "5")
set(RELEASE_SERVICE_VERSION_MINOR "11")
set(RELEASE_SERVICE_VERSION_MICRO "70")
set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(audiotube VERSION ${RELEASE_SERVICE_VERSION})
include(FeatureSummary)
set(QT5_MIN_VERSION 5.15)
set(KF5_MIN_VERSION 5.81)
if (QT_MAJOR_VERSION STREQUAL "6")
set(QT_MIN_VERSION "6.4.0")
set(KF_MIN_VERSION "5.240.0")
set(KF_MAJOR_VERSION "6")
else()
set(QT_MIN_VERSION "5.15")
set(KF_MIN_VERSION "5.81.0")
set(KF_MAJOR_VERSION "5")
endif()
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
@@ -39,8 +46,8 @@ ecm_setup_version(${PROJECT_VERSION}
kde_enable_exceptions()
find_package(Qt${QT_MAJOR_VERSION} ${QT5_MIN_VERSION} REQUIRED COMPONENTS Core Gui Qml QuickControls2 Svg Sql Widgets Concurrent DBus)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n CoreAddons Crash WindowSystem)
find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Gui Qml QuickControls2 Svg Sql Widgets Concurrent DBus)
find_package(KF${KF_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n CoreAddons Crash WindowSystem)
find_package(pybind11 REQUIRED)
find_package(Ytdlp REQUIRED RUNTIME)
find_package(YTMusicAPI 1.0.2 REQUIRED RUNTIME)
+4 -4
View File
@@ -12,8 +12,8 @@
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/9d/19/59961b522e6757f0c9097e4493fa906031b95b3ebe9360b2c3083561a6b4/certifi-2023.5.7-py3-none-any.whl",
"sha256": "c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"
"url": "https://files.pythonhosted.org/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl",
"sha256": "92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"
},
{
"type": "file",
@@ -32,8 +32,8 @@
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/65/9b/21628ca5bcf40f58c33f0fbb4927a1bb91e12f3c33a3cf8e29e03f6bc1d1/yt_dlp-2023.6.22-py2.py3-none-any.whl",
"sha256": "c559885322f7f492c1e7fc8f5a59e2a72e47719b59575599cf8b0e69ea70d0a8"
"url": "https://files.pythonhosted.org/packages/5c/da/ef08140cea3392288a8f6cd60f6f12510a4c5776eead53e90151f139af19/yt_dlp-2023.7.6-py2.py3-none-any.whl",
"sha256": "b33b3f68751f33dd8290f1f61f7a011679b3b512aa223df3bff496688bc0bd19"
}
]
}
+8 -8
View File
@@ -7,13 +7,13 @@
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/9d/19/59961b522e6757f0c9097e4493fa906031b95b3ebe9360b2c3083561a6b4/certifi-2023.5.7-py3-none-any.whl",
"sha256": "c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"
"url": "https://files.pythonhosted.org/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl",
"sha256": "92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/ff/d7/8d757f8bd45be079d76309248845a04f09619a7b17d6dfc8c9ff6433cac2/charset-normalizer-3.1.0.tar.gz",
"sha256": "34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"
"url": "https://files.pythonhosted.org/packages/2a/53/cf0a48de1bdcf6ff6e1c9a023f5f523dfe303e4024f216feac64b6eb7f67/charset-normalizer-3.2.0.tar.gz",
"sha256": "3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"
},
{
"type": "file",
@@ -27,13 +27,13 @@
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/8a/03/ad9306a50d05c166e3456fe810f33cee2b8b2a7a6818ec5d4908c4ec6b36/urllib3-2.0.3-py3-none-any.whl",
"sha256": "48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"
"url": "https://files.pythonhosted.org/packages/9b/81/62fd61001fa4b9d0df6e31d47ff49cfa9de4af03adecf339c7bc30656b37/urllib3-2.0.4-py3-none-any.whl",
"sha256": "de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/50/1c/24829fa937a3555bf782491669ec74e0afbae5adbd724d5ce1fd542062d1/ytmusicapi-1.1.0-py3-none-any.whl",
"sha256": "d7923e9b789b7107c75bd8e9010640cf99ce08d472f42a9bd9402088acfc4d49"
"url": "https://files.pythonhosted.org/packages/28/e2/35adcefca140b4232387b5d7d119abe69c6d1c86d48c949a720c7ccb8bc7/ytmusicapi-1.1.1-py3-none-any.whl",
"sha256": "0c154a052c8f8e2310a51b1f391aa2ed1a2f6693a7ec343cc47b822de5e95783"
}
]
}
+1 -10
View File
@@ -58,7 +58,6 @@ SPDX-License-Identifier: CC0-1.0
<summary xml:lang="ia">Cliente de musica de YouTube convergente</summary>
<summary xml:lang="id">Klien YouTube Music konvergen</summary>
<summary xml:lang="it">Client YouTube Music convergente</summary>
<summary xml:lang="ja">統合的な YouTube Music クライアント</summary>
<summary xml:lang="ka">YouTube Music -ის კონვერგენტული კლიენტი</summary>
<summary xml:lang="ko">올인원 YouTube Music 클라이언트</summary>
<summary xml:lang="nl">Convergente muziekclient van YouTube</summary>
@@ -94,7 +93,6 @@ SPDX-License-Identifier: CC0-1.0
<developer_name xml:lang="ia">Communitate de KDE</developer_name>
<developer_name xml:lang="id">Komunitas KDE</developer_name>
<developer_name xml:lang="it">Comunità KDE</developer_name>
<developer_name xml:lang="ja">KDE コミュニティ</developer_name>
<developer_name xml:lang="ka">KDE-ის საზოგადოება</developer_name>
<developer_name xml:lang="ko">KDE 커뮤니티</developer_name>
<developer_name xml:lang="nl">KDE-gemeenschap</developer_name>
@@ -115,12 +113,6 @@ SPDX-License-Identifier: CC0-1.0
<content_rating type="oars-1.0"/>
<url type="homepage">https://apps.kde.org/en/audiotube</url>
<releases>
<release version="23.08.5" date="2024-02-15"/>
<release version="23.08.4" date="2023-12-07"/>
<release version="23.08.3" date="2023-11-09"/>
<release version="23.08.2" date="2023-10-12"/>
<release version="23.08.1" date="2023-09-14"/>
<release version="23.08.0" date="2023-08-24"/>
<release version="23.04.3" date="2023-07-06"/>
<release version="23.04.2" date="2023-06-08"/>
<release version="23.04.1" date="2023-05-11"/>
@@ -201,7 +193,7 @@ SPDX-License-Identifier: CC0-1.0
<p xml:lang="en-GB">AudioTube can search YouTube Music, list albums and artists, play automatically generated playlists, albums and allows to put your own playlist together.</p>
<p xml:lang="eo">AudioTube povas serĉi YouTube Music, listigi albumojn kaj artistojn, ludi aŭtomate generitajn ludlistojn, albumojn kaj permesas kunmeti vian propran ludliston.</p>
<p xml:lang="es">AudioTube puede buscar música de YouTube, listar álbumes y artistas, reproducir las listas de reproducción generadas, álbumes y le permite crear su propia lista de reproducción.</p>
<p xml:lang="eu">«AudioTube»k «YouTube Music»n bilatu dezake, albumak eta artistak zerrendatu, automatikoki sortutako jotze-zerrendak eta albumak jo, eta zure jotze-zerrenda osatzeko aukera eskaintzen dizu.</p>
<p xml:lang="eu">AudioTube-k YouTube Music-en bilatu dezake, albumak eta artistak zerrendatu, automatikoki sortutako jotze-zerrendak eta albumak jo, eta zure jotze-zerrenda osatzeko aukera eskaintzen dizu.</p>
<p xml:lang="fi">AudioTube osaa etsiä YouTube Music -haun, albumien ja artistien luettelun, luotujen soittolistojen automaattisen toiston ja omien soittolistojen kokoamisen.</p>
<p xml:lang="fr">AudioTube peut effectuer des recherches de musiques sur la partie « Musique » de YouTube, établir une liste d'albums et d'artistes, lire des listes de lecture générées automatiquement, des albums et permet de composer sa propre liste de lecture.</p>
<p xml:lang="gl">AudioTube pode buscar en YouTube Music, listar álbums e intérpretes, reproducir listas xeradas automaticamente e álbums, e permítelle confeccionar listas.</p>
@@ -209,7 +201,6 @@ SPDX-License-Identifier: CC0-1.0
<p xml:lang="ia">AudioTube pote cercar in YouTube Music, listar albums e artistas, reproducer listas de reproduction generate automaticamente, albums e te permitte poner tu proprie lista de reproduction insimul.</p>
<p xml:lang="id">AudioTube dapat menelusuri YouTube Music, mendaftarkan album dan artis, putar daftar putar dan yang dibuat secara otomatis dan album, dan memungkinkan Anda untuk membuat daftar putar Anda sendiri.</p>
<p xml:lang="it">AudioTube può eseguire ricerche su YouTube Music, elencare album e artisti, riprodurre scalette e album generati automaticamente e ti consente di creare la tua scaletta.</p>
<p xml:lang="ja">AudioTube は、YouTube Music を検索してアルバムやアーティストの一覧を表示、アルバムや自動生成された再生リストを再生したり独自の再生りストを作成できます。</p>
<p xml:lang="ka">AudioTube -ს შეუძლია მოძებნოს მუსიკა YouTube-ზე, გაჩვენოთ ალბომებისა და შემსრულებლების სია, დაუკრას დაგენერირებული დასაკრავი სიები, ალბომები და საშუალებას გაძლევთ, თქვენი დასაკრავი სია შექმნათ.</p>
<p xml:lang="ko">AudioTube는 YouTube Music을 검색하고, 앨범과 아티스트를 표시하고, 자동 생성된 재생 목록, 앨범을 재생하고, 사용자 정의 재생 목록을 만들 수 있습니다.</p>
<p xml:lang="nl">AudioTube kan in YouTube Music zoeken, een lijst maken van albums en artiesten, automatically gegenereerde afspeellijsten, albums afspelen en biedt u het samenstellen van uw eigen afspeellijst.</p>
+1 -2
View File
@@ -52,7 +52,6 @@ Comment[hi]=यूट्यूब संगीत क्लाएंट
Comment[ia]=Cliente de musica de YouTube
Comment[id]=Klien YouTube Music
Comment[it]=Client YouTube Music
Comment[ja]=YouTube Music クライアント
Comment[ka]=YouTube Music -ის კლიენტი
Comment[ko]=YouTube Music 클라이언트
Comment[nl]=Muziekclient van YouTube
@@ -66,7 +65,7 @@ Comment[ru]=Клиент для YouTube Music
Comment[sk]=Hudobný klient YouTube
Comment[sl]=Glasbeni odjemalec Youtube
Comment[sv]=YouTube-musikprogram
Comment[tr]=YouTube Müzik İstemcisi
Comment[tr]=YouTube Müzik istemcisi
Comment[uk]=Музичний клієнт YouTube
Comment[x-test]=xxYouTube Music clientxx
Comment[zh_CN]=YouTube Music 客户端
+28
View File
@@ -532,3 +532,31 @@ msgstr "Sense títol"
#, kde-format
msgid "No album"
msgstr "Sense àlbum"
#~ msgid "Export"
#~ msgstr "Exporta"
#~ msgid "Import Playlist from Url"
#~ msgstr "Importa una llista de reproducció des d'un URL"
#~ msgid "Import Playlist from File"
#~ msgstr "Importa una llista de reproducció des d'un fitxer"
#~ msgid "Export Playlist"
#~ msgstr "Exporta una llista de reproducció"
#~ msgid "m3u, m3u8 Playlist File (*.m3u *.m3u8)"
#~ msgstr "Fitxer de llista de reproducció m3u, m3u8 (*.m3u *.m3u8)"
#~ msgid "Import Playlists"
#~ msgstr "Importa llistes de reproducció"
#~ msgid "m3u, m3u8 Playlist Files (*.m3u *.m3u8)"
#~ msgstr "Fitxers de llista de reproducció m3u, m3u8 (*.m3u *.m3u8)"
#~ msgid "Saving Failed"
#~ msgstr "Ha fallat en desar"
#~ msgctxt "%1 is the path to a playlist file."
#~ msgid "Failed to Import %1"
#~ msgstr "Ha fallat en importar %1"
+29 -1
View File
@@ -429,7 +429,7 @@ msgstr "Copia l'enllaç"
#: contents/ui/ShareMenu.qml:54 contents/ui/ShareMenu.qml:104
#, kde-format
msgid "Link copied to clipboard"
msgstr "L'enllaç s'ha copiat a dins del porta-retalls"
msgstr "L'enllaç s'ha copiat al porta-retalls"
#: contents/ui/Sidebar.qml:189
#, kde-format
@@ -532,3 +532,31 @@ msgstr "Sense títol"
#, kde-format
msgid "No album"
msgstr "Sense àlbum"
#~ msgid "Export"
#~ msgstr "Exporta"
#~ msgid "Import Playlist from Url"
#~ msgstr "Importa una llista de reproducció des d'un URL"
#~ msgid "Import Playlist from File"
#~ msgstr "Importa una llista de reproducció des d'un fitxer"
#~ msgid "Export Playlist"
#~ msgstr "Exporta una llista de reproducció"
#~ msgid "m3u, m3u8 Playlist File (*.m3u *.m3u8)"
#~ msgstr "Fitxer de llista de reproducció m3u, m3u8 (*.m3u *.m3u8)"
#~ msgid "Import Playlists"
#~ msgstr "Importa llistes de reproducció"
#~ msgid "m3u, m3u8 Playlist Files (*.m3u *.m3u8)"
#~ msgstr "Fitxers de llista de reproducció m3u, m3u8 (*.m3u *.m3u8)"
#~ msgid "Saving Failed"
#~ msgstr "No s'ha pogut guardar"
#~ msgctxt "%1 is the path to a playlist file."
#~ msgid "Failed to Import %1"
#~ msgstr "No s'ha pogut importar %1"
+3 -3
View File
@@ -1,6 +1,6 @@
# Copyright (C) 2023 This file is copyright:
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# SPDX-FileCopyrightText: 2021, 2022, 2023 Vit Pelcak <[email protected]>
# Vit Pelcak <[email protected]>, 2021, 2022, 2023.
#
msgid ""
msgstr ""
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Lokalize 23.08.2\n"
"X-Generator: Lokalize 23.04.1\n"
#: asyncytmusic.cpp:65
#, kde-format
+4 -4
View File
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the audiotube package.
#
# Automatically generated, 2021.
# SPDX-FileCopyrightText: 2021, 2022, 2023 Eloy Cuadra <[email protected]>
# Eloy Cuadra <[email protected]>, 2021, 2022, 2023.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-07-09 00:59+0000\n"
"PO-Revision-Date: 2023-11-02 01:27+0100\n"
"PO-Revision-Date: 2023-07-05 18:57+0200\n"
"Last-Translator: Eloy Cuadra <[email protected]>\n"
"Language-Team: Spanish <[email protected]>\n"
"Language: es\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.08.2\n"
"X-Generator: Lokalize 23.04.2\n"
#: asyncytmusic.cpp:65
#, kde-format
@@ -515,7 +515,7 @@ msgstr "[email protected]"
#: main.cpp:74
#, kde-format
msgid "Unofficial API for YouTube Music"
msgstr "API no oficial de YouTube Music"
msgstr "API no oficial para YouTube Music"
#: playlistimporter.cpp:23
#, kde-format
+14 -14
View File
@@ -1,19 +1,19 @@
# SPDX-FileCopyrightText: 2021, 2022, 2023 Xavier Besnard <xavier.besnard@kde.org>
# Xavier Besnard <xavier.besnard@kde.org>, 2022, 2023.
# Xavier Besnard <xavier.besnard@neuf.fr>, 2021, 2022.
# Xavier BESNARD <xavier.besnard@neuf.fr>, 2022, 2023.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-07-09 00:59+0000\n"
"PO-Revision-Date: 2023-10-30 15:15+0100\n"
"Last-Translator: Xavier Besnard <xavier.besnard@kde.org>\n"
"Language-Team: French <[email protected]>\n"
"PO-Revision-Date: 2023-07-06 20:41+0200\n"
"Last-Translator: Xavier BESNARD <xavier.besnard@neuf.fr>\n"
"Language-Team: fr\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 23.08.2\n"
"X-Generator: Lokalize 23.04.2\n"
#: asyncytmusic.cpp:65
#, kde-format
@@ -177,7 +177,7 @@ msgstr "Renommer une liste de lecture"
#: contents/ui/Sidebar.qml:131 contents/ui/Sidebar.qml:138
#, kde-format
msgid "Favourites"
msgstr "Signets"
msgstr "Favoris"
#: contents/ui/LibraryPage.qml:119 contents/ui/LibraryPage.qml:306
#: contents/ui/LibraryPage.qml:403
@@ -188,7 +188,7 @@ msgstr "Tout afficher"
#: contents/ui/LibraryPage.qml:147
#, kde-format
msgid "No Favourites Yet"
msgstr "Encore aucun signet"
msgstr "Encore aucun favori"
#: contents/ui/LibraryPage.qml:215
#, kde-format
@@ -272,12 +272,12 @@ msgstr "Aucun média en lecture"
#: contents/ui/MaximizedPlayerPage.qml:426
#, kde-format
msgid "Remove from Favourites"
msgstr "Supprimer des signets"
msgstr "Supprimer des favoris"
#: contents/ui/MaximizedPlayerPage.qml:426
#, kde-format
msgid "Add to Favourites"
msgstr "Ajouter aux signets"
msgstr "Ajouter aux favoris"
#: contents/ui/MaximizedPlayerPage.qml:451
#, kde-format
@@ -449,12 +449,12 @@ msgstr "Ajouter à la file de lecture"
#: contents/ui/SongMenu.qml:126 contents/ui/SongMenu.qml:221
#, kde-format
msgid "Remove Favourite"
msgstr "Supprimer un signet"
msgstr "Supprimer un favori"
#: contents/ui/SongMenu.qml:126 contents/ui/SongMenu.qml:221
#, kde-format
msgid "Add Favourite"
msgstr "Ajouter un signet"
msgstr "Ajouter un favori"
#: contents/ui/SongMenu.qml:143 contents/ui/SongMenu.qml:235
#, kde-format
@@ -506,12 +506,12 @@ msgstr "Xavier Besnard"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "xavier.besnard@kde.org"
msgstr "xavier.besnard@neuf.fr"
#: main.cpp:74
#, kde-format
msgid "Unofficial API for YouTube Music"
msgstr "API non officiel pour la musique sur « YouTube Musique »"
msgstr "API non officiel pour la musique sur « YouTube Music »"
#: playlistimporter.cpp:23
#, kde-format
+5 -5
View File
@@ -1,6 +1,6 @@
# Copyright (C) 2023 This file is copyright:
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# SPDX-FileCopyrightText: 2023 Adrián Chaves (Gallaecio)
# Adrián Chaves (Gallaecio) <[email protected]>, 2023.
#
msgid ""
msgstr ""
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.08.2\n"
"X-Generator: Lokalize 23.04.2\n"
#: asyncytmusic.cpp:65
#, kde-format
@@ -23,7 +23,7 @@ msgid ""
"Running with untested version of ytmusicapi %1. If you experience errors, "
"please report them to your distribution."
msgstr ""
"Usando unha versión non probada de ytmusicapi, a %1. Informe á súa "
"Estase a usar unha versión non probada de ytmusicapi, a %1. Informe á súa "
"distribución de detecta algún erro."
#: contents/ui/AlbumPage.qml:75 contents/ui/LibraryPage.qml:37
@@ -95,7 +95,7 @@ msgstr "Intérprete"
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr "Non é posíbel reproducir vídeo. Quere reproducir o son de «%1»?"
msgstr "Non se pode reproducir vídeo. Quere reproducir o son de «%1»?"
#: contents/ui/ArtistPage.qml:148 contents/ui/SearchPage.qml:26
#, kde-format
+5 -5
View File
@@ -1,13 +1,13 @@
# Copyright (C) 2023 This file is copyright:
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# SPDX-FileCopyrightText: 2021, 2022, 2023, 2024 Vincenzo Reale <[email protected]>
# Vincenzo Reale <[email protected]>, 2021, 2022, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-07-09 00:59+0000\n"
"PO-Revision-Date: 2024-02-06 17:14+0100\n"
"PO-Revision-Date: 2023-07-06 14:15+0200\n"
"Last-Translator: Vincenzo Reale <[email protected]>\n"
"Language-Team: Italian <[email protected]>\n"
"Language: it\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 23.08.4\n"
"X-Generator: Lokalize 23.04.2\n"
#: asyncytmusic.cpp:65
#, kde-format
@@ -508,7 +508,7 @@ msgstr "Vincenzo Reale"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "smart2128[email protected]"
msgstr "smart2128@baslug.org"
#: main.cpp:74
#, kde-format
+11 -12
View File
@@ -1,12 +1,12 @@
# maboroshin <pc.genkaku.in>, 2023.
# maboroshini <pc.genkaku.in>, 2023.
# Fumiaki Okushi <[email protected]>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-07-09 00:59+0000\n"
"PO-Revision-Date: 2023-11-24 09:45+0900\n"
"Last-Translator: maboroshin <pc.genkaku.in>\n"
"PO-Revision-Date: 2023-07-01 15:47-0700\n"
"Last-Translator: Fumiaki Okushi <[email protected]>\n"
"Language-Team: Japanese <[email protected]>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
@@ -15,7 +15,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n"
"X-Generator: Poedit 2.2.3\n"
#: asyncytmusic.cpp:65
#, kde-format
@@ -23,8 +22,8 @@ msgid ""
"Running with untested version of ytmusicapi %1. If you experience errors, "
"please report them to your distribution."
msgstr ""
"未テストのバージョンの ymusicapi %1 で実行中です。エラー発生の際は、使用中の"
"ディストリビューションに報告してください。"
"未テストのバージョンの ymusicapi %1 で実行中です。エラーの発生時には、お使い"
"のディストリビューションに報告してください。"
#: contents/ui/AlbumPage.qml:75 contents/ui/LibraryPage.qml:37
#: contents/ui/LibraryPage.qml:63 contents/ui/LibraryPage.qml:84
@@ -200,7 +199,7 @@ msgstr "再生回数が多い"
#: contents/ui/Sidebar.qml:157
#, kde-format
msgid "Played Songs"
msgstr "履歴"
msgstr "再生した曲"
#: contents/ui/LibraryPage.qml:334
#, kde-format
@@ -239,7 +238,7 @@ msgstr "再生リストから除去"
#: contents/ui/LocalPlaylistPage.qml:79
#, kde-format
msgid "This playlist is still empty"
msgstr "この再生リストはまだ曲が未登録"
msgstr "この再生リストにまだ中身がありません"
#: contents/ui/LocalPlaylistsPage.qml:110
#: contents/ui/LocalPlaylistsPage.qml:133
@@ -349,7 +348,7 @@ msgstr "キューをシャッフル"
#: contents/ui/MaximizedPlayerPage.qml:1050
#, kde-format
msgid "Upcoming Songs"
msgstr "次の曲"
msgstr ""
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:100
#, kde-format
@@ -364,12 +363,12 @@ msgstr "検索"
#: contents/ui/PlaybackHistory.qml:17
#, kde-format
msgid "Unknown list of songs"
msgstr "不明の曲リスト"
msgstr ""
#: contents/ui/PlaybackHistory.qml:135
#, kde-format
msgid "No songs here yet"
msgstr "まだここに曲の登録なし"
msgstr "まだここに曲はなし"
#: contents/ui/PlaylistPage.qml:110
#, kde-format
@@ -409,7 +408,7 @@ msgstr "不明"
#: contents/ui/SearchWithDropdown.qml:343
#, kde-format
msgid "No matching previous searches"
msgstr "以前の検索との一致なし"
msgstr "以前の検索には一致しません"
#: contents/ui/ShareMenu.qml:39
#, kde-format
+3 -3
View File
@@ -1,6 +1,6 @@
# Copyright (C) 2023 This file is copyright:
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# SPDX-FileCopyrightText: 2021, 2022, 2023 Shinjo Park <[email protected]>
# Shinjo Park <[email protected]>, 2021, 2022, 2023.
#
msgid ""
msgstr ""
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Lokalize 23.08.1\n"
"X-Generator: Lokalize 22.12.3\n"
#: asyncytmusic.cpp:65
#, kde-format
+47 -47
View File
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-07-09 00:59+0000\n"
"PO-Revision-Date: 2023-08-24 21:35+0200\n"
"PO-Revision-Date: 2023-07-30 22:10+0200\n"
"Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
"Language-Team: Norwegian Nynorsk <[email protected]>\n"
"Language: nn\n"
@@ -55,7 +55,7 @@ msgstr "Stokk om"
#: contents/ui/PlaybackHistory.qml:114 contents/ui/PlaylistPage.qml:99
#, kde-format
msgid "Append to queue"
msgstr "Legg i avspelingskøen"
msgstr ""
#: contents/ui/AlbumPage.qml:95 contents/ui/ArtistPage.qml:95
#: contents/ui/PlaylistPage.qml:115
@@ -153,7 +153,7 @@ msgstr "Importer speleliste"
#: contents/ui/dialogs/ImportPlaylistDialog.qml:23
#, kde-format
msgid "Playlist URL (Youtube)"
msgstr "Speleliste-URL (YouTube)"
msgstr ""
#: contents/ui/dialogs/PlaylistDialog.qml:20
#, kde-format
@@ -171,7 +171,7 @@ msgstr "Ny speleliste"
#: contents/ui/dialogs/RenamePlaylistDialog.qml:18
#, kde-format
msgid "Rename playlist"
msgstr "Endra namn på speleliste"
msgstr ""
#: contents/ui/LibraryPage.qml:30 contents/ui/LibraryPage.qml:123
#: contents/ui/NavigationBar.qml:48 contents/ui/NavigationBar.qml:54
@@ -189,7 +189,7 @@ msgstr "Vis alle"
#: contents/ui/LibraryPage.qml:147
#, kde-format
msgid "No Favourites Yet"
msgstr "Ingen favorittar enno"
msgstr ""
#: contents/ui/LibraryPage.qml:215
#, kde-format
@@ -206,7 +206,7 @@ msgstr "Avspela songar"
#: contents/ui/LibraryPage.qml:334
#, kde-format
msgid "No Songs Played Yet"
msgstr "Ingen avspela songar enno"
msgstr ""
#: contents/ui/LibraryPage.qml:391 contents/ui/LocalPlaylistsPage.qml:18
#: contents/ui/LocalPlaylistsPage.qml:79 contents/ui/NavigationBar.qml:75
@@ -218,36 +218,36 @@ msgstr "Spelelister"
#: contents/ui/LibraryPage.qml:430
#, kde-format
msgid "No Playlists Yet"
msgstr "Ingen spelelister enno"
msgstr ""
#: contents/ui/LibraryPage.qml:450 contents/ui/LibraryPage.qml:472
#: contents/ui/LocalPlaylistsPage.qml:33 contents/ui/LocalPlaylistsPage.qml:55
#, kde-format
msgid "Rename"
msgstr "Endra namn"
msgstr ""
#: contents/ui/LibraryPage.qml:459 contents/ui/LibraryPage.qml:480
#: contents/ui/LocalPlaylistsPage.qml:42 contents/ui/LocalPlaylistsPage.qml:63
#, kde-format
msgid "Delete"
msgstr "Slett"
msgstr ""
#: contents/ui/LocalPlaylistPage.qml:21
#, kde-format
msgid "Remove from Playlist"
msgstr "Fjern frå speleliste"
msgstr ""
#: contents/ui/LocalPlaylistPage.qml:79
#, kde-format
msgid "This playlist is still empty"
msgstr "Spelelista er framleis tom"
msgstr ""
#: contents/ui/LocalPlaylistsPage.qml:110
#: contents/ui/LocalPlaylistsPage.qml:133
#: contents/ui/LocalPlaylistsPage.qml:148 contents/ui/PlaylistPage.qml:104
#, kde-format
msgid "Import Playlist"
msgstr "Importer speleliste"
msgstr ""
#: contents/ui/main.qml:110 main.cpp:62
#, kde-format
@@ -257,12 +257,12 @@ msgstr "AudioTube"
#: contents/ui/main.qml:260
#, kde-format
msgid "No song playing"
msgstr "Ingen song vert spela av"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:99
#, kde-format
msgid "Close Maximized Player"
msgstr "Lukk maksimert spelar"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:203
#: contents/ui/MinimizedPlayerControls.qml:94
@@ -273,27 +273,27 @@ msgstr "Inkje medium vert spela av"
#: contents/ui/MaximizedPlayerPage.qml:426
#, kde-format
msgid "Remove from Favourites"
msgstr "Fjern frå favorittar"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:426
#, kde-format
msgid "Add to Favourites"
msgstr "Merk som favoritt"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:451
#, kde-format
msgid "Open Volume Drawer"
msgstr "Opna lydstyrke-skuff"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:559
#, kde-format
msgid "Unmute Audio"
msgstr "Slå av lyddemping"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:559
#, kde-format
msgid "Mute Audio"
msgstr "Demp lyd"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:602
#, kde-format
@@ -303,33 +303,33 @@ msgstr "%1 %"
#: contents/ui/MaximizedPlayerPage.qml:633
#, kde-format
msgid "Hide Lyrics"
msgstr "Gøym songtekst"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:633
#, kde-format
msgid "Show Lyrics"
msgstr "Vis songtekst"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:653 contents/ui/SongMenu.qml:183
#: contents/ui/SongMenu.qml:269
#, kde-format
msgid "Share Song"
msgstr "Del song"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:699
#, kde-format
msgid "Add to a local playlist"
msgstr "Legg til i lokal speleliste"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:736
#, kde-format
msgid "Hide Queue"
msgstr "Gøym avspelingskøen"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:736
#, kde-format
msgid "Show Queue"
msgstr "Vis avspelingskøen"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:956
#: contents/ui/MaximizedPlayerPage.qml:1198
@@ -340,17 +340,17 @@ msgstr "Fjern spor"
#: contents/ui/MaximizedPlayerPage.qml:995
#, kde-format
msgid "Clear Queue"
msgstr "Tøm avspelingskøen"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:1020
#, kde-format
msgid "Shuffle Queue"
msgstr "Stokk om på avspelingskøen"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:1050
#, kde-format
msgid "Upcoming Songs"
msgstr "Framtidige songar"
msgstr ""
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:100
#, kde-format
@@ -375,7 +375,7 @@ msgstr "Ingen songar enno"
#: contents/ui/PlaylistPage.qml:110
#, kde-format
msgid "Playlist successfully imported"
msgstr "Spelelista vart importert"
msgstr ""
#: contents/ui/PlaylistPage.qml:131
#, kde-format
@@ -400,7 +400,7 @@ msgstr "Artistar"
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Top Results"
msgstr "Toppresultat"
msgstr ""
#: contents/ui/SearchPage.qml:39 playlistimporter.cpp:23
#, kde-format
@@ -415,22 +415,22 @@ msgstr "Ingen samsvarande tidlegare søk"
#: contents/ui/ShareMenu.qml:39
#, kde-format
msgid "Share to"
msgstr "Del til"
msgstr ""
#: contents/ui/ShareMenu.qml:49 contents/ui/ShareMenu.qml:99
#, kde-format
msgid "Copy Link"
msgstr "Kopier lenkje"
msgstr ""
#: contents/ui/ShareMenu.qml:54 contents/ui/ShareMenu.qml:104
#, kde-format
msgid "Link copied to clipboard"
msgstr "Lenkje kopiert til utklippstavla"
msgstr ""
#: contents/ui/Sidebar.qml:189
#, kde-format
msgid "About"
msgstr "Om"
msgstr ""
#: contents/ui/Sidebar.qml:203
#, kde-format
@@ -465,66 +465,66 @@ msgstr "Fjern frå loggen"
#: contents/ui/SongMenu.qml:156 contents/ui/SongMenu.qml:244
#, kde-format
msgid "Add to playlist"
msgstr "Legg til i speleliste"
msgstr ""
#: main.cpp:64
#, kde-format
msgid "YouTube Music Player"
msgstr "YouTube Music-spelar"
msgstr ""
#: main.cpp:66
#, kde-format
msgid "© 2021-2023 Jonah Brüchert, 2021-2023 KDE Community"
msgstr "© 2021–2023 Jonah Brüchert, 2021–2023 KDE-fellesskapet"
msgstr ""
#: main.cpp:67
#, kde-format
msgid "Jonah Brüchert"
msgstr "Jonah Brüchert"
msgstr ""
#: main.cpp:67
#, kde-format
msgid "Maintainer"
msgstr "Vedlikehaldar"
msgstr ""
#: main.cpp:68
#, kde-format
msgid "Mathis Brüchert"
msgstr "Mathis Brüchert"
msgstr ""
#: main.cpp:68
#, kde-format
msgid "Designer"
msgstr "Designar"
msgstr ""
#: main.cpp:69
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Øystein Steffensen-Alværvik,Karl Ove Hufthammer"
msgstr "Øystein Steffensen-Alværvik"
#: main.cpp:69
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected],[email protected]"
msgstr "[email protected]"
#: main.cpp:74
#, kde-format
msgid "Unofficial API for YouTube Music"
msgstr "Uoffisielt API for YouTube Music"
msgstr ""
#: playlistimporter.cpp:23
#, kde-format
msgid "No description"
msgstr "Inga skildring"
msgstr ""
#: playlistimporter.cpp:57
#, kde-format
msgid "No title"
msgstr "Utan tittel"
msgstr ""
#: playlistimporter.cpp:59
#, kde-format
msgid "No album"
msgstr "Ingen album"
msgstr ""
+3 -3
View File
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-07-09 00:59+0000\n"
"PO-Revision-Date: 2023-08-20 10:50+0200\n"
"PO-Revision-Date: 2023-05-20 09:19+0200\n"
"Last-Translator: Łukasz Wojniłowicz <[email protected]>\n"
"Language-Team: Polish <[email protected]>\n"
"Language: pl\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 23.04.2\n"
"X-Generator: Lokalize 22.12.3\n"
#: asyncytmusic.cpp:65
#, kde-format
@@ -378,7 +378,7 @@ msgstr "Jeszcze nie ma tutaj utworów"
#: contents/ui/PlaylistPage.qml:110
#, kde-format
msgid "Playlist successfully imported"
msgstr "Pomyślnie zaimportowano listy odtwarzania"
msgstr ""
#: contents/ui/PlaylistPage.qml:131
#, kde-format
+53 -41
View File
@@ -2,22 +2,21 @@
# This file is distributed under the same license as the audiotube package.
#
# Alexander Yavorsky <[email protected]>, 2022, 2023.
# Olesya Gerasimenko <[email protected]>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-07-09 00:59+0000\n"
"PO-Revision-Date: 2023-11-13 16:08+0300\n"
"Last-Translator: Olesya Gerasimenko <[email protected]>\n"
"Language-Team: Basealt Translation Team\n"
"PO-Revision-Date: 2023-04-30 14:45+0300\n"
"Last-Translator: Alexander Yavorsky <[email protected]>\n"
"Language-Team: Russian <[email protected]>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 23.04.3\n"
"X-Generator: Lokalize 21.08.3\n"
#: asyncytmusic.cpp:65
#, kde-format
@@ -25,8 +24,6 @@ msgid ""
"Running with untested version of ytmusicapi %1. If you experience errors, "
"please report them to your distribution."
msgstr ""
"Программа работает с непроверенной версией ytmusicapi %1. Если возникнут "
"ошибки, сообщите о них авторам дистрибутива."
#: contents/ui/AlbumPage.qml:75 contents/ui/LibraryPage.qml:37
#: contents/ui/LibraryPage.qml:63 contents/ui/LibraryPage.qml:84
@@ -148,14 +145,16 @@ msgid "Playlist Description"
msgstr "Описание"
#: contents/ui/dialogs/ImportPlaylistDialog.qml:17
#, kde-format
#, fuzzy, kde-format
#| msgid "Add playlist"
msgid "Import playlist"
msgstr "Импорт списка воспроизведения"
msgstr "Создание списка воспроизведения"
#: contents/ui/dialogs/ImportPlaylistDialog.qml:23
#, kde-format
#, fuzzy, kde-format
#| msgid "Playlist Title"
msgid "Playlist URL (Youtube)"
msgstr "URL-адрес списка воспроизведения (YouTube)"
msgstr "Название"
#: contents/ui/dialogs/PlaylistDialog.qml:20
#, kde-format
@@ -247,9 +246,10 @@ msgstr "Список воспроизведения всё ещё пуст"
#: contents/ui/LocalPlaylistsPage.qml:110
#: contents/ui/LocalPlaylistsPage.qml:133
#: contents/ui/LocalPlaylistsPage.qml:148 contents/ui/PlaylistPage.qml:104
#, kde-format
#, fuzzy, kde-format
#| msgid "Playlist"
msgid "Import Playlist"
msgstr "Импорт списка воспроизведения"
msgstr "Список воспроизведения"
#: contents/ui/main.qml:110 main.cpp:62
#, kde-format
@@ -257,14 +257,15 @@ msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/main.qml:260
#, kde-format
#, fuzzy, kde-format
#| msgid "No media playing"
msgid "No song playing"
msgstr "Ничего не воспроизводится"
#: contents/ui/MaximizedPlayerPage.qml:99
#, kde-format
msgid "Close Maximized Player"
msgstr "Закрыть развёрнутый проигрыватель"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:203
#: contents/ui/MinimizedPlayerControls.qml:94
@@ -273,29 +274,32 @@ msgid "No media playing"
msgstr "Ничего не воспроизводится"
#: contents/ui/MaximizedPlayerPage.qml:426
#, kde-format
#, fuzzy, kde-format
#| msgid "Remove Favourite"
msgid "Remove from Favourites"
msgstr "Убрать из избранного"
#: contents/ui/MaximizedPlayerPage.qml:426
#, kde-format
#, fuzzy, kde-format
#| msgid "Add Favourite"
msgid "Add to Favourites"
msgstr "Добавить в избранное"
#: contents/ui/MaximizedPlayerPage.qml:451
#, kde-format
#, fuzzy, kde-format
#| msgid "Open in Browser"
msgid "Open Volume Drawer"
msgstr "Открыть выдвижную панель громкости"
msgstr "Открыть в браузере"
#: contents/ui/MaximizedPlayerPage.qml:559
#, kde-format
msgid "Unmute Audio"
msgstr "Включить звук"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:559
#, kde-format
msgid "Mute Audio"
msgstr "Отключить звук"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:602
#, kde-format
@@ -303,14 +307,16 @@ msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:633
#, kde-format
#, fuzzy, kde-format
#| msgid "Lyrics"
msgid "Hide Lyrics"
msgstr "Скрыть текст"
msgstr "Текст песни"
#: contents/ui/MaximizedPlayerPage.qml:633
#, kde-format
#, fuzzy, kde-format
#| msgid "Lyrics"
msgid "Show Lyrics"
msgstr "Показать текст"
msgstr "Текст песни"
#: contents/ui/MaximizedPlayerPage.qml:653 contents/ui/SongMenu.qml:183
#: contents/ui/SongMenu.qml:269
@@ -319,19 +325,22 @@ msgid "Share Song"
msgstr "Опубликовать трек"
#: contents/ui/MaximizedPlayerPage.qml:699
#, kde-format
#, fuzzy, kde-format
#| msgid "Playlist"
msgid "Add to a local playlist"
msgstr "Добавить в локальный список воспроизведения"
msgstr "Список воспроизведения"
#: contents/ui/MaximizedPlayerPage.qml:736
#, kde-format
#, fuzzy, kde-format
#| msgid "Queue"
msgid "Hide Queue"
msgstr "Скрыть очередь воспроизведения"
msgstr "Очередь воспроизведения"
#: contents/ui/MaximizedPlayerPage.qml:736
#, kde-format
#, fuzzy, kde-format
#| msgid "Queue"
msgid "Show Queue"
msgstr "Показать очередь воспроизведения"
msgstr "Очередь воспроизведения"
#: contents/ui/MaximizedPlayerPage.qml:956
#: contents/ui/MaximizedPlayerPage.qml:1198
@@ -340,14 +349,16 @@ msgid "Remove Track"
msgstr "Удалить дорожку"
#: contents/ui/MaximizedPlayerPage.qml:995
#, kde-format
#, fuzzy, kde-format
#| msgid "Queue"
msgid "Clear Queue"
msgstr "Очистить очередь воспроизведения"
msgstr "Очередь воспроизведения"
#: contents/ui/MaximizedPlayerPage.qml:1020
#, kde-format
#, fuzzy, kde-format
#| msgid "Shuffle"
msgid "Shuffle Queue"
msgstr "Перемешать очередь воспроизведения"
msgstr "Перемешать"
#: contents/ui/MaximizedPlayerPage.qml:1050
#, kde-format
@@ -377,7 +388,7 @@ msgstr "Пока нет ни одного трека"
#: contents/ui/PlaylistPage.qml:110
#, kde-format
msgid "Playlist successfully imported"
msgstr "Список воспроизведения успешно импортирован"
msgstr ""
#: contents/ui/PlaylistPage.qml:131
#, kde-format
@@ -402,7 +413,7 @@ msgstr "Исполнители"
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Top Results"
msgstr "Лучшие результаты"
msgstr ""
#: contents/ui/SearchPage.qml:39 playlistimporter.cpp:23
#, kde-format
@@ -517,19 +528,20 @@ msgid "Unofficial API for YouTube Music"
msgstr "Неофициальный API для YouTube Music"
#: playlistimporter.cpp:23
#, kde-format
#, fuzzy, kde-format
#| msgid "Playlist Description"
msgid "No description"
msgstr "Описание отсутствует"
msgstr "Описание"
#: playlistimporter.cpp:57
#, kde-format
msgid "No title"
msgstr "Название отсутствует"
msgstr ""
#: playlistimporter.cpp:59
#, kde-format
msgid "No album"
msgstr "Альбом отсутствует"
msgstr ""
#, fuzzy
#~| msgid "Playlist"
+4 -4
View File
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-07-09 00:59+0000\n"
"PO-Revision-Date: 2024-02-05 11:44\n"
"PO-Revision-Date: 2023-08-02 12:41\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -14,8 +14,8 @@ msgstr ""
"X-Crowdin-Project: kdeorg\n"
"X-Crowdin-Project-ID: 269464\n"
"X-Crowdin-Language: zh-CN\n"
"X-Crowdin-File: /kf5-stable/messages/audiotube/audiotube.pot\n"
"X-Crowdin-File-ID: 41997\n"
"X-Crowdin-File: /kf5-trunk/messages/audiotube/audiotube.pot\n"
"X-Crowdin-File-ID: 25474\n"
#: asyncytmusic.cpp:65
#, kde-format
@@ -504,7 +504,7 @@ msgstr "Qi Binye, Tyson Tan"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected], tds00@qq.com"
msgstr "[email protected], tysontan@tysontan.com"
#: main.cpp:74
#, kde-format
+1 -1
View File
@@ -3,5 +3,5 @@
#
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
ytmusicapi==1.1.0
ytmusicapi==1.1.1
yt-dlp
-280
View File
@@ -1,280 +0,0 @@
# SPDX-FileCopyrightText: 2023 Scarlett Moore <[email protected]>
#
# SPDX-License-Identifier: CC0-1.0
---
name: audiotube
confinement: devmode
grade: stable
base: core22
adopt-info: audiotube
icon: $CRAFT_PROJECT_DIR/logo.png
apps:
audiotube:
# extensions:
# - kde-neon
common-id: org.kde.audiotube
desktop: usr/share/applications/org.kde.audiotube.desktop
command: usr/bin/audiotube
plugs:
- home
- desktop
- desktop-legacy
- opengl
- wayland
- x11
- audio-playback
- unity7
- network
- network-bind
- network-observe
- browser-support
- network-manager-observe
- network-manager
- hardware-observe
- process-control
- alsa
- mpris
command-chain:
- snap/command-chain/desktop-launch
assumes:
- snapd2.58.3
compression: lzo
plugs:
desktop:
mount-host-font-cache: false
icon-themes:
interface: content
target: $SNAP/data-dir/icons
default-provider: gtk-common-themes
sound-themes:
interface: content
target: $SNAP/data-dir/sounds
default-provider: gtk-common-themes
kf5-5-111-qt-5-15-11-core22:
content: kf5-5-111-qt-5-15-11-core22-all
interface: content
default-provider: kf5-5-111-qt-5-15-11-core22
target: $SNAP/kf5
environment:
SNAP_DESKTOP_RUNTIME: $SNAP/kf5
QML2_IMPORT_PATH: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/qt5/qml:$SNAP/kf5/usr/lib/$CRAFT_ARCH_TRIPLET/qt5/qml:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/qml"
PYTHONPYCACHEPREFIX: "$SNAP_USER_COMMON/.pycache"
PYTHONUSERBASE: $SNAP_USER_COMMON/.local
PIP_USER: 1
PYTHONPATH: "$PYTHONUSERBASE/lib/python3.10/site-packages:$SNAP/lib/python3.10/site-packages:$SNAP/usr/lib/python3/dist-packages"
QT_PLUGIN_PATH: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/qt5/plugins:$SNAP/kf5/usr/lib/$CRAFT_ARCH_TRIPLET/qt5/plugins/kf5"
QT_QUICK_CONTROLS_STYLE: org.kde.desktop
XDG_DATA_DIRS: $SNAP/usr/share:$SNAP/kf5/usr/share:$XDG_DATA_DIRS
XDG_CONFIG_HOME: $SNAP/etc/xdg:$SNAP/kf5/etc/xdg:/etc/xdg:$XDG_CONFIG_HOME
GST_PLUGIN_PATH: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/gstreamer-1.0"
GST_PLUGIN_SYSTEM_PATH: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/gstreamer-1.0"
GST_PLUGIN_SCANNER: "$SNAP/kf5/usr/lib/$CRAFT_ARCH_TRIPLET/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner"
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET:/snap/ffmpeg-2204/current/usr/lib:$SNAP/kf5/lib/$CRAFT_ARCH_TRIPLET:$SNAP/kf5/usr/lib/$CRAFT_ARCH_TRIPLET:$SNAP/kf5/usr/lib:$SNAP/kf5/usr/lib/vala-current:$SNAP/kf5/usr/lib/$CRAFT_ARCH_TRIPLET/pulseaudio:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/blas"
hooks:
configure:
plugs:
- desktop
command-chain:
- snap/command-chain/hooks-configure-desktop
layout:
/usr/share/X11:
symlink: $SNAP/kf5/usr/share/X11
"/usr/lib/$CRAFT_ARCH_TRIPLET/alsa-lib":
bind: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET/alsa-lib"
"/usr/share/alsa":
bind: "$SNAP/usr/share/alsa"
"/etc/alsa/conf.d":
bind: "$SNAP/etc/alsa/conf.d"
package-repositories:
- type: apt
components:
- main
suites:
- jammy
key-id: 444DABCF3667D0283F894EDDE6D4736255751E5D
url: http://archive.neon.kde.org/user
key-server: keyserver.ubuntu.com
parts:
kde-neon:
source: /snap/snapcraft/current/share/snapcraft/extensions/desktop/kde-neon
source-type: local
plugin: make
make-parameters:
- PLATFORM_PLUG=kf5-5-111-qt-5-15-11-core22
build-snaps:
- kf5-5-111-qt-5-15-11-core22-sdk
build-environment:
- &id001
PATH: /snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/bin${PATH:+:$PATH}
- &id002
XDG_DATA_DIRS: $CRAFT_STAGE/usr/share:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/share:/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}
- &id003
XDG_CONFIG_HOME: $CRAFT_STAGE/etc/xdg:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/etc/xdg:/etc/xdg${XDG_CONFIG_HOME:+:$XDG_CONFIG_HOME}
- &id004
CRAFT_CMAKE_ARGS: -DCMAKE_FIND_ROOT_PATH=/snap/kf5-5-111-qt-5-15-11-core22-sdk/current${CRAFT_CMAKE_ARGS:+:$CRAFT_CMAKE_ARGS}
yt-dlp:
plugin: python
source: https://github.com/yt-dlp/yt-dlp.git
python-packages:
- mutagen
- pycryptodomex
- websockets
- brotli; platform_python_implementation=='CPython'
- brotlicffi; platform_python_implementation!='CPython'
- certifi
build-packages:
- python3
- flake8
- pandoc
- zip
build-snaps:
- ffmpeg-2204-sdk
build-environment:
- LD_LIBRARY_PATH: /snap/ffmpeg-2204/current/usr/lib:/snap/ffmpeg-2204/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$CRAFT_STAGE/usr/lib:$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/vala-current:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pulseaudio
stage-packages:
- python3-pkg-resources
- curl
- ca-certificates
- python3-pyxattr
- rtmpdump
- libfribidi-bin
stage:
- "bin/yt-dlp"
- "lib/python3.10/site-packages/mutagen"
- "lib/python3.10/site-packages/Cryptodome"
- "lib/python3.10/site-packages/brotli.py"
- "lib/python3.10/site-packages/_brotli*"
- "lib/python3.10/site-packages/certifi"
- "lib/python3.10/site-packages/websockets"
- "-lib/python3.10/site-packages/*/__pycache__"
- "lib/python3.10/site-packages/yt_dlp*"
- "usr/bin/curl"
- "usr/lib/*/libcurl.*"
- "usr/lib/*/libfribidi*"
- "usr/bin/rtmpdump"
- "usr/bin/mutagen*"
- "usr/lib/sasl2"
ytmusicapi:
after:
- yt-dlp
plugin: python
source: https://github.com/sigma67/ytmusicapi.git
source-tag: 1.1.0
python-packages:
- "requests>=2.22"
- "setuptools>=65"
- "setuptools_scm[toml]>=7"
build-packages:
- python3
- gettext
build-environment:
- LD_LIBRARY_PATH: $CRAFT_STAGE/usr/lib:$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/lib/$CRAFT_ARCH_TRIPLET:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/vala-current:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET/pulseaudio
stage:
- "lib/python3.10/site-packages/ytmusicapi"
- "lib/python3.10/site-packages/ytmusicapi-1.1.0.dist-info/"
- "lib/python3.10/site-packages/requests"
- "lib/python3.10/site-packages/urllib3"
- "lib/python3.10/site-packages/charset_normalizer"
- "lib/python3.10/site-packages/idna"
- "lib/python3.10/site-packages/certifi"
- "-lib/python3.10/site-packages/*/__pycache__"
- "bin/ytmusicapi"
audiotube:
after:
- kde-neon
- yt-dlp
- ytmusicapi
parse-info:
- usr/share/metainfo/org.kde.audiotube.appdata.xml
plugin: cmake
build-packages:
- libfuturesql-dev
- libpython3.10-dev
- pybind11-dev
- kirigami-addons-dev
- qcoro-qt5-dev
stage-packages:
- gstreamer1.0-alsa
- gstreamer1.0-plugins-base
- gstreamer1.0-plugins-bad
- gstreamer1.0-plugins-good
- gstreamer1.0-plugins-ugly
- gstreamer1.0-libav
- libasound2
- libasound2-data
- libasound2-plugins
- libasound2-plugins-extra
- libfuturesql
- libpython3.10
- python3
- python3-pybind11
- python3-m3u8
- qml-module-org-kde-kirigami-addons-labs-mobileform
- qml-module-org-kde-purpose
- qml-module-org-kde-qqc2desktopstyle
- qt5-image-formats-plugins
- libqcoro5core0
- libblas3
stage-snaps:
- ffmpeg-2204
source: .
source-type: local
cmake-parameters:
- "-DCMAKE_INSTALL_PREFIX=/usr"
- "-DCMAKE_BUILD_TYPE=Release"
- "-DENABLE_TESTING=OFF"
- "-DBUILD_TESTING=OFF"
- "-DKDE_SKIP_TEST_SETTINGS=ON"
- "-DPYBIND11_FINDPYTHON=ON"
- "-DCMAKE_FIND_ROOT_PATH=/snap/kf5-5-111-qt-5-15-11-core22-sdk/current\\;$CRAFT_STAGE"
- "-DKDE_INSTALL_PLUGINDIR=/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/qt5/plugins/"
stage:
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libEGL_mesa.so.0.0.0"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libGLX_mesa.so.0.0.0"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libLLVM-15.so.1"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libdrm*"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libgamin-1.so.0.1.10"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libicuio.so.70.1"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libicutest.so.70.1"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libpolkit-qt5-agent-1.so.1.114.0"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libpolkit-qt5-gui-1.so.1.114.0"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libpulse-simple.so.0.1.1"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libsensors.so.5.0.0"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libxcb*"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/libX*"
- "-usr/lib/x86_64-linux-gnu/libglapi.so*"
- "-usr/lib/x86_64-linux-gnu/libicutu.so*"
- "-usr/lib/x86_64-linux-gnu/libpciaccess.so*"
- "-usr/lib/x86_64-linux-gnu/libpolkit-agent-1.so*"
- "-usr/lib/x86_64-linux-gnu/libxshmfence.so*"
prime:
- "-usr/lib/*/cmake/*"
- "-usr/include/*"
- "-usr/share/ECM/*"
- "-usr/share/doc/*"
- "-usr/share/man/*"
- "-usr/share/icons/breeze-dark*"
- "-usr/bin/X11"
- "-usr/lib/gcc/${CRAFT_ARCH_TRIPLET}/6.0.0"
- "-usr/lib/aspell/*"
- "-usr/share/lintian"
- "-run/pulseaudio-enable-autospawn"
- "-etc/pulse/client.conf.d/01-enable-autospawn.conf"
- "-usr/lib/${CRAFT_ARCH_TRIPLET}/dri"
build-environment:
- *id001
- *id002
- *id003
- *id004
- PYTHONPATH: "$CRAFT_STAGE/lib/python3.10/site-packages:$CRAFT_STAGE/usr/lib/python3.10/dist-packages"
- LD_LIBRARY_PATH: $CRAFT_STAGE/usr/lib:$CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/lib/$CRAFT_ARCH_TRIPLET:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/vala-current:/snap/kf5-5-111-qt-5-15-11-core22-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET/pulseaudio
cleanup:
after:
- kde-neon
- audiotube
plugin: nil
override-prime: |
set -eux
# # Unused libraries found by linter
-1
View File
@@ -99,7 +99,6 @@ private:
interface->reportResult(val);
interface->reportFinished();
} catch (const std::exception &err) {
interface->reportResult({});
interface->reportFinished();
Q_EMIT errorOccurred(QString::fromLocal8Bit(err.what()));
}
+5 -8
View File
@@ -40,6 +40,7 @@ Item {
onTextEdited: {
filterText = text
Library.searches.filter = text
if(completionList.count === 0) {
//no matching search -> message should display
Library.temporarySearch = ""
@@ -316,11 +317,10 @@ Item {
visible: searchField.filterText && recentsRepeater.count > 0 //if changed, adjust playOpenHeight
model: SortFilterModel {
filterRole: PlaybackHistoryModel.Title
filterRegularExpression: searchField.filterExpression
sourceModel: Library.playbackHistory
model: LocalSearchModel {
searchQuery: searchField.text
}
delegate: searchAlbum
}
Kirigami.Separator {
@@ -355,10 +355,7 @@ Item {
property int empiricDelegateHeight: recentsRepeater.visible ? (mainScrollView.contentHeight - recentsRepeater.height) / count : (mainScrollView.contentHeight + mainScrollViewLayout.spacing) / (count)
id: completionList
model: SortFilterModel {
sourceModel: Library.searches
filterRegularExpression: searchField.filterExpression
}
model: Library.searches
function isSelectedDelegateVisible() {
if(!recentsRepeater.visible) {
+71 -24
View File
@@ -27,25 +27,10 @@ Library::Library(QObject *parent)
}()))
{
m_database->runMigrations(":/migrations/");
m_searches = new SearchHistoryModel(m_database->getResults<SingleValue<QString>>("select distinct (search_query) from searches order by search_id desc"), this);
connect(this, &Library::changeFavourites, [this]() {
auto future = m_database->getResults<Song>("select * from favourites natural join songs order by favourites.rowid desc");
m_favourites= new FavouritesModel(std::move(future), this);
Q_EMIT favouritesChanged();
});
Q_EMIT changeFavourites();
m_searches = new SearchHistoryModel(this);
connect(this, &Library::changePlaybackHistory, [this]() {
//playbackHistory
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs");
m_playbackHistory = new PlaybackHistoryModel(std::move(future), this);
//mostPlayed
auto future2 = m_database->getResults<PlayedSong>("select * from played_songs natural join songs order by plays desc limit 10");
m_mostPlayed = new PlaybackHistoryModel(std::move(future2), this);
Q_EMIT playbackHistoryChanged();
});
Q_EMIT changePlaybackHistory();
refreshFavourites();
refreshPlaybackHistory();
}
Library::~Library() = default;
@@ -64,13 +49,15 @@ FavouritesModel *Library::favourites()
void Library::addFavourite(const QString &videoId, const QString &title, const QString &artist, const QString &album)
{
QCoro::connect(addSong(videoId, title, artist, album), this, [=, this] {
QCoro::connect(m_database->execute("insert or ignore into favourites (video_id) values (?)", videoId), this, &Library::changeFavourites);
QCoro::connect(m_database->execute("insert or ignore into favourites (video_id) values (?)", videoId),
this, &Library::refreshFavourites);
});
}
void Library::removeFavourite(const QString &videoId)
{
QCoro::connect(m_database->execute("delete from favourites where video_id = ?", videoId), this, &Library::changeFavourites);
QCoro::connect(m_database->execute("delete from favourites where video_id = ?", videoId),
this, &Library::refreshFavourites);
}
FavouriteWatcher *Library::favouriteWatcher(const QString &videoId)
@@ -114,17 +101,41 @@ PlaybackHistoryModel *Library::playbackHistory()
return m_playbackHistory;
}
void Library::refreshPlaybackHistory()
{
// playbackHistory
auto future = m_database->getResults<PlayedSong>(
"select * from played_songs natural join songs");
m_playbackHistory = new PlaybackHistoryModel(std::move(future), this);
// mostPlayed
auto future2 = m_database->getResults<PlayedSong>(
"select * from played_songs natural join songs order by plays desc limit 10");
m_mostPlayed = new PlaybackHistoryModel(std::move(future2), this);
Q_EMIT playbackHistoryChanged();
}
void Library::refreshFavourites()
{
auto future = m_database->getResults<Song>(
"select * from favourites natural join songs order by favourites.rowid desc");
m_favourites = new FavouritesModel(std::move(future), this);
Q_EMIT favouritesChanged();
}
void Library::addPlaybackHistoryItem(const QString &videoId, const QString &title, const QString &artist, const QString &album)
{
QCoro::connect(addSong(videoId, title, artist, album), this, [=, this] {
QCoro::connect(m_database->execute("insert or ignore into played_songs (video_id, plays) values (?, ?)", videoId, 0), this, [=, this] {
QCoro::connect(m_database->execute("update played_songs set plays = plays + 1 where video_id = ? ", videoId), this, &Library::changePlaybackHistory);
QCoro::connect(m_database->execute("update played_songs set plays = plays + 1 where video_id = ? ", videoId),
this, &Library::refreshPlaybackHistory);
});
});
}
void Library::removePlaybackHistoryItem(const QString &videoId)
{
QCoro::connect(m_database->execute("delete from played_songs where video_id = ?", videoId), this, &Library::changePlaybackHistory);
QCoro::connect(m_database->execute("delete from played_songs where video_id = ?", videoId),
this, &Library::refreshPlaybackHistory);
}
WasPlayedWatcher *Library::wasPlayedWatcher(const QString& videoId)
@@ -164,6 +175,11 @@ PlaybackHistoryModel::PlaybackHistoryModel(QFuture<std::vector<PlayedSong>> &&so
});
}
PlaybackHistoryModel::PlaybackHistoryModel(QObject *parent)
: QAbstractListModel(parent)
{
}
QHash<int, QByteArray> PlaybackHistoryModel::roleNames() const {
return {
{Roles::VideoId, "videoId"},
@@ -272,9 +288,25 @@ bool FavouriteWatcher::isFavourite() const {
return m_isFavourite;
}
SearchHistoryModel::SearchHistoryModel(QFuture<std::vector<SingleValue<QString>>> &&historyFuture, QObject *parent)
: QAbstractListModel(parent)
SearchHistoryModel::SearchHistoryModel(Library *library)
: QAbstractListModel(library)
{
auto historyFuture = library->database()
.getResults<SingleValue<QString>>("select distinct (search_query) from searches order by search_id desc limit 20");
connect(this, &SearchHistoryModel::filterChanged, this, [library, this]() {
auto future = library->database()
.getResults<SingleValue<QString>>("select distinct (search_query) from searches "
"where search_query like '%" % m_filter % "%'"
"order by search_id desc limit 20");
QCoro::connect(std::move(future), this, [this](auto history) {
beginResetModel();
m_history = history;
endResetModel();
});
});
QCoro::connect(std::move(historyFuture), this, [this](const auto history) {
beginResetModel();
m_history = history;
@@ -391,3 +423,18 @@ void WasPlayedWatcher::update(std::optional<SingleValue<bool> > result)
Q_EMIT wasPlayedChanged();
}
}
LocalSearchModel::LocalSearchModel(QObject *parent) : PlaybackHistoryModel(parent)
{
connect(this, &LocalSearchModel::searchQueryChanged, this, [this]() {
auto resultFuture = Library::instance().database()
.getResults<PlayedSong>("select * from played_songs natural join songs "
"where title like '%" % m_searchQuery % "%' "
"order by plays desc limit 10");
QCoro::connect(std::move(resultFuture), this, [this](auto results) {
beginResetModel();
m_playedSongs = results;
endResetModel();
});
});
}
+25 -4
View File
@@ -84,21 +84,39 @@ public:
Q_ENUM(Roles);
PlaybackHistoryModel(QFuture<std::vector<PlayedSong>> &&songs, QObject *parent = nullptr);
PlaybackHistoryModel(QObject *parent = nullptr);
QHash<int, QByteArray> roleNames() const override;
int rowCount(const QModelIndex &parent) const override;
QVariant data(const QModelIndex &index, int role) const override;
std::vector<PlayedSong> getPlayedSong() const;
private:
protected:
std::vector<PlayedSong> m_playedSongs;
};
class LocalSearchModel : public PlaybackHistoryModel {
Q_OBJECT
Q_PROPERTY(QString searchQuery MEMBER m_searchQuery NOTIFY searchQueryChanged)
Q_SIGNAL void searchQueryChanged();
public:
LocalSearchModel(QObject *parent = nullptr);
QString m_searchQuery;
};
class Library;
class SearchHistoryModel : public QAbstractListModel {
Q_OBJECT
Q_PROPERTY(QString filter MEMBER m_filter NOTIFY filterChanged)
public:
SearchHistoryModel(QFuture<std::vector<SingleValue<QString>>> &&historyFuture, QObject *parent = nullptr);
SearchHistoryModel(Library *library);
int rowCount(const QModelIndex &parent) const override;
void removeSearch(const QString &search);
QVariant data(const QModelIndex &index, int role) const override;
@@ -106,10 +124,13 @@ public:
const QString & temporarySearch() const;
void setTemporarySearch(QString const& text);
Q_SIGNAL void filterChanged();
private:
size_t getRow(QString const &search) const;
std::vector<SingleValue<QString>> m_history;
QString m_temporarySearch;
QString m_filter;
};
class Library : public QObject
@@ -129,7 +150,7 @@ public:
FavouritesModel *favourites();
Q_SIGNAL void favouritesChanged();
Q_SIGNAL void changeFavourites();
void refreshFavourites();
Q_INVOKABLE void addFavourite(const QString &videoId, const QString &title, const QString &artist, const QString &album);
Q_INVOKABLE void removeFavourite(const QString &videoId);
Q_INVOKABLE FavouriteWatcher *favouriteWatcher(const QString &videoId);
@@ -144,7 +165,7 @@ public:
PlaybackHistoryModel *playbackHistory();
Q_SIGNAL void playbackHistoryChanged();
Q_SIGNAL void changePlaybackHistory();
void refreshPlaybackHistory();
Q_INVOKABLE void addPlaybackHistoryItem(const QString &videoId, const QString &title, const QString &artist, const QString &album);
Q_INVOKABLE void removePlaybackHistoryItem(const QString &videoId);
Q_INVOKABLE WasPlayedWatcher *wasPlayedWatcher(const QString &videoId);
+1
View File
@@ -91,6 +91,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
qmlRegisterUncreatableType<PlaybackHistoryModel>(URI, 1, 0, "PlaybackHistoryModel","");
qmlRegisterType<QSortFilterProxyModel>(URI, 1, 0, "SortFilterModel");
qmlRegisterType<Blur>(URI, 1, 0, "Blur");
qmlRegisterType<LocalSearchModel>(URI, 1, 0, "LocalSearchModel");
qmlRegisterType<LocalPlaylistModel>(URI, 1, 0, "LocalPlaylistModel");
qmlRegisterType<LocalPlaylistsModel>(URI, 1, 0, "LocalPlaylistsModel");
qmlRegisterType<PlaylistImporter>(URI, 1, 0, "PlaylistImporter");
+2 -2
View File
@@ -12,7 +12,7 @@
#include <vector>
#include <memory>
constexpr auto TESTED_YTMUSICAPI_VERSION = "1.1.0";
constexpr auto TESTED_YTMUSICAPI_VERSION = "1.1.1";
struct YTMusicPrivate;
@@ -293,7 +293,7 @@ public:
std::vector<search::SearchResultItem> search(const std::string &query,
const std::optional<std::string> &filter = std::nullopt,
const std::optional<std::string> &scope = std::nullopt,
const int limit = 20,
const int limit = 100,
const bool ignore_spelling = false) const;
/// https://ytmusicapi.readthedocs.io/en/latest/reference.html#ytmusicapi.YTMusic.get_artist