]> git.sur5r.net Git - minitube/commitdiff
New upstream version 3.8.1
authorJakob Haufe <jakob@haufe.it>
Thu, 4 Mar 2021 19:43:43 +0000 (19:43 +0000)
committerJakob Haufe <jakob@haufe.it>
Thu, 4 Mar 2021 19:43:43 +0000 (19:43 +0000)
locale/ca.ts
locale/de_DE.ts
locale/fr.ts
minitube.pro
src/aboutview.cpp
src/yt/searchvideosource.cpp
src/yt/ytjs/ytjschannelsource.cpp
src/yt/ytjs/ytjssinglevideosource.cpp
src/ytsearch.cpp

index d64049e0fdb0eaef58b115bf8f9643aea541a5c9..fea391f2e84c834efe44d8ddf8348d2d0069b915 100644 (file)
     </message>
     <message numerus="yes">
         <source>%n year(s) ago</source>
-        <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+        <translation><numerusform>Fa %n any(s)</numerusform><numerusform>Fa %n any(s)</numerusform></translation>
     </message>
 </context>
 <context>
     </message>
     <message>
         <source>Rewind %1 seconds</source>
-        <translation type="unfinished"/>
+        <translation>Rebobina %1 segons</translation>
     </message>
     <message>
         <source>Fast forward %1 seconds</source>
-        <translation type="unfinished"/>
+        <translation>Avança %1 segons</translation>
     </message>
     <message>
         <source>channel</source>
-        <translation type="unfinished"/>
+        <translation>canal</translation>
     </message>
 </context>
 <context>
     </message>
     <message>
         <source>This year</source>
-        <translation type="unfinished"/>
+        <translation>Aquest any</translation>
     </message>
     <message>
         <source>HD</source>
-        <translation type="unfinished"/>
+        <translation>HD</translation>
     </message>
     <message>
         <source>4K</source>
-        <translation type="unfinished"/>
+        <translation>4K</translation>
     </message>
     <message>
         <source>HDR</source>
-        <translation type="unfinished"/>
+        <translation>HDR</translation>
     </message>
 </context>
 <context>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished"/>
+        <translation>Suprimeix</translation>
     </message>
     <message>
         <source>Need a remote control for %1? Try %2!</source>
-        <translation type="unfinished"/>
+        <translation>Necessiteu un comandament remot per a %1? Proveu %2!</translation>
     </message>
     <message>
         <source>I keep improving %1 to make it the best I can. Support this work!</source>
-        <translation type="unfinished"/>
+        <translation>L&apos;aplicació %1 sempre està millorant constantment. Ajudeu-nos amb la nostra tasca!</translation>
     </message>
     <message>
         <source>An update is ready to be installed. Quit and install update.</source>
-        <translation type="unfinished"/>
+        <translation>Una actualització està disponible per ser instal·lada. sortiu de l&apos;aplicació i actualitzeu.</translation>
     </message>
 </context>
 <context>
     </message>
     <message>
         <source>Trending</source>
-        <translation type="unfinished"/>
+        <translation>Tendències</translation>
     </message>
     <message>
         <source>Music</source>
-        <translation type="unfinished"/>
+        <translation>Música</translation>
     </message>
     <message>
         <source>News</source>
-        <translation type="unfinished"/>
+        <translation>Novetats</translation>
     </message>
     <message>
         <source>Movies</source>
-        <translation type="unfinished"/>
+        <translation>Pel·lícules</translation>
     </message>
     <message>
         <source>Gaming</source>
-        <translation type="unfinished"/>
+        <translation>Jocs</translation>
     </message>
 </context>
 <context>
     <name>Updater</name>
     <message>
         <source>Check for Updates...</source>
-        <translation type="unfinished"/>
+        <translation>S&apos;està comprovant si hi han actualitzacions disponibles...</translation>
     </message>
     <message>
         <source>Version %1 is available...</source>
-        <translation type="unfinished"/>
+        <translation>La versió %1 està disponible...</translation>
     </message>
     <message>
         <source>Downloading version %1...</source>
-        <translation type="unfinished"/>
+        <translation>S&apos;està baixant la versió %1...</translation>
     </message>
     <message>
         <source>Restart to Update</source>
-        <translation type="unfinished"/>
+        <translation>Reinicieu per actualitzar</translation>
     </message>
     <message>
         <source>Version %1 download failed</source>
-        <translation type="unfinished"/>
+        <translation>Ha fallat la baixada de la versió %1</translation>
     </message>
     <message>
         <source>Check for Updates</source>
-        <translation type="unfinished"/>
+        <translation>Cerca actualitzacions</translation>
     </message>
     <message>
         <source>Download Update</source>
-        <translation type="unfinished"/>
+        <translation>Baixa l&apos;actualització</translation>
     </message>
     <message>
         <source>Downloading update...</source>
     </message>
     <message>
         <source>Retry Update Download</source>
-        <translation type="unfinished"/>
+        <translation>Prova novament baixar l&apos;actualització</translation>
     </message>
     <message>
         <source>You have the latest version.</source>
-        <translation type="unfinished"/>
+        <translation>Teniu la darrera versió.</translation>
     </message>
     <message>
         <source>Version %1 is available.</source>
-        <translation type="unfinished"/>
+        <translation>Versió %1 disponible.</translation>
     </message>
     <message>
         <source>An update has been downloaded and is ready to be installed.</source>
-        <translation type="unfinished"/>
+        <translation>S&apos;ha baixat una actualització i està preparada per ser instal·lada.</translation>
     </message>
 </context>
 <context>
     <name>updater::DefaultUpdater</name>
     <message>
         <source>There are currently no updates available.</source>
-        <translation type="unfinished"/>
+        <translation>No s&apos;ha trobat cap actualització disponible.</translation>
     </message>
 </context>
 <context>
     <name>updater::Dialog</name>
     <message>
         <source>You already have the latest version</source>
-        <translation type="unfinished"/>
+        <translation>Ja teniu la darrera versió</translation>
     </message>
     <message>
         <source>Downloading %1 %2...</source>
-        <translation type="unfinished"/>
+        <translation>S&apos;està baixant %1 %2...</translation>
     </message>
     <message>
         <source>A new version of %1 is available!</source>
     </message>
     <message>
         <source>Download Update</source>
-        <translation type="unfinished"/>
+        <translation>Baixa l&apos;actualització</translation>
     </message>
 </context>
 </TS>
\ No newline at end of file
index 69088717fcafaac2a5a912b6741c5403bf726ad8..4b953fdb6621f0e16ac0c8471a4700d958e91c60 100644 (file)
     </message>
     <message>
         <source>An update is ready to be installed. Quit and install update.</source>
-        <translation type="unfinished"/>
+        <translation>Ein Update ist für die Installation bereit. Schließe das Spiel und installiere das Update.</translation>
     </message>
 </context>
 <context>
index 8bcdae6069913071a5771281c69608f1180b578e..c9fa41e0be4d395453f5f474955a7272215a6900 100644 (file)
     </message>
     <message numerus="yes">
         <source>%n year(s) ago</source>
-        <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+        <translation><numerusform>Il y a %n an(s)</numerusform><numerusform>Il y a %n an(s)</numerusform></translation>
     </message>
 </context>
 <context>
     </message>
     <message>
         <source>Rewind %1 seconds</source>
-        <translation type="unfinished"/>
+        <translation>Rembobiner %1 secondes</translation>
     </message>
     <message>
         <source>Fast forward %1 seconds</source>
-        <translation type="unfinished"/>
+        <translation>Avance rapide d e%1 secondes</translation>
     </message>
     <message>
         <source>channel</source>
-        <translation type="unfinished"/>
+        <translation>chaîne</translation>
     </message>
 </context>
 <context>
     </message>
     <message>
         <source>This year</source>
-        <translation type="unfinished"/>
+        <translation>Cette année</translation>
     </message>
     <message>
         <source>HD</source>
-        <translation type="unfinished"/>
+        <translation>HD</translation>
     </message>
     <message>
         <source>4K</source>
-        <translation type="unfinished"/>
+        <translation>4K</translation>
     </message>
     <message>
         <source>HDR</source>
-        <translation type="unfinished"/>
+        <translation>HDR</translation>
     </message>
 </context>
 <context>
     </message>
     <message>
         <source>Remove</source>
-        <translation type="unfinished"/>
+        <translation>Supprimer</translation>
     </message>
     <message>
         <source>Need a remote control for %1? Try %2!</source>
-        <translation type="unfinished"/>
+        <translation>Besoin d&apos;une  commande à distance pour %1 ? Essayez %2 !</translation>
     </message>
     <message>
         <source>I keep improving %1 to make it the best I can. Support this work!</source>
-        <translation type="unfinished"/>
+        <translation>Je continue d’améliorer %1 pour en faire le mieux que je peux. Soutenez ce travail!</translation>
     </message>
     <message>
         <source>An update is ready to be installed. Quit and install update.</source>
-        <translation type="unfinished"/>
+        <translation>Une mise à jour est prête à être installée. Quittez et installez la mise à jour.</translation>
     </message>
 </context>
 <context>
     </message>
     <message>
         <source>Trending</source>
-        <translation type="unfinished"/>
+        <translation>Tendance</translation>
     </message>
     <message>
         <source>Music</source>
-        <translation type="unfinished"/>
+        <translation>Musique</translation>
     </message>
     <message>
         <source>News</source>
-        <translation type="unfinished"/>
+        <translation>Journaux</translation>
     </message>
     <message>
         <source>Movies</source>
-        <translation type="unfinished"/>
+        <translation>Films</translation>
     </message>
     <message>
         <source>Gaming</source>
-        <translation type="unfinished"/>
+        <translation>Jeux</translation>
     </message>
 </context>
 <context>
     <name>Updater</name>
     <message>
         <source>Check for Updates...</source>
-        <translation type="unfinished"/>
+        <translation>Vérifier les mises à jour...</translation>
     </message>
     <message>
         <source>Version %1 is available...</source>
-        <translation type="unfinished"/>
+        <translation>La version %1 est disponible...</translation>
     </message>
     <message>
         <source>Downloading version %1...</source>
-        <translation type="unfinished"/>
+        <translation>Téléchargement de la version %1...</translation>
     </message>
     <message>
         <source>Restart to Update</source>
-        <translation type="unfinished"/>
+        <translation>Redémarrez pour mettre à jour</translation>
     </message>
     <message>
         <source>Version %1 download failed</source>
-        <translation type="unfinished"/>
+        <translation>Le téléchargement de la version %1 a échoué</translation>
     </message>
     <message>
         <source>Check for Updates</source>
-        <translation type="unfinished"/>
+        <translation>Vérifier les mises à jour</translation>
     </message>
     <message>
         <source>Download Update</source>
-        <translation type="unfinished"/>
+        <translation>Télécharger la mise à jour</translation>
     </message>
     <message>
         <source>Downloading update...</source>
     </message>
     <message>
         <source>Retry Update Download</source>
-        <translation type="unfinished"/>
+        <translation>Réessayer de télécharger la mise à jour</translation>
     </message>
     <message>
         <source>You have the latest version.</source>
-        <translation type="unfinished"/>
+        <translation>Vous avez la dernière version</translation>
     </message>
     <message>
         <source>Version %1 is available.</source>
-        <translation type="unfinished"/>
+        <translation>La version %1 est disponible.</translation>
     </message>
     <message>
         <source>An update has been downloaded and is ready to be installed.</source>
-        <translation type="unfinished"/>
+        <translation>Une mise à jour a été téléchargée et est prête à être installée.</translation>
     </message>
 </context>
 <context>
     <name>updater::DefaultUpdater</name>
     <message>
         <source>There are currently no updates available.</source>
-        <translation type="unfinished"/>
+        <translation>Il n&apos;y a actuellement aucune mise à jour disponible.</translation>
     </message>
 </context>
 <context>
     <name>updater::Dialog</name>
     <message>
         <source>You already have the latest version</source>
-        <translation type="unfinished"/>
+        <translation>Vous avez déjà la dernière version</translation>
     </message>
     <message>
         <source>Downloading %1 %2...</source>
-        <translation type="unfinished"/>
+        <translation>Téléchargement de %1 %2...</translation>
     </message>
     <message>
         <source>A new version of %1 is available!</source>
     </message>
     <message>
         <source>Download Update</source>
-        <translation type="unfinished"/>
+        <translation>Télécharger la mise à jour</translation>
     </message>
 </context>
 </TS>
\ No newline at end of file
index 0521304e00ffbe916b34cee37a935887f2dfcda1..e48dbb2da2ea2a123dbffefde4dd276bcc3f1492 100644 (file)
@@ -1,7 +1,7 @@
 CONFIG += c++17 exceptions_off rtti_off object_parallel_to_source
 
 TEMPLATE = app
-VERSION = 3.8
+VERSION = 3.8.1
 DEFINES += APP_VERSION="$$VERSION"
 
 APP_NAME = Minitube
index afa4662cc4c1df7610be2546a33b090e79ff9ce3..e60c173bdac0a082181e3055230d9ebb9b6a4ee2 100644 (file)
@@ -198,7 +198,9 @@ AboutView::AboutView(QWidget *parent) : View(parent) {
 
     layout->addLayout(buttonLayout);
 
+#ifndef APP_WIN_STORE
     verticalLayout->addWidget(new AppsWidget());
+#endif
 }
 
 void AboutView::appear() {
index bec7d0a9b5deb415fe99e9977aee653a52da3846..ebf47c0a1d02aeaee539ed86672c23c08e27f879 100644 (file)
@@ -64,6 +64,7 @@ int SearchVideoSource::maxResults() {
 }
 
 void SearchVideoSource::connectSource(int max, int startIndex) {
+    connect(source, &VideoSource::nameChanged, this, &VideoSource::nameChanged);
     connect(source, &VideoSource::finished, this, &VideoSource::finished);
     connect(source, &VideoSource::gotVideos, this, [this](auto &videos) {
         if (aborted) return;
index f09bbabc986853908155398ce53dad59eb07a850..a38264006fb84e26633a76cf9b8b3fe5de056c49 100644 (file)
@@ -76,8 +76,6 @@ void YTJSChannelSource::loadVideos(int max, int startIndex) {
             .onJson([this](auto &doc) {
                 auto obj = doc.object();
 
-                qDebug() << doc.toJson();
-
                 continuation = obj["continuation"].toString();
 
                 const auto items = obj["items"].toArray();
@@ -123,7 +121,7 @@ void YTJSChannelSource::loadVideos(int max, int startIndex) {
 
                     QString channelName = i["author"].toString();
                     if (channelName != name) {
-                        this->name = channelName;
+                        name = channelName;
                         emit nameChanged(name);
                     }
                     video->setChannelTitle(channelName);
index 0449d218f5743d7cabf3ec40ee200738bdacc087..2471ee9a4c47ad69c525532cda17b09c650f525b 100644 (file)
@@ -28,11 +28,7 @@ void YTJSSingleVideoSource::loadVideos(int max, int startIndex) {
                 auto obj = doc.object();
                 // qDebug() << doc.toJson();
 
-                const auto items = obj["related_videos"].toArray();
-                QVector<Video *> videos;
-                videos.reserve(items.size());
-
-                for (const auto &i : items) {
+                auto parseVideoObject = [](QJsonObject i) {
                     Video *video = new Video();
 
                     QString id = i["id"].toString();
@@ -69,7 +65,21 @@ void YTJSSingleVideoSource::loadVideos(int max, int startIndex) {
                     QString channelName = i["author"].toString();
                     video->setChannelTitle(channelName);
 
-                    videos << video;
+                    return video;
+                };
+
+                QVector<Video *> videos;
+
+                if (!video) {
+                    // parse video details
+                    videos << parseVideoObject(obj["videoDetails"].toObject());
+                }
+
+                const auto items = obj["related_videos"].toArray();
+                videos.reserve(items.size());
+
+                for (const auto &i : items) {
+                    videos << parseVideoObject(i.toObject());
                 }
 
                 if (videos.isEmpty()) {
index f52bb8cf5fa82f0448d2499d02fe0467f822208e..cf4cd5fe0c620d46aebc4ff731952c53263bbc80 100644 (file)
@@ -187,10 +187,12 @@ void YTSearch::requestError(const QString &message) {
 }
 
 QString YTSearch::videoIdFromUrl(const QString &url) {
-    static QRegExp re = QRegExp("^.*[\\?&]v=([^&#]+).*$");
-    if (re.exactMatch(url)) return re.cap(1);
-    re = QRegExp("^.*://.*/([^&#\\?]+).*$");
-    if (re.exactMatch(url)) return re.cap(1);
+    static const QVector<QRegExp> res = {QRegExp("^.*[\\?&]v=([^&#]+).*$"),
+                                         QRegExp("^.*://.*/([^&#\\?]+).*$"),
+                                         QRegExp("^.*/shorts/([^&#\\?/]+)$")};
+    for (const auto &re : res) {
+        if (re.exactMatch(url)) return re.cap(1);
+    }
     return QString();
 }