diff -Nru smtube-20.1.0/Changelog smtube-20.6.0/Changelog --- smtube-20.1.0/Changelog 2020-01-21 19:26:49.000000000 +0000 +++ smtube-20.6.0/Changelog 2020-06-03 15:38:10.000000000 +0000 @@ -1,3 +1,14 @@ +Version 20.6: + +(2020-05-27) + * New option in preferences to select the site to use as homepage. + +(2020-05-22) + * The internal youtube code has been removed and now smtube just + uses youtube-dl to get the video urls. + * New option in the help menu to help install youtube-dl. + + Version 20.1: (2020-01-20) diff -Nru smtube-20.1.0/create_deb.sh smtube-20.6.0/create_deb.sh --- smtube-20.1.0/create_deb.sh 2020-01-21 19:31:18.000000000 +0000 +++ smtube-20.6.0/create_deb.sh 2020-06-18 14:49:40.000000000 +0000 @@ -4,7 +4,7 @@ cp debian-orig/changelog-orig debian-orig/changelog ./get_svn_revision.sh -#dch -v 20.1.0-`cat svn_revision` "New version" +#dch -v 20.6.0-`cat svn_revision` "New version" #dpkg-buildpackage -rfakeroot diff -Nru smtube-20.1.0/debian/changelog smtube-20.6.0/debian/changelog --- smtube-20.1.0/debian/changelog 2020-06-18 15:02:15.000000000 +0000 +++ smtube-20.6.0/debian/changelog 2020-06-18 15:02:15.000000000 +0000 @@ -1,4 +1,12 @@ -smtube (20.1.0-1~precise1) precise; urgency=low +smtube (20.6.0-1~precise1) precise; urgency=low + + * The internal YouTube code has been removed. Now SMTube uses + an external application to get the video URLs. + * Now it's possible to select the web site to use as homepage. + + -- Ricardo Villalba Thu, 18 Jun 2020 16:45:01 +0200 + +smtube (20.1.0) precise; urgency=low * The YouTube code has been fixed. diff -Nru smtube-20.1.0/debian-orig/changelog-orig smtube-20.6.0/debian-orig/changelog-orig --- smtube-20.1.0/debian-orig/changelog-orig 2020-01-21 19:31:18.000000000 +0000 +++ smtube-20.6.0/debian-orig/changelog-orig 2020-06-18 14:49:40.000000000 +0000 @@ -1,3 +1,11 @@ +smtube (20.6.0) precise; urgency=low + + * The internal YouTube code has been removed. Now SMTube uses + an external application to get the video URLs. + * Now it's possible to select the web site to use as homepage. + + -- Ricardo Villalba Thu, 18 Jun 2020 16:45:01 +0200 + smtube (20.1.0) precise; urgency=low * The YouTube code has been fixed. diff -Nru smtube-20.1.0/OBS/Makefile smtube-20.6.0/OBS/Makefile --- smtube-20.1.0/OBS/Makefile 2020-01-21 19:31:18.000000000 +0000 +++ smtube-20.6.0/OBS/Makefile 2020-06-18 14:49:40.000000000 +0000 @@ -2,7 +2,7 @@ # deb packages at build.opensuse.org PACKAGE = smtube -VERSION = 20.1.0 +VERSION = 20.6.0 #DEPENDS = debhelper (>= 5.0.0), qtbase5-dev, qt5-qmake, qtscript5-dev, qttools5-dev-tools, qt5-default, libqt5webkit5-dev DEPENDS = debhelper (>= 5.0.0), libqt4-dev, libqtwebkit-dev diff -Nru smtube-20.1.0/Release_notes.txt smtube-20.6.0/Release_notes.txt --- smtube-20.1.0/Release_notes.txt 2020-01-21 19:26:49.000000000 +0000 +++ smtube-20.6.0/Release_notes.txt 2020-06-03 15:40:19.000000000 +0000 @@ -1,3 +1,8 @@ +Version 20.6 + * The internal YouTube code has been removed. Now SMTube uses + an external application to get the video URLs. + * Now it's possible to select the web site to use as homepage. + Version 20.1 * The YouTube code has been fixed. diff -Nru smtube-20.1.0/setup/translations/finnish.nsh smtube-20.6.0/setup/translations/finnish.nsh --- smtube-20.1.0/setup/translations/finnish.nsh 2016-04-15 06:52:51.000000000 +0000 +++ smtube-20.6.0/setup/translations/finnish.nsh 2020-05-26 15:12:33.000000000 +0000 @@ -11,22 +11,22 @@ !endif ; Startup -${LangFileString} Installer_No_Admin "You must be logged in as an administrator when installing this program." +${LangFileString} Installer_No_Admin "Sinun on oltava kirjautuneena järjestelmänvalvojana kun asennat tätä ohjelmaa." -${LangFileString} Win64_Required "A 64-bit Windows operating system is required to install this software." +${LangFileString} Win64_Required "Tämän ohjelmiston asentaminen edellyttää 64-bittistä käyttöjärjestelmää." ; Welcome page -${LangFileString} WelcomePage_Title "$(^NameDA) Setup" -${LangFileString} WelcomePage_Text "Setup will guide you through the installation of $(^NameDA).$\r$\n$\r$\nIt is recommended that you close all instances of SMTube before starting setup. This will make it possible to update relevant program files without having to reboot your computer.$\r$\n$\r$\n$_CLICK" +${LangFileString} WelcomePage_Title "$(^NameDA) Asennus" +${LangFileString} WelcomePage_Text "Asennusohjelma opastaa sinua $(^NameDA).$\r$\n$\r$\nOn suositeltavaa sulkea kaikki SMTube-osat ennen asennuksen aloittamista. Tämä mahdollistaa ohjelmatiedostojen päivittämisen ilman, että tietokonetta tarvitsee käynnistää uudelleen.$\r$\n$\r$\n$_CLICK" ; Components Page -${LangFileString} Section_SMTube "SMTube (required)" +${LangFileString} Section_SMTube "SMTube (vaaditaan)" ; Directory Page -${LangFileString} DirectoryPage_Text "$(^DirText)$\r$\n$\r$\nSMTube must be installed to a directory containing a ${SMTUBE_INST_ARCH} ${SMTUBE_QT_VER} installation of SMPlayer." -${LangFileString} DirectoryIsNotWritable "The chosen installation directory is not writable and may require restarting the installer with administrator privileges.$\r$\n$\r$\nProceed with installation?" +${LangFileString} DirectoryPage_Text "$(^DirText)$\r$\n$\r$\nSMTube on asennettava hakemistoon, joka sisältää ${SMTUBE_INST_ARCH} ${SMTUBE_QT_VER} SMPlayer-asennuksen." +${LangFileString} DirectoryIsNotWritable "Valittuun asennushakemistoon ei voi kirjoittaa. Tämä voi merkitä asennuksen käynnistämistä uudelleen järjestelmänvalvojan oikeuksilla.$\r$\n$\r$\nJatka asennusta?" ; Misc -${LangFileString} Info_QtArch_Bypassed "SMPlayer, architecture and Qt version check bypassed by command-line." -${LangFileString} Info_Portable_Bypassed "Portable check overriden by command-line, forcing portable." -${LangFileString} Info_Portable_Detected "Found portable version of SMPlayer." +${LangFileString} Info_QtArch_Bypassed "SMPlayer-, arkkitehtuuri- ja Qt-version tarkistus ohitetaan komentorivillä." +${LangFileString} Info_Portable_Bypassed "Kannettava tarkistus ohitetaan komentorivillä, pakottaen kannettavaksi." +${LangFileString} Info_Portable_Detected "Löytyi kannettava versio SMPlayer-ohjelmasta." diff -Nru smtube-20.1.0/setup/translations/po_files/finnish.po smtube-20.6.0/setup/translations/po_files/finnish.po --- smtube-20.1.0/setup/translations/po_files/finnish.po 2017-01-31 21:51:41.000000000 +0000 +++ smtube-20.6.0/setup/translations/po_files/finnish.po 2020-05-26 15:12:33.000000000 +0000 @@ -1,14 +1,16 @@ # Info_Portable_Detected msgid "Found portable version of SMPlayer." -msgstr "" +msgstr "Löytyi kannettava versio SMPlayer-ohjelmasta." # Info_Portable_Bypassed msgid "Portable check overriden by command-line, forcing portable." msgstr "" +"Kannettava tarkistus ohitetaan komentorivillä, pakottaen kannettavaksi." # Info_QtArch_Bypassed msgid "SMPlayer, architecture and Qt version check bypassed by command-line." msgstr "" +"SMPlayer-, arkkitehtuuri- ja Qt-version tarkistus ohitetaan komentorivillä." # DirectoryIsNotWritable msgid "" @@ -16,16 +18,21 @@ "the installer with administrator privileges.[:r:][:n:][:r:][:n:]Proceed with " "installation?" msgstr "" +"Valittuun asennushakemistoon ei voi kirjoittaa. Tämä voi merkitä asennuksen " +"käynnistämistä uudelleen järjestelmänvalvojan oikeuksilla.[:r:][:n:][:r:][:" +"n:]Jatka asennusta?" # DirectoryPage_Text msgid "" "$(^DirText)[:r:][:n:][:r:][:n:]SMTube must be installed to a directory " "containing a ${SMTUBE_INST_ARCH} ${SMTUBE_QT_VER} installation of SMPlayer." msgstr "" +"$(^DirText)[:r:][:n:][:r:][:n:]SMTube on asennettava hakemistoon, joka " +"sisältää ${SMTUBE_INST_ARCH} ${SMTUBE_QT_VER} SMPlayer-asennuksen." # Section_SMTube msgid "SMTube (required)" -msgstr "" +msgstr "SMTube (vaaditaan)" # WelcomePage_Text msgid "" @@ -34,26 +41,40 @@ "setup. This will make it possible to update relevant program files without " "having to reboot your computer.[:r:][:n:][:r:][:n:]$_CLICK" msgstr "" +"Asennusohjelma opastaa sinua $(^NameDA).[:r:][:n:][:r:][:n:]On suositeltavaa " +"sulkea kaikki SMTube-osat ennen asennuksen aloittamista. Tämä mahdollistaa " +"ohjelmatiedostojen päivittämisen ilman, että tietokonetta tarvitsee " +"käynnistää uudelleen.[:r:][:n:][:r:][:n:]$_CLICK" # WelcomePage_Title msgid "$(^NameDA) Setup" -msgstr "" +msgstr "$(^NameDA) Asennus" # Win64_Required msgid "A 64-bit Windows operating system is required to install this software." msgstr "" +"Tämän ohjelmiston asentaminen edellyttää 64-bittistä käyttöjärjestelmää." # Installer_No_Admin msgid "You must be logged in as an administrator when installing this program." msgstr "" +"Sinun on oltava kirjautuneena järjestelmänvalvojana kun asennat tätä " +"ohjelmaa." # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Translators: +# Kimmo Kujansuu , 2020 msgid "" msgstr "" -"Project-Id-Version: SMPlayer\n" +"Project-Id-Version: smplayer\n" +"PO-Revision-Date: 2020-05-21 20:29+0000\n" +"Last-Translator: Kimmo Kujansuu \n" +"Language-Team: Finnish (http://www.transifex.com/rvm/smplayer/language/fi/)\n" +"Language: fi\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" diff -Nru smtube-20.1.0/setup/translations/po_files/serbian.po smtube-20.6.0/setup/translations/po_files/serbian.po --- smtube-20.1.0/setup/translations/po_files/serbian.po 2018-01-09 21:03:20.000000000 +0000 +++ smtube-20.6.0/setup/translations/po_files/serbian.po 2020-05-26 15:12:33.000000000 +0000 @@ -1,69 +1,79 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Slobodan Simić , 2017 -msgid "" -msgstr "" -"Project-Id-Version: smplayer\n" -"PO-Revision-Date: 2017-09-23 22:21+0000\n" -"Last-Translator: Slobodan Simić \n" -"Language-Team: Serbian (http://www.transifex.com/rvm/smplayer/language/sr/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: sr\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +# Info_Portable_Detected +msgid "Found portable version of SMPlayer." +msgstr "Нађена је преносива верзија СМПлејера." -# Installer_No_Admin -msgid "" -"You must be logged in as an administrator when installing this program." -msgstr "Морате бити пријављени као администратор када инсталирате овај програм." +# Info_Portable_Bypassed +msgid "Portable check overriden by command-line, forcing portable." +msgstr "Провера преносивости избегнута из командне линије. Форсирам преносиву." -# Win64_Required -msgid "" -"A 64-bit Windows operating system is required to install this software." -msgstr "64-битни Виндоуз оперативни систем је потребан за инсталацију овог програма." +# Info_QtArch_Bypassed +msgid "SMPlayer, architecture and Qt version check bypassed by command-line." +msgstr "" +"Провера архитектуре, КуТ верзије и СМПлејера је избегнута из командне линије." -# WelcomePage_Title -msgid "$(^NameDA) Setup" -msgstr "$(^NameDA) програм инсталације" +# DirectoryIsNotWritable +msgid "" +"The chosen installation directory is not writable and may require restarting " +"the installer with administrator privileges.[:r:][:n:][:r:][:n:]Proceed with " +"installation?" +msgstr "" +"Изабрани директоријум није уписив и може захтевати поновно покретање " +"инсталације са администраторским овлашћењима.[:r:][:n:][:r:][:n:]Наставити " +"са инсталацијом?" -# WelcomePage_Text +# DirectoryPage_Text msgid "" -"Setup will guide you through the installation of " -"$(^NameDA).[:r:][:n:][:r:][:n:]It is recommended that you close all " -"instances of SMTube before starting setup. This will make it possible to " -"update relevant program files without having to reboot your " -"computer.[:r:][:n:][:r:][:n:]$_CLICK" -msgstr "Програм инсталације ће вас водити кроз инсталацију $(^NameDA).[:r:][:n:][:r:][:n:]Препорука је да затворите претходно отворени СМТјуб пре почетка инсталације. То ће омогућити ажурирање битних фајлова без потребе за поновним покретањем вашег рачунара.[:r:][:n:][:r:][:n:]$_CLICK" +"$(^DirText)[:r:][:n:][:r:][:n:]SMTube must be installed to a directory " +"containing a ${SMTUBE_INST_ARCH} ${SMTUBE_QT_VER} installation of SMPlayer." +msgstr "" +"$(^DirText)[:r:][:n:][:r:][:n:]СМТјуб мора бити инсталиран у директоријум " +"који садржи ${SMTUBE_INST_ARCH} ${SMTUBE_QT_VER} инсталацију СМПлејера." # Section_SMTube msgid "SMTube (required)" msgstr "СМТјуб (потребно)" -# DirectoryPage_Text +# WelcomePage_Text msgid "" -"$(^DirText)[:r:][:n:][:r:][:n:]SMTube must be installed to a directory " -"containing a ${SMTUBE_INST_ARCH} ${SMTUBE_QT_VER} installation of SMPlayer." -msgstr "$(^DirText)[:r:][:n:][:r:][:n:]СМТјуб мора бити инсталиран у директоријум који садржи ${SMTUBE_INST_ARCH} ${SMTUBE_QT_VER} инсталацију СМПлејера." +"Setup will guide you through the installation of $(^NameDA).[:r:][:n:][:r:][:" +"n:]It is recommended that you close all instances of SMTube before starting " +"setup. This will make it possible to update relevant program files without " +"having to reboot your computer.[:r:][:n:][:r:][:n:]$_CLICK" +msgstr "" +"Програм инсталације ће вас водити кроз инсталацију $(^NameDA).[:r:][:n:][:r:]" +"[:n:]Препорука је да затворите претходно отворени СМТјуб пре почетка " +"инсталације. То ће омогућити ажурирање битних фајлова без потребе за " +"поновним покретањем вашег рачунара.[:r:][:n:][:r:][:n:]$_CLICK" -# DirectoryIsNotWritable -msgid "" -"The chosen installation directory is not writable and may require restarting" -" the installer with administrator privileges.[:r:][:n:][:r:][:n:]Proceed " -"with installation?" -msgstr "Изабрани директоријум није уписив и може захтевати поновно покретање инсталације са администраторским овлашћењима.[:r:][:n:][:r:][:n:]Наставити са инсталацијом?" +# WelcomePage_Title +msgid "$(^NameDA) Setup" +msgstr "$(^NameDA) програм инсталације" -# Info_QtArch_Bypassed -msgid "SMPlayer, architecture and Qt version check bypassed by command-line." -msgstr "Провера архитектуре, КуТ верзије и СМПлејера је избегнута из командне линије." +# Win64_Required +msgid "A 64-bit Windows operating system is required to install this software." +msgstr "" +"64-битни Виндоуз оперативни систем је потребан за инсталацију овог програма." -# Info_Portable_Bypassed -msgid "Portable check overriden by command-line, forcing portable." -msgstr "Провера портабилности избегнута из командне линије. Форсирам портабилну" +# Installer_No_Admin +msgid "You must be logged in as an administrator when installing this program." +msgstr "" +"Морате бити пријављени као администратор када инсталирате овај програм." -# Info_Portable_Detected -msgid "Found portable version of SMPlayer." -msgstr "Нађена је портабилна верзија СМПлејера." +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Slobodan Simić , 2017,2020 +msgid "" +msgstr "" +"Project-Id-Version: smplayer\n" +"PO-Revision-Date: 2020-01-23 19:41+0000\n" +"Last-Translator: Slobodan Simić \n" +"Language-Team: Serbian (http://www.transifex.com/rvm/smplayer/language/sr/)\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" diff -Nru smtube-20.1.0/setup/translations/serbian.nsh smtube-20.6.0/setup/translations/serbian.nsh --- smtube-20.1.0/setup/translations/serbian.nsh 2017-05-05 20:21:29.000000000 +0000 +++ smtube-20.6.0/setup/translations/serbian.nsh 2020-05-26 15:12:33.000000000 +0000 @@ -28,5 +28,5 @@ ; Misc ${LangFileString} Info_QtArch_Bypassed "Провера архитектуре, КуТ верзије и СМПлејера је избегнута из командне линије." -${LangFileString} Info_Portable_Bypassed "Провера портабилности избегнута из командне линије. Форсирам портабилну" -${LangFileString} Info_Portable_Detected "Нађена је портабилна верзија СМПлејера." +${LangFileString} Info_Portable_Bypassed "Провера преносивости избегнута из командне линије. Форсирам преносиву." +${LangFileString} Info_Portable_Detected "Нађена је преносива верзија СМПлејера." diff -Nru smtube-20.1.0/smtube.spec smtube-20.6.0/smtube.spec --- smtube-20.1.0/smtube.spec 2020-01-21 19:31:18.000000000 +0000 +++ smtube-20.6.0/smtube.spec 2020-06-18 14:49:40.000000000 +0000 @@ -1,5 +1,5 @@ Name: smtube -Version: 20.1.0 +Version: 20.6.0 Release: 1%{?dist} Summary: YouTube browser for SMPlayer diff -Nru smtube-20.1.0/src/browserwindow.cpp smtube-20.6.0/src/browserwindow.cpp --- smtube-20.1.0/src/browserwindow.cpp 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/browserwindow.cpp 2020-06-01 15:26:31.000000000 +0000 @@ -44,8 +44,7 @@ #include "links.h" #include "desktopinfo.h" -#ifdef YT_USE_YTSIG -#include "ytsig.h" +#ifdef CODEDOWNLOADER #include "codedownloader.h" #endif @@ -64,34 +63,22 @@ #ifdef D_BUTTON , add_download_button(false) #endif -#ifdef YT_USE_YTSIG - , codedownloader(0) -#endif { setWindowTitle("SMTube"); setWindowIcon(QPixmap(":/icons/smtube.png")); - home_page = "http://www.tonvid.com/"; settings = new QSettings(config_path + "/smtube2.ini", QSettings::IniFormat, this); ryu = new RetrieveYoutubeUrl(this); connect(ryu, SIGNAL(gotPreferredUrl(const QString &, int)), this, SLOT(openYTUrl(const QString &, int))); - connect(ryu, SIGNAL(signatureNotFound(const QString &)), this, SLOT(showErrorSignatureNotFound(const QString &))); - connect(ryu, SIGNAL(noSslSupport()), this, SLOT(showErrorNoSslSupport())); connect(ryu, SIGNAL(gotEmptyList()), this, SLOT(showErrorEmptyList())); + connect(ryu, SIGNAL(processFailedToStart()), this, SLOT(YTFailedToStart())); ryua = new RetrieveYoutubeUrl(this); ryua->setUseDASH(true); - connect(ryua, SIGNAL(gotUrls(const QMap&)), this, SLOT(openYTAudioUrl(const QMap&))); - connect(ryua, SIGNAL(signatureNotFound(const QString &)), this, SLOT(showErrorSignatureNotFound(const QString &))); - connect(ryua, SIGNAL(noSslSupport()), this, SLOT(showErrorNoSslSupport())); + connect(ryua, SIGNAL(gotPreferredUrl(const QString &, int)), this, SLOT(openYTAudioUrl(const QString &, int))); connect(ryua, SIGNAL(gotEmptyList()), this, SLOT(showErrorEmptyList())); - - #ifdef YT_USE_SIG - QSettings * sigset = new QSettings(config_path + "/sig.ini", QSettings::IniFormat, this); - ryu->setSettings(sigset); - ryua->setSettings(sigset); - #endif + connect(ryua, SIGNAL(processFailedToStart()), this, SLOT(YTFailedToStart())); QNetworkProxyFactory::setUseSystemConfiguration(true); @@ -175,18 +162,16 @@ QMenu * helpMenu = menuBar()->addMenu(tr("&Help")); -#ifdef YT_USE_YTSIG - QAction * updateCodeAct = new QAction(tr("&Update the YouTube code"), this); +#ifdef CODEDOWNLOADER + #if defined(Q_OS_WIN) && !defined(PORTABLE_APP) + QAction * updateCodeAct = new QAction(tr("&Update YouTube playback support"), this); + #else + QAction * updateCodeAct = new QAction(tr("&Install / Update YouTube playback support"), this); + #endif connect(updateCodeAct, SIGNAL(triggered()), this, SLOT(updateYTCode())); helpMenu->addAction(updateCodeAct); #endif -#ifdef SHOW_RELEASE_DIALOG - QAction * aboutReleaseAct = new QAction(tr("About this &release"), this); - connect(aboutReleaseAct, SIGNAL(triggered()), this, SLOT(showAboutRelease())); - helpMenu->addAction(aboutReleaseAct); -#endif - QAction * aboutAct = new QAction(tr("&About SMTube"), this); connect(aboutAct, SIGNAL(triggered()), this, SLOT(showAbout())); helpMenu->addAction(aboutAct); @@ -213,6 +198,14 @@ saveConfig(); } +QString BrowserWindow::homePageUrl() { +#ifdef USE_SITES + return sites.currentSite().homeUrl(); +#else + return "http://www.tonvid.com/"; +#endif +} + void BrowserWindow::viewToolbar(bool b) { qDebug() << "BrowserWindow::viewToolbar:" << b; toolbar->setVisible(b); @@ -246,7 +239,12 @@ search_term = search_term.replace("https://", ""); } - QString q = home_page + "search.php?q=" + search_term; +#ifdef USE_SITES + QString q = sites.currentSite().searchUrl(); + q.replace("SEARCHTERM", search_term); +#else + QString q = homePageUrl() + "search.php?q=" + search_term; +#endif loadUrl(QUrl(q)); } @@ -372,10 +370,6 @@ } #endif - #ifdef YT_USE_YTSIG - YTSig::setScriptFile(script_file); - #endif - ry->setPreferredResolution((RetrieveYoutubeUrl::Resolution) resolution); ry->fetchPage(url.toString()); } @@ -487,7 +481,7 @@ } void BrowserWindow::openYTUrl(const QString & url, int itag) { - openYTUrl(ryu->urlTitle(), ryu->extensionForItag(itag), url); + openYTUrl(ryu->videoTitle(), ryu->extensionForItag(itag), url); } void BrowserWindow::openAudioWith(const QString & player, const QUrl & url) { @@ -508,81 +502,40 @@ } } -void BrowserWindow::openYTAudioUrl(const QMap& url_map) { - Q_UNUSED(url_map); +void BrowserWindow::openYTAudioUrl(const QString &, int) { qDebug() << "BrowserWindow::openYTAudioUrl"; - int itag = ryua->selectedQuality(); + int itag = ryua->selectedAudioQuality(); QString url = ryua->selectedAudioUrl(); qDebug() << "BrowserWindow::openYTAudioUrl: url:" << url << "itag:" << itag; if (!url.isEmpty()) { - openYTUrl(ryua->urlTitle(), ryu->extensionForItag(itag), url); + openYTUrl(ryua->videoTitle(), ryu->extensionForItag(itag), url); } } -void BrowserWindow::showErrorNoSslSupport() { - qDebug() << "BrowserWindow::showErrorNoSslSupport"; - QMessageBox::warning(this, tr("Connection failed"), - tr("The video you requested needs to open a HTTPS connection.") +"
"+ - tr("Unfortunately the OpenSSL component, required for it, is not available in your system.")); -} - void BrowserWindow::showErrorEmptyList() { qDebug() << "showErrorEmptyList"; + +#ifdef CODEDOWNLOADER + CodeDownloader::askAndDownload(this, CodeDownloader::UrlNotFound); +#else QMessageBox::warning(this, tr("No video found"), tr("It wasn't possible to find the URL for this video.")); +#endif } -void BrowserWindow::showErrorSignatureNotFound(const QString & title) { - qDebug() << "YTDialog::showErrorSignatureNotFound:" << title; - - QString t = title; - t.replace(" - YouTube", ""); - - #ifdef YT_USE_YTSIG - int ret = QMessageBox::question(this, tr("Problems with YouTube"), - tr("Unfortunately due to changes in YouTube, the video '%1' can't be played.").arg(t) + "

" + - tr("Do you want to update the YouTube code? This may fix the problem."), - QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); - if (ret == QMessageBox::Yes) { - updateYTCode(); - } - #else - QMessageBox::warning(this, tr("Problems with YouTube"), - tr("Unfortunately due to changes in YouTube, the video '%1' can't be played.").arg(t) + "

" + - tr("Maybe updating this application could fix the problem.")); - #endif -} - -#ifdef YT_USE_YTSIG +#ifdef CODEDOWNLOADER void BrowserWindow::updateYTCode() { qDebug() << "BrowserWindow::updateYTCode"; - - if (!codedownloader) { - codedownloader = new CodeDownloader(this); - } - codedownloader->saveAs(script_file); - codedownloader->show(); - codedownloader->download(QUrl(URL_YT_CODE)); + CodeDownloader::askAndDownload(this); } #endif -#ifdef SHOW_RELEASE_DIALOG -void BrowserWindow::showAboutRelease() { - QMessageBox::about(this, tr("About this release"), - "

"+ tr("Due to changes in YouTube, the old SMTube doesn't work anymore.") + "

"+ - tr("This is a new version of SMTube, written from scratch.") +" "+ - tr("Some functionality is not available yet.") -#ifdef YT_USE_YTSIG - + "

"+ tr("Important:") + "
"+ - tr("If the VEVO videos fail to play, please use the option %1 in the Help menu.") - .arg("" + tr("Update the YouTube code") + "") -#endif - ); +void BrowserWindow::YTFailedToStart() { + CodeDownloader::askAndDownload(this, CodeDownloader::FailedToRun); } -#endif void BrowserWindow::showAbout() { About d(this); @@ -598,6 +551,12 @@ d.setDefaultPlayers(players.defaultPlayers()); #endif + #ifdef USE_SITES + d.setSites(sites.allSites()); + d.setCurrentSite(sites.current()); + bool needs_refresh = false; + #endif + #ifdef D_BUTTON d.setAddDownloadButton(add_download_button); d.setExternalDownloadUrl(external_download_url); @@ -616,6 +575,15 @@ view->setPlayers(players.availablePlayers()); #endif + #ifdef USE_SITES + int current_site = d.currentSite(); + if (current_site != sites.current()) { + sites.setCurrent(current_site); + needs_refresh = true; + } + sites.setAllSites(d.sites()); + #endif + #ifdef D_BUTTON add_download_button = d.addDownloadButton(); external_download_url = d.externalDownloadUrl(); @@ -628,6 +596,10 @@ setStyle(d.style()); #endif } + + #ifdef USE_SITES + if (needs_refresh) loadHomePage(); + #endif } void BrowserWindow::saveConfig() { @@ -650,8 +622,6 @@ settings->beginGroup("General"); settings->setValue("playback_resolution", preferred_resolution); settings->setValue("user_agent", ryu->userAgent()); - settings->setValue("use_https_main", ryu->useHttpsMain()); - //settings->setValue("use_https_vi", ryu->useHttpsVi()); #ifdef D_BUTTON settings->setValue("add_download_button", add_download_button); @@ -672,9 +642,19 @@ settings->setValue("zoom", view->page()->mainFrame()->zoomFactor()); settings->endGroup(); + settings->beginGroup("youtube-dl"); + settings->setValue("ytdl_bin", ytdl_bin); + settings->setValue("override_format", ryu->userFormat()); + settings->setValue("use_av1", ryu->isAv1Enabled()); + settings->endGroup(); + #ifdef USE_PLAYERS players.save(settings); #endif + +#ifdef USE_SITES + sites.save(settings); +#endif } void BrowserWindow::loadConfig() { @@ -707,8 +687,6 @@ settings->beginGroup("General"); preferred_resolution = settings->value("playback_resolution", RetrieveYoutubeUrl::R360p).toInt(); ryu->setUserAgent(settings->value("user_agent", "").toString()); - ryu->setUseHttpsMain(settings->value("use_https_main", false).toBool()); - //ryu->setUseHttpsVi(settings->value("use_https_vi", false).toBool()); #ifdef D_BUTTON add_download_button = settings->value("add_download_button", false).toBool(); @@ -717,10 +695,6 @@ external_download_url = settings->value("external_download_url", default_url).toString(); #endif -#ifdef SHOW_RELEASE_DIALOG - bool shown_notes = settings->value("shown_notes", false).toBool(); - settings->setValue("shown_notes", true); -#endif settings->endGroup(); settings->beginGroup("browser"); @@ -744,6 +718,14 @@ settings->endGroup(); + settings->beginGroup("youtube-dl"); + ytdl_bin = settings->value("ytdl_bin", "").toString(); + ryu->setYtdlBin(ytdl_bin); + ryua->setYtdlBin(ytdl_bin); + ryu->setUserFormat(settings->value("override_format", "").toString()); + ryu->enableAv1(settings->value("use_av1", false).toBool()); + settings->endGroup(); + #ifndef PORTABLE_APP if (use_cache) { #if QT_VERSION >= 0x050000 @@ -765,10 +747,8 @@ view->setPlayer(HCPLAYER_NAME); #endif -#ifdef SHOW_RELEASE_DIALOG - if (!shown_notes) { - QTimer::singleShot(3000, this, SLOT(showAboutRelease())); - } +#ifdef USE_SITES + sites.load(settings); #endif } diff -Nru smtube-20.1.0/src/browserwindow.h smtube-20.6.0/src/browserwindow.h --- smtube-20.1.0/src/browserwindow.h 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/browserwindow.h 2020-06-01 15:03:22.000000000 +0000 @@ -28,7 +28,9 @@ #include "hcplayer.h" #endif -//#define SHOW_RELEASE_DIALOG +#ifdef USE_SITES +#include "sites.h" +#endif class QToolBar; class MyWebView; @@ -46,13 +48,9 @@ BrowserWindow(const QString & config_dir, QWidget * parent = 0, Qt::WindowFlags flags = 0); ~BrowserWindow(); -#ifdef YT_USE_YTSIG - void setScriptFile(const QString & file) { script_file = file; }; -#endif - public slots: void loadUrl(const QUrl& url); - void loadHomePage() { loadUrl(QUrl(home_page)); }; + void loadHomePage() { loadUrl(QUrl(homePageUrl())); }; void search(const QString & term); protected slots: @@ -78,23 +76,21 @@ void openYTUrl(const QString & url, int itag); void openAudioWith(const QString & player, const QUrl & url); - void openYTAudioUrl(const QMap&); + void openYTAudioUrl(const QString & url, int itag); -#ifdef SHOW_RELEASE_DIALOG - void showAboutRelease(); -#endif void showAbout(); void showConfigDialog(); - void showErrorSignatureNotFound(const QString &); - void showErrorNoSslSupport(); void showErrorEmptyList(); -#ifdef YT_USE_YTSIG +#ifdef CODEDOWNLOADER void updateYTCode(); #endif + void YTFailedToStart(); protected: + QString homePageUrl(); + void saveConfig(); void loadConfig(); @@ -127,21 +123,20 @@ #endif int current_player; +#ifdef USE_SITES + Sites sites; +#endif + #ifdef D_BUTTON bool add_download_button; QString external_download_url; #endif -#ifdef YT_USE_YTSIG - QString script_file; - CodeDownloader * codedownloader; -#endif - #ifdef STYLE_SWITCHING QString default_style; #endif - QString home_page; + QString ytdl_bin; }; #endif diff -Nru smtube-20.1.0/src/codedownloader.cpp smtube-20.6.0/src/codedownloader.cpp --- smtube-20.1.0/src/codedownloader.cpp 2015-05-10 20:36:20.000000000 +0000 +++ smtube-20.6.0/src/codedownloader.cpp 2020-06-01 15:26:31.000000000 +0000 @@ -1,5 +1,5 @@ /* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2013 Ricardo Villalba + Copyright (C) 2006-2020 Ricardo Villalba This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,22 +19,40 @@ #include "codedownloader.h" #include #include +#include -CodeDownloader::CodeDownloader(QWidget *parent) : QProgressDialog(parent) +#include + +//#define APPNAME "SMPlayer" +#define APPNAME "SMTube" + +CodeDownloader * CodeDownloader::downloader = 0; + +CodeDownloader::CodeDownloader(QWidget * parent) + : QProgressDialog(parent) + , reply(0) + , parent_widget(parent) { - reply = 0; manager = new QNetworkAccessManager(this); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(gotResponse(QNetworkReply*))); setMinimumDuration(0); setRange(0,0); + reset(); // Prevent the dialog to be shown on initialization (Qt 5.5) + connect(this, SIGNAL(canceled()), this, SLOT(cancelDownload())); - connect(this, SIGNAL(fileSaved(const QString &, const QString &)), this, SLOT(reportFileSaved(const QString &,const QString &))); + connect(this, SIGNAL(fileSaved(const QString &)), this, SLOT(reportFileSaved(const QString &))); connect(this, SIGNAL(saveFailed(const QString &)), this, SLOT(reportSaveFailed(const QString &))); connect(this, SIGNAL(errorOcurred(int,QString)), this, SLOT(reportError(int,QString))); setWindowTitle(tr("Downloading...")); + + #ifdef Q_OS_WIN + user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0"; + #else + user_agent = "Mozilla/5.0 (X11; Linux i686; rv:62.0) Gecko/20100101 Firefox/62.0"; + #endif } CodeDownloader::~CodeDownloader() { @@ -44,18 +62,24 @@ void CodeDownloader::setProxy(QNetworkProxy proxy) { manager->setProxy(proxy); - qDebug("CodeDownloader::setProxy: host: '%s' port: %d type: %d", - proxy.hostName().toUtf8().constData(), proxy.port(), proxy.type()); + qDebug() << "CodeDownloader::setProxy: host:" << proxy.hostName() << "port:" << proxy.port() << "type:" << proxy.type(); } void CodeDownloader::download(QUrl url) { + qDebug() << "CodeDownloader::download:" << url; QNetworkRequest req(url); - req.setRawHeader("User-Agent", "SMPlayer"); + if (!user_agent.isEmpty()) req.setRawHeader("User-Agent", user_agent); reply = manager->get(req); connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(updateDataReadProgress(qint64, qint64))); setLabelText(tr("Connecting to %1").arg(url.host())); + + QRegExp rx("downloads\\/([\\d\\.]+)\\/youtube"); + if (rx.indexIn(url.toString()) > -1) { + version = rx.cap(1); + qDebug() << "CodeDownloader::download: version:" << version; + } } void CodeDownloader::cancelDownload() { @@ -71,7 +95,7 @@ case 302: case 307: QString r_url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl().toString(); - qDebug("CodeDownloader::gotResponse: redirected: %s", r_url.toLatin1().constData()); + qDebug() << "CodeDownloader::gotResponse: redirected:" << r_url; download(r_url); return; } @@ -93,7 +117,7 @@ QFile file(output_filename); if (!file.open(QIODevice::WriteOnly)) { - qWarning("CodeDownloader::save: could not open %s for writing", output_filename.toUtf8().constData()); + qWarning() << "CodeDownloader::save: could not open" << output_filename << "for writing"; emit saveFailed(output_filename); return; } @@ -101,41 +125,107 @@ file.write(bytes); file.close(); - QString version; - QRegExp rx("Version: ([\\d,-]+)"); - if (rx.indexIn(bytes)) { - version = rx.cap(1); - qDebug("CodeDownloader::save: version: %s", version.toLatin1().constData()); - } +#ifndef Q_OS_WIN + file.setPermissions(QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | QFile::ReadUser | QFile::WriteUser | QFile::ExeUser | QFile::ReadGroup | QFile::ExeGroup | QFile::ReadOther | QFile::ExeOther); +#endif - emit fileSaved(output_filename, version); + emit fileSaved(output_filename); } void CodeDownloader::updateDataReadProgress(qint64 bytes_read, qint64 total_bytes) { -#ifndef QT_NO_DEBUG_OUTPUT - qDebug() << "CodeDownloader::updateDataReadProgress: " << bytes_read << " " << total_bytes; -#endif + //qDebug() << "CodeDownloader::updateDataReadProgress: " << bytes_read << " " << total_bytes; if (total_bytes > -1) { setMaximum(total_bytes); setValue(bytes_read); } } -void CodeDownloader::reportFileSaved(const QString &, const QString & version) { +void CodeDownloader::reportFileSaved(const QString &) { hide(); - QString t = tr("The Youtube code has been updated successfully."); + QString t = tr("The YouTube code has been installed successfully."); if (!version.isEmpty()) t += "
"+ tr("Installed version: %1").arg(version); - QMessageBox::information(this, tr("Success"),t); + QMessageBox::information(parent_widget, tr("Success"),t); } void CodeDownloader::reportSaveFailed(const QString & file) { hide(); - QMessageBox::warning(this, tr("Error"), tr("An error happened writing %1").arg(file)); + QMessageBox::warning(parent_widget, tr("Error"), tr("It's not possible to save %1.").arg(file)); } void CodeDownloader::reportError(int, QString error_str) { hide(); - QMessageBox::warning(this, tr("Error"), tr("An error happened while downloading the file:
%1").arg(error_str)); + QMessageBox::warning(parent_widget, tr("Error"), tr("An error happened while downloading the file:
%1").arg(error_str)); +} + +void CodeDownloader::askAndDownload(QWidget * parent, ErrorMessage e) { + QString message; + + switch (e) { + case FailedToRun: + message += "" + tr("%1 failed to communicate with youtube-dl. " + "Either it's not installed or it doesn't work correctly.").arg(APPNAME) +"

"; + break; + case UrlNotFound: + message += "" + tr("It wasn't possible to find the URL for this video.") + " "+ + tr("Maybe you need to update youtube-dl.") +"

"; + case NoError: ; + } + +#if defined(Q_OS_WIN) && !defined(PORTABLE_APP) + message += tr("In order to play YouTube videos, %1 needs an external application called youtube-dl.").arg(APPNAME) + "

"+ + tr("This component needs to be updated frequently.") +" "+ + tr("You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version."); + + QMessageBox::information(parent, tr("Install / Update YouTube support"),message); +#else + #ifdef Q_OS_WIN + QString url = "https://youtube-dl.org/downloads/latest/youtube-dl.exe"; + QString output_dir = "mpv/"; + QString output = output_dir + "youtube-dl.exe"; + #else + QString url = "https://youtube-dl.org/downloads/latest/youtube-dl"; + + QString user_home = QDir::homePath(); + + //user_home = "/tmp"; + + QString output_dir = user_home + "/bin"; + QString output_file = "youtube-dl"; + + QDir d; + if (!d.exists(output_dir)) { + if (!d.mkdir(output_dir)) { + qDebug() << "CodeDownloader::askAndDownload: fail to create" << output_dir; + } + } + + QString output = output_dir + "/" + output_file; + #endif // Q_OS_WIN + + qDebug() << "CodeDownloader::askAndDownload: url:" << url; + qDebug() << "CodeDownloader::askAndDownload: output" << output; + + message += tr("In order to play YouTube videos, %1 needs an external application called youtube-dl.").arg(APPNAME) + "

"+ + tr("%1 can download and install this application for you.").arg(APPNAME) +" "+ + tr("It will be downloaded from the official website and installed in %1.").arg("" + output_dir +"") + "

"+ + tr("Would you like to proceeed?"); + + int ret = 0; + if (e != NoError) { + ret = QMessageBox::warning(parent, tr("Install YouTube support?"), + message, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + } else { + ret = QMessageBox::question(parent, tr("Install YouTube support?"), + message, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + } + + if (ret == QMessageBox::Yes) { + if (!downloader) downloader = new CodeDownloader(parent); + downloader->saveAs(output); + downloader->show(); + downloader->download(url); + } +#endif } #include "moc_codedownloader.cpp" diff -Nru smtube-20.1.0/src/codedownloader.h smtube-20.6.0/src/codedownloader.h --- smtube-20.1.0/src/codedownloader.h 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/codedownloader.h 2020-06-01 15:26:31.000000000 +0000 @@ -30,12 +30,17 @@ Q_OBJECT public: + enum ErrorMessage { NoError = 0, FailedToRun = 1, UrlNotFound = 2 }; + CodeDownloader(QWidget *parent = 0); ~CodeDownloader(); void saveAs(const QString & output) { output_filename = output; }; void setProxy(QNetworkProxy proxy); + void setUserAgent(const QByteArray & s) { user_agent = s; } + QByteArray userAgent() { return user_agent; } + public slots: void download(QUrl url); void cancelDownload(); @@ -43,15 +48,18 @@ signals: void downloadFinished(); void errorOcurred(int error_number, QString error_str); - void fileSaved(const QString &, const QString &); + void fileSaved(const QString &); void saveFailed(const QString &); +public: + static void askAndDownload(QWidget * parent, ErrorMessage e = NoError); + private slots: void gotResponse(QNetworkReply* reply); void updateDataReadProgress(qint64 bytes_read, qint64 total_bytes); void save(QByteArray bytes); - void reportFileSaved(const QString &, const QString &); + void reportFileSaved(const QString &); void reportSaveFailed(const QString &); void reportError(int error_number, QString error_str); @@ -60,6 +68,11 @@ QNetworkReply* reply; QString output_filename; + QByteArray user_agent; + + static CodeDownloader * downloader; + QWidget * parent_widget; + QString version; }; #endif diff -Nru smtube-20.1.0/src/configdialog.cpp smtube-20.6.0/src/configdialog.cpp --- smtube-20.1.0/src/configdialog.cpp 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/configdialog.cpp 2020-05-29 15:27:20.000000000 +0000 @@ -26,6 +26,10 @@ #include "retrieveyoutubeurl.h" #include "playerdialog.h" +#ifdef USE_SITES +#include "sitedialog.h" +#endif + #if QT_VERSION >= 0x050000 #include "myscroller.h" #endif @@ -51,7 +55,8 @@ MyScroller::setScroller(table); #endif #else - tabs->setTabEnabled(1, false); + //tabs->setTabEnabled(1, false); + tabs->removeTab(1); #endif playback_resolution_combo->addItem( "240p", RetrieveYoutubeUrl::R240p ); @@ -77,6 +82,10 @@ style_label->hide(); style_combo->hide(); #endif + +#ifndef USE_SITES + sites_group->hide(); +#endif } ConfigDialog::~ConfigDialog() { @@ -116,6 +125,69 @@ } #endif +#ifdef USE_SITES +void ConfigDialog::setSites(QList list) { + site_list = list; + refreshSitesCombo(); +} + +void ConfigDialog::refreshSitesCombo() { + int i = sites_combo->currentIndex(); + sites_combo->clear(); + for (int n = 0; n < site_list.count(); n++) { + sites_combo->addItem(site_list[n].name()); + } + + if (i > (sites_combo->count()-1)) i = sites_combo->count()-1; + sites_combo->setCurrentIndex(i); + + delete_site_button->setEnabled(sites_combo->count() > 1); +} + +void ConfigDialog::setCurrentSite(int c) { + int index = 0; + if (c < sites_combo->count()) index = c; + sites_combo->setCurrentIndex(index); +} + +int ConfigDialog::currentSite() { + return sites_combo->currentIndex(); +} + +void ConfigDialog::on_edit_site_button_clicked() { + qDebug("ConfigDialog::on_edit_site_button_clicked"); + + int i = sites_combo->currentIndex(); + SiteDialog d(this); + d.setSite(site_list[i]); + + if (d.exec() == QDialog::Accepted) { + site_list[i] = d.site(); + refreshSitesCombo(); + } +} + +void ConfigDialog::on_add_site_button_clicked() { + qDebug("ConfigDialog::on_add_site_button_clicked"); + + SiteDialog d(this); + if (d.exec() == QDialog::Accepted) { + site_list << d.site(); + refreshSitesCombo(); + } +} + +void ConfigDialog::on_delete_site_button_clicked() { + qDebug("ConfigDialog::on_delete_site_button_clicked"); + + if (site_list.count() > 1) { + int i = sites_combo->currentIndex(); + site_list.removeAt(i); + refreshSitesCombo(); + } +} +#endif + #ifdef USE_PLAYERS void ConfigDialog::setPlayers(QList list) { qDebug() << "ConfigDialog::setPlayers:" << list.count(); diff -Nru smtube-20.1.0/src/configdialog.h smtube-20.6.0/src/configdialog.h --- smtube-20.1.0/src/configdialog.h 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/configdialog.h 2020-05-29 15:27:20.000000000 +0000 @@ -28,6 +28,10 @@ #include "players.h" #endif +#ifdef USE_SITES +#include "sites.h" +#endif + class ConfigDialog : public QDialog, public Ui::ConfigDialog { Q_OBJECT @@ -55,6 +59,14 @@ QString style(); #endif +#ifdef USE_SITES + void setSites(QList list); + QList sites() { return site_list; } + + void setCurrentSite(int c); + int currentSite(); +#endif + #ifdef USE_PLAYERS void setPlayers(QList list); QList players(); @@ -75,6 +87,17 @@ QList default_players; #endif +#ifdef USE_SITES +protected slots: + void on_edit_site_button_clicked(); + void on_add_site_button_clicked(); + void on_delete_site_button_clicked(); + +protected: + void refreshSitesCombo(); + QList site_list; +#endif + protected slots: void on_change_font_button_clicked(); }; diff -Nru smtube-20.1.0/src/configdialog.ui smtube-20.6.0/src/configdialog.ui --- smtube-20.1.0/src/configdialog.ui 2018-10-11 22:40:21.000000000 +0000 +++ smtube-20.6.0/src/configdialog.ui 2020-05-29 15:48:43.000000000 +0000 @@ -7,7 +7,7 @@ 0 0 627 - 373 + 375 @@ -26,7 +26,7 @@ &General - + @@ -89,6 +89,64 @@ + + + Sites + + + + + + &Site: + + + sites_combo + + + + + + + + 0 + 0 + + + + + + + + Edi&t... + + + + + + + A&dd... + + + + :/icons/list-add.png:/icons/list-add.png + + + + + + + De&lete + + + + :/icons/list-remove.png:/icons/list-remove.png + + + + + + + Qt::Vertical @@ -335,6 +393,10 @@ playback_resolution_combo add_download_check external_download_combo + sites_combo + edit_site_button + add_site_button + delete_site_button buttonBox table up_button diff -Nru smtube-20.1.0/src/loadpage.cpp smtube-20.6.0/src/loadpage.cpp --- smtube-20.1.0/src/loadpage.cpp 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/loadpage.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -/* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2020 Ricardo Villalba - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include "loadpage.h" -#include -#include -#include -#include - -#ifdef Q_OS_AMIGA - #define NO_SSL_CERTIFICATE -#endif - -#ifdef NO_SSL_CERTIFICATE -#include -#endif - -QString LoadPage::default_user_agent; - -LoadPage::LoadPage(QNetworkAccessManager * man, QObject* parent) - : QObject(parent) -{ - manager = man; -} - -LoadPage::~LoadPage() { -} - -void LoadPage::fetchPage(const QString & url) { - qDebug() << "LoadPage::fetchPage:" << url; - qDebug() << "LoadPage::fetchPage: user agent:" << userAgent(); - - QNetworkRequest req(url); - -#ifdef NO_SSL_CERTIFICATE - // zzd10h - // remove certificates verification to avoid "SSL Handshake failed" - // http://forum.smplayer.info/viewtopic.php?f=2&t=8466 - - QNetworkRequest request; - QSslConfiguration conf = request.sslConfiguration(); - conf.setPeerVerifyMode(QSslSocket::VerifyNone); - #if QT_VERSION >= 0x050000 - conf.setProtocol(QSsl::TlsV1_0); - #else - conf.setProtocol(QSsl::TlsV1); - #endif - req.setSslConfiguration(conf); -#endif - - req.setRawHeader("User-Agent", userAgent().toLatin1()); - req.setRawHeader("Accept-Language", "en-us,en;q=0.5"); - reply = manager->get(req); - connect(reply, SIGNAL(finished()), this, SLOT(gotResponse())); -} - -void LoadPage::gotResponse() { - qDebug() << "LoadPage::gotResponse"; - - QNetworkReply *reply = qobject_cast(sender()); - - if (reply->error() == QNetworkReply::NoError) { - int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - qDebug() << "LoadPage::gotResponse: status:" << status; - QString r_url; - switch (status) { - case 301: - case 302: - case 307: - r_url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl().toString(); - qDebug() << "LoadPage::gotResponse: redirected:" << r_url; - fetchPage(r_url); - break; - default: - qDebug() << "LoadPage::gotResponse: emit pageLoaded"; - emit pageLoaded(reply->readAll()); - } - } else { - qDebug() << "LoadPage::gotResponse: error:" << reply->error() << ":" << reply->errorString(); - emit errorOcurred((int)reply->error(), reply->errorString()); - } - reply->deleteLater(); -} - -#include "moc_loadpage.cpp" - diff -Nru smtube-20.1.0/src/loadpage.h smtube-20.6.0/src/loadpage.h --- smtube-20.1.0/src/loadpage.h 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/loadpage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -/* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2020 Ricardo Villalba - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef LOADPAGE_H -#define LOADPAGE_H - -#include -#include - -class QNetworkAccessManager; -class QNetworkReply; - -class LoadPage : public QObject -{ - Q_OBJECT - -public: - LoadPage(QNetworkAccessManager * man, QObject* parent = 0); - ~LoadPage(); - - void fetchPage(const QString & url); - - static void setDefaultUserAgent(const QString & ua) { default_user_agent = ua; }; - static QString defaultUserAgent() { return default_user_agent; }; - - void setUserAgent(const QString & ua) { user_agent = ua; }; - QString userAgent() { - if (user_agent.isNull()) return default_user_agent; else return user_agent; - } - -signals: - void errorOcurred(int error_number, QString error_str); - void pageLoaded(QByteArray page); - -protected slots: - void gotResponse(); - -private: - QNetworkAccessManager * manager; - QNetworkReply * reply; - QString user_agent; - - static QString default_user_agent; -}; - -#endif diff -Nru smtube-20.1.0/src/main.cpp smtube-20.6.0/src/main.cpp --- smtube-20.1.0/src/main.cpp 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/main.cpp 2020-05-22 13:29:06.000000000 +0000 @@ -46,7 +46,7 @@ #endif // PORTABLE_APP } -#if defined(YT_USE_YTSIG) || defined(HDPI_SUPPORT) +#ifdef HDPI_SUPPORT QString smplayerConfigPath() { #ifdef PORTABLE_APP return qApp->applicationDirPath(); @@ -64,7 +64,7 @@ #endif #endif // PORTABLE_APP } -#endif // YT_USE_YTSIG +#endif // HDPI_SUPPORT QString translationsPath() { @@ -162,14 +162,6 @@ BrowserWindow * w = new BrowserWindow(configPath()); -#ifdef YT_USE_YTSIG - QString ytcode_name = "yt.js"; - QString ytcode_file = configPath() +"/"+ ytcode_name; - if (QFile::exists(smplayerConfigPath())) ytcode_file = smplayerConfigPath() +"/"+ ytcode_name; - qDebug() << "ytcode_file:" << ytcode_file; - w->setScriptFile(ytcode_file); -#endif - if (!search_term.isEmpty()) { w->search(search_term); } diff -Nru smtube-20.1.0/src/players.cpp smtube-20.6.0/src/players.cpp --- smtube-20.1.0/src/players.cpp 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/players.cpp 2020-05-29 16:01:10.000000000 +0000 @@ -101,29 +101,22 @@ Players::Players() { #ifdef Q_OS_WIN - list.push_back( Player("SMPlayer", "smplayer.exe", "%u", true, true, Player::Video) ); - list.push_back( Player("SMPlayer (audio)", "smplayer.exe", "%u -media-title %t", true, false, Player::Audio) ); - list.push_back( Player("SMPlayer (add to playlist)", "smplayer.exe", "-add-to-playlist %u", true, true, Player::VideoAudio) ); - /* - list.push_back( Player("VLC", "C:\\Program Files\\VideoLAN\\VLC\\vlc.exe", "%u --meta-title=%t", false) ); - */ - #ifdef D_PLAYERS - //list.push_back( Player("yoDownet", "yoDownet.exe", "%u -o %f", false, false, Player::VideoAudio) ); - #endif + list << Player("SMPlayer", "smplayer.exe", "%u", true, true, Player::Video) + << Player("SMPlayer (audio)", "smplayer.exe", "%u -media-title %t", true, false, Player::Audio) + << Player("SMPlayer (add to playlist)", "smplayer.exe", "-add-to-playlist %u", true, true, Player::VideoAudio); #else - list.push_back( Player("SMPlayer", "smplayer", "%u", true, true, Player::Video) ); - list.push_back( Player("SMPlayer (audio)", "smplayer", "%u -media-title %t", true, false, Player::Audio) ); - list.push_back( Player("SMPlayer (add to playlist)", "smplayer", "-add-to-playlist %u", true, true, Player::VideoAudio) ); - list.push_back( Player("MPlayer", "mplayer", "%u -title %t", false, false, Player::Video) ); - list.push_back( Player("VLC", "vlc", "%u --meta-title=%t", false, true, Player::VideoAudio) ); - list.push_back( Player("Dragon Player", "dragon", "%u", false, false, Player::VideoAudio) ); - list.push_back( Player("Totem", "totem", "%u", false, false, Player::VideoAudio) ); - list.push_back( Player("GNOME-MPlayer", "gnome-mplayer", "%u", false, false, Player::VideoAudio) ); - list.push_back( Player("mpv", "mpv", "%u --title=%t", false, true, Player::Video) ); - list.push_back( Player("mpv + youtube-dl", "mpv", "--ytdl --ytdl-format=best %u", true, true, Player::Video) ); + list << Player("SMPlayer", "smplayer", "%u", true, true, Player::Video) + << Player("SMPlayer (audio)", "smplayer", "%u -media-title %t", true, false, Player::Audio) + << Player("SMPlayer (add to playlist)", "smplayer", "-add-to-playlist %u", true, true, Player::VideoAudio) + << Player("MPlayer", "mplayer", "%u -title %t", false, false, Player::Video) + << Player("VLC", "vlc", "%u --meta-title=%t", false, true, Player::VideoAudio) + << Player("Dragon Player", "dragon", "%u", false, false, Player::VideoAudio) + << Player("Totem", "totem", "%u", false, false, Player::VideoAudio) + << Player("GNOME-MPlayer", "gnome-mplayer", "%u", false, false, Player::VideoAudio) + << Player("mpv", "mpv", "%u --title=%t", false, true, Player::Video) + << Player("mpv + youtube-dl", "mpv", "--ytdl --ytdl-format=best %u", true, true, Player::Video); #ifdef D_PLAYERS - list.push_back( Player("uget", "uget-gtk", "--quiet --folder=/tmp --filename=%f %u", false, false, Player::VideoAudio) ); - //list.push_back( Player("yoDownet", "yoDownet", "%u -o %f", false, false, Player::VideoAudio) ); + list << Player("uget", "uget-gtk", "--quiet --folder=/tmp --filename=%f %u", false, false, Player::VideoAudio); #endif #endif default_list = list; diff -Nru smtube-20.1.0/src/retrieveyoutubeurl.cpp smtube-20.6.0/src/retrieveyoutubeurl.cpp --- smtube-20.1.0/src/retrieveyoutubeurl.cpp 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/retrieveyoutubeurl.cpp 2020-06-02 07:58:27.000000000 +0000 @@ -17,98 +17,83 @@ */ #include "retrieveyoutubeurl.h" -#include "loadpage.h" + +#if QT_VERSION >= 0x050000 +#define YT_USE_JSON +#define DEBUG_OUTPUT_JSON +#endif #include #include -#include #include -#include - -#ifdef YT_USE_YTSIG -#include "ytsig.h" -#endif +#include +#include +#include #if QT_VERSION >= 0x050000 #include #endif -#define DEBUG_OUTPUT_PAGE -#ifdef DEBUG_OUTPUT_PAGE +#ifdef YT_USE_JSON +#include +#include +#ifdef DEBUG_OUTPUT_JSON #include - #if QT_VERSION >= 0x050000 - #include - #else - #include - #endif #endif - -#define SUPPORT_OLD_FORMAT - +#endif RetrieveYoutubeUrl::RetrieveYoutubeUrl(QObject* parent) : QObject(parent) -#ifdef YT_USE_SIG - , set(0) -#endif , preferred_resolution(R720p) +#ifdef YT_OBSOLETE , use_https_main(false) -#ifdef YT_DASH_SUPPORT +#endif , use_dash(false) , use_60fps(false) -#endif + , use_av1(false) { + process = new QProcess(this); + connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished(int, QProcess::ExitStatus))); + connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError(QProcess::ProcessError))); + clearData(); - manager = new QNetworkAccessManager(this); +} - dl_video_page = new LoadPage(manager, this); - connect(dl_video_page, SIGNAL(pageLoaded(QByteArray)), this, SLOT(videoPageLoaded(QByteArray))); - connect(dl_video_page, SIGNAL(errorOcurred(int, QString)), this, SIGNAL(errorOcurred(int, QString))); - /* connect(dl_video_page, SIGNAL(response303(QString)), this, SLOT(receivedResponse303(QString))); */ - -#ifdef YT_GET_VIDEOINFO - dl_video_info_page = new LoadPage(manager, this); - connect(dl_video_info_page, SIGNAL(pageLoaded(QByteArray)), this, SLOT(videoInfoPageLoaded(QByteArray))); - connect(dl_video_info_page, SIGNAL(errorOcurred(int, QString)), this, SIGNAL(errorOcurred(int, QString))); -#endif +RetrieveYoutubeUrl::~RetrieveYoutubeUrl() { +} -#ifdef YT_USE_SIG - dl_player_page = new LoadPage(manager, this); - connect(dl_player_page, SIGNAL(pageLoaded(QByteArray)), this, SLOT(playerPageLoaded(QByteArray))); - connect(dl_player_page, SIGNAL(errorOcurred(int, QString)), this, SIGNAL(errorOcurred(int, QString))); -#endif +QString RetrieveYoutubeUrl::ytdlBin() { + if (!ytdl_bin.isEmpty()) { + return ytdl_bin; + } -#ifdef YT_LIVE_STREAM - dl_stream_page = new LoadPage(manager, this); - connect(dl_stream_page, SIGNAL(pageLoaded(QByteArray)), this, SLOT(streamPageLoaded(QByteArray))); - connect(dl_stream_page, SIGNAL(errorOcurred(int, QString)), this, SIGNAL(errorOcurred(int, QString))); +#ifdef Q_OS_WIN + return "mpv/youtube-dl.exe"; +#else + QString bin = QDir::homePath() + "/bin/youtube-dl"; + QFileInfo fi(bin); + if (!fi.exists() || !fi.isExecutable()) { + bin = "youtube-dl"; + } + return bin; #endif } -RetrieveYoutubeUrl::~RetrieveYoutubeUrl() { +void RetrieveYoutubeUrl::close() { + qDebug("RetrieveYoutubeUrl::close"); + process->close(); } void RetrieveYoutubeUrl::clearData() { - selected_url = ""; - selected_quality = None; + selected_video_url = ""; + selected_video_quality = None; -#ifdef YT_DASH_SUPPORT selected_audio_url = ""; selected_audio_quality = None; -#endif yt_url = ""; - url_title = ""; - - urlmap.clear(); -} - -#ifdef YT_USE_SIG -void RetrieveYoutubeUrl::setSettings(QSettings * settings) { - set = settings; - sig.load(set); + video_title = ""; } -#endif bool RetrieveYoutubeUrl::isUrlSupported(const QString & url) { return (!getVideoID(url).isEmpty()); @@ -118,7 +103,11 @@ QString r; QString ID = getVideoID(url); if (!ID.isEmpty()) { + #ifdef YT_OBSOLETE QString scheme = use_https_main ? "https" : "http"; + #else + QString scheme = "https"; + #endif r = scheme + "://www.youtube.com/watch?v=" + ID; } return r; @@ -185,682 +174,149 @@ } void RetrieveYoutubeUrl::fetchPage(const QString & url) { - clearData(); - - yt_url = url; - fetchVideoPage(url); - //fetchVideoInfoPage(url); -} - -void RetrieveYoutubeUrl::fetchVideoPage(const QString & url) { - qDebug() << "RetrieveYoutubeUrl::fetchVideoPage: url:" << url; - - if (url.toLower().startsWith("https") && !QSslSocket::supportsSsl()) { - qDebug() << "RetrieveYoutubeUrl::fetchVideoPage: no support for ssl"; - emit noSslSupport(); - return; - } - - dl_video_page->fetchPage(url); - - emit connecting(QUrl(url).host()); -}; - -/* -void RetrieveYoutubeUrl::receivedResponse303(QString url) { - qDebug() << "RetrieveYoutubeUrl::receivedResponse303:" << url; - fetchPage(url); -} -*/ - -#ifdef YT_GET_VIDEOINFO -void RetrieveYoutubeUrl::fetchVideoInfoPage(const QString & url) { - QString video_id = getVideoID(url); - - QString u = QString("https://www.youtube.com/get_video_info?video_id=%1&disable_polymer=true&eurl=https://youtube.googleapis.com/v/%1&gl=US&hl=en").arg(video_id); - qDebug() << "RetrieveYoutubeUrl::fetchVideoInfoPage: url:" << u; - - if (u.toLower().startsWith("https") && !QSslSocket::supportsSsl()) { - qDebug() << "RetrieveYoutubeUrl::fetchVideoInfoPage: no support for ssl"; - emit noSslSupport(); - return; - } - - #ifdef YT_USE_SIG - if (!sig.sts.isEmpty()) { - u += "&sts=" + sig.sts; - } - #endif - - dl_video_info_page->fetchPage(u); - - emit connecting(QUrl(u).host()); -} -#endif - -#ifdef YT_USE_SIG -void RetrieveYoutubeUrl::fetchPlayerPage(const QString & player_name) { - qDebug() << "RetrieveYoutubeUrl::fetchPlayerPage:" << player_name; - - if (!player_name.isEmpty()) { - QString url = Sig::playerURL(player_name); - qDebug() << "RetrieveYoutubeUrl::fetchPlayerPage: url:" << url; - #ifdef SIG_FROM_SMPLAYER_SITE - if (dl_player_page->userAgent().isEmpty()) dl_player_page->setUserAgent("SMPlayer"); - #endif - dl_player_page->fetchPage(url); - } -} -#endif - -#ifdef YT_LIVE_STREAM -void RetrieveYoutubeUrl::fetchStreamPage(const QString & url) { - qDebug() << "RetrieveYoutubeUrl::fetchStreamPage:" << url; - dl_stream_page->fetchPage(url); + runYtdl(url); } -#endif -void RetrieveYoutubeUrl::videoPageLoaded(QByteArray page) { - qDebug() << "RetrieveYoutubeUrl::videoPageLoaded"; +void RetrieveYoutubeUrl::runYtdl(const QString & url) { + clearData(); - QString replyString = QString::fromUtf8(page); + emit connecting("youtube.com"); - QRegExp rx_title(".*(.*).*"); - if (rx_title.indexIn(replyString) != -1) { - url_title = rx_title.cap(1).simplified(); - url_title = QString(url_title).replace("&","&").replace(">", ">").replace("<", "<").replace(""","\"").replace("'","'"); - qDebug() << "RetrieveYoutubeUrl::videoPageLoaded: title:" << url_title; - } else { - url_title = "YouTube video"; - } - - #ifdef YT_USE_SIG - QString html5_player; - #endif + yt_url = url; - QRegExp rxplayer("jsbin\\/player(.*)\\/base\\.js"); - rxplayer.setMinimal(true); - if (rxplayer.indexIn(replyString) != -1) { - QString player = rxplayer.cap(1); - qDebug() << "RetrieveYoutubeUrl::videoPageLoaded: html5player:" << player; - #ifdef YT_USE_SIG - html5_player = "player" + player; - #endif - } else { - qDebug() << "RetrieveYoutubeUrl::videoPageLoaded: player not found!"; - //qDebug() << "RetrieveYoutubeUrl::videoPageLoaded: page:" << page; - #ifdef DEBUG_OUTPUT_PAGE - #if QT_VERSION >= 0x050000 - QString tmp_path = QStandardPaths::standardLocations(QStandardPaths::TempLocation)[0]; - #else - QString tmp_path = QDesktopServices::storageLocation(QDesktopServices::TempLocation); - #endif - QString output = tmp_path + "/smplayer_yt_page.html"; - QFile f(output); - if (f.open(QIODevice::ReadWrite)) { - f.write(page); - f.close(); - qDebug() << "RetrieveYoutubeUrl::videoPageLoaded: page saved to" << output; - } - #endif - } + QStringList args; + QString format; - video_page = replyString; + QString resolution = resolutionToText(preferred_resolution); + if (!resolution.isEmpty()) resolution = "[height<=?" + resolution + "]"; - #ifdef YT_USE_SIG - if (!html5_player.isEmpty() && html5_player != sig.html5_player) { - sig.clear(); - sig.html5_player = html5_player; - fetchPlayerPage(html5_player); + if (!user_format.isEmpty()) { + format = user_format; } else { - processVideoPage(); - } - #else - processVideoPage(); - #endif -} - -void RetrieveYoutubeUrl::processVideoPage() { - QString replyString = video_page; - -#ifdef YT_LIVE_STREAM - QRegExp rxhlsvp("\"hlsvp\":\"([a-zA-Z0-9\\\\\\/_%\\+:\\.-]+)\""); - if (rxhlsvp.indexIn(replyString) != -1) { - QString hlsvp = QUrl::fromPercentEncoding(rxhlsvp.cap(1).toLatin1()).replace("\\/", "/"); - qDebug() << "RetrieveYoutubeUrl::processVideoPage: hlsvp:" << hlsvp; - - if (!hlsvp.isEmpty()) { - fetchStreamPage(hlsvp); - return; + if (use_dash) { + format = "bestvideo" + resolution +"[protocol!=http_dash_segments]"; + if (!use_60fps) format += "[fps!=60]"; + if (!use_av1) format += "[vcodec!*=av01]"; + format += ",bestaudio[protocol!=http_dash_segments]"; + format += "/best" + resolution; + } else { + format = "best" + resolution; + //format += ",bestaudio[protocol!=http_dash_segments]"; } } - QRegExp manifest_rx("\\\\\"hlsManifestUrl\\\\\":\\\\\"(.*)\\\\\""); - manifest_rx.setMinimal(true); - if (manifest_rx.indexIn(replyString) != -1) { - QString manifest_url = QUrl::fromPercentEncoding(manifest_rx.cap(1).toLatin1()).replace("\\/", "/"); - qDebug() << "RetrieveYoutubeUrl::processVideoPage:" << manifest_url; - - if (!manifest_url.isEmpty()) { - fetchStreamPage(manifest_url); - return; - } - } -#endif - - QString fmtArray; -#ifdef SUPPORT_OLD_FORMAT - QRegExp regex("\\\"url_encoded_fmt_stream_map\\\"\\s*:\\s*\\\"([^\\\"]*)"); - if (regex.indexIn(replyString) != -1) { - fmtArray = regex.cap(1); - } - - #ifdef YT_DASH_SUPPORT - QRegExp regex2("\\\"adaptive_fmts\\\"\\s*:\\s*\\\"([^\\\"]*)"); - if (regex2.indexIn(replyString) != -1) { - if (!fmtArray.isEmpty()) fmtArray += ","; - fmtArray += regex2.cap(1); - } - #endif -#endif - - if (fmtArray.isEmpty()) fmtArray = getArrayFromStreamingData(replyString); - - fmtArray = sanitizeForUnicodePoint(fmtArray); - fmtArray.replace(QRegExp("\\\\(.)"), "\\1"); - - //qDebug() << "RetrieveYoutubeUrl::videoPageLoaded: fmtArray:" << fmtArray; - - #ifdef YT_DISCARD_HTTPS - bool allow_https = false; + #ifdef YT_USE_JSON + args << "-j"; #else - bool allow_https = true; + args << "--get-title" << "--get-format" << "-g"; #endif - - UrlMap url_map = extractURLs(fmtArray, allow_https, true); - #ifdef YT_GET_VIDEOINFO - if (url_map.isEmpty()) { - fetchVideoInfoPage(yt_url); - } else { - finish(url_map); - } + args << "-f" << format << "--no-playlist"; + if (!user_agent.isEmpty()) args << "--user-agent" << user_agent; + args << url; + + QString app_bin = ytdlBin(); + QFileInfo fi(app_bin); + #ifdef Q_OS_WIN + app_bin = fi.absoluteFilePath(); #else - finish(url_map); - #endif -} - -QString RetrieveYoutubeUrl::getArrayFromStreamingData(const QString & page) { - qDebug("RetrieveYoutubeUrl::getArrayFromStreamingData"); - - QString fmtArray; - - QStringList exps; - exps << "streamingData.*formats\\\\\":\\[(.*)\\]"; - #ifdef YT_DASH_SUPPORT - exps << "streamingData.*adaptiveFormats\\\\\":\\[(.*)\\]"; - #endif - - foreach(QString expression, exps) { - QString text; - QRegExp rx_block(expression); - rx_block.setMinimal(true); - if (rx_block.indexIn(page) != -1) { - text = rx_block.cap(1); - //qDebug() << "text:" << text; - - QRegExp regex("(cipher|url)\\\\\":\\\\\"(.*)\\\\\""); - regex.setMinimal(true); - - int pos = 0; - while ((pos = regex.indexIn(text, pos)) != -1) { - if (!fmtArray.isEmpty()) fmtArray += ","; - if (regex.cap(1) == "url") { - QString url = regex.cap(2); - url = QUrl::fromPercentEncoding(url.toUtf8()); - url = sanitizeForUnicodePoint(url); - url.replace(QRegExp("\\\\(.)"), "\\1"); - url = QUrl::toPercentEncoding(url); - fmtArray += "url="; - fmtArray += url; - } else { - fmtArray += regex.cap(2); - } - pos += regex.matchedLength(); - } - } + if (fi.exists() && fi.isExecutable() && !fi.isDir()) { + app_bin = fi.absoluteFilePath(); } - - //qDebug() << "RetrieveYoutubeUrl::getArrayFromStreamingData: fmtArray:" << fmtArray; - return fmtArray; -} - -#ifdef YT_GET_VIDEOINFO -void RetrieveYoutubeUrl::videoInfoPageLoaded(QByteArray page) { - qDebug() << "RetrieveYoutubeUrl::videoInfoPageLoaded"; - - QByteArray fmtArray; - -#ifdef SUPPORT_OLD_FORMAT - #if QT_VERSION >= 0x050000 - QUrlQuery all; - all.setQuery(page); - #else - QUrl all; - all.setEncodedQuery(page); - #endif - - #if QT_VERSION >= 0x050000 - fmtArray = all.queryItemValue("url_encoded_fmt_stream_map", QUrl::FullyDecoded).toLatin1(); - #else - fmtArray = all.queryItemValue("url_encoded_fmt_stream_map").toLatin1(); #endif -#ifdef YT_DASH_SUPPORT - if (!fmtArray.isEmpty()) fmtArray += ","; - #if QT_VERSION >= 0x050000 - fmtArray += all.queryItemValue("adaptive_fmts", QUrl::FullyDecoded).toLatin1(); - #else - fmtArray += all.queryItemValue("adaptive_fmts").toLatin1(); - #endif -#endif -#endif - - if (fmtArray.isEmpty()) { - QString s = QUrl::fromPercentEncoding(page); - s = sanitizeForUnicodePoint(s); - s.replace("\"", "\\\""); - fmtArray = getArrayFromStreamingData(s).toLatin1(); - } + QString command = app_bin + " " + args.join(" "); + qDebug() << "RetrieveYoutubeUrl::runYtdl: command:" << command; - //qDebug() <<"RetrieveYoutubeUrl::videoInfoPageLoaded: fmtArray:" << fmtArray; + //process->setWorkingDirectory(full_output_dir); + process->start(app_bin, args); - UrlMap url_map = extractURLs(fmtArray, true, false); - - if ((url_map.count() == 0) && (failed_to_decrypt_signature)) { - qDebug() << "RetrieveYoutubeUrl::videoInfoPageLoaded: no url found with valid signature"; - emit signatureNotFound(url_title); - return; + if (!process->waitForStarted()) { + qDebug("RetrieveYoutubeUrl::runYtdl: error: the process didn't start"); + emit processFailedToStart(); } - - finish(url_map); -} -#endif - -#ifdef YT_USE_SIG -void RetrieveYoutubeUrl::playerPageLoaded(QByteArray page) { - qDebug() << "RetrieveYoutubeUrl::playerPageLoaded"; - - QString replyString = QString::fromUtf8(page); - QString signature_code = sig.findFunctions(replyString); - qDebug() << "RetrieveYoutubeUrl::playerPageLoaded: signature_code:" << signature_code; - - if (!signature_code.isEmpty() && set) sig.save(set); - - processVideoPage(); } -#endif - -#ifdef YT_LIVE_STREAM -void RetrieveYoutubeUrl::streamPageLoaded(QByteArray page) { - qDebug() << "RetrieveYoutubeUrl::streamPageLoaded"; - - //qDebug() << "RetrieveYoutubeUrl::streamPageLoaded: page:" << page; - - QRegExp rx("#EXT-X-STREAM-INF:.*RESOLUTION=\\d+x(\\d+)"); - - UrlMap url_map; - int best_resolution = 0; - int res_height = 0; - - QTextStream stream(page); - QString line; - do { - line = stream.readLine(); - if (!line.isEmpty()) { - //qDebug() << "RetrieveYoutubeUrl::streamPageLoaded: line:" << line; - if (rx.indexIn(line) != -1) { - res_height = rx.cap(1).toInt(); - qDebug() << "RetrieveYoutubeUrl::streamPageLoaded: height:" << res_height; - if (res_height > best_resolution) best_resolution = res_height; - } - else - if (!line.startsWith("#") && res_height != 0) { - url_map[res_height] = line; - res_height = 0; - } - } - } while (!line.isNull()); - - qDebug() << "RetrieveYoutubeUrl::streamPageLoaded: best_resolution:" << best_resolution; - - // Try to find a URL with the user's preferred resolution - qDebug() << "RetrieveYoutubeUrl::streamPageLoaded: preferred_resolution:" << preferred_resolution; - - int chosen_quality = 0; - int r = preferred_resolution; - - if (r == R1080p) { - if (url_map.contains(1080)) { - chosen_quality = 1080; - } else r = R720p; - } - if (r == R720p) { - if (url_map.contains(720)) { - chosen_quality = 720; - } else r = R480p; - } - - if (r == R480p) { - if (url_map.contains(480)) { - chosen_quality = 480; - } else r = R360p; - } +void RetrieveYoutubeUrl::processFinished(int exitCode, QProcess::ExitStatus exitStatus) { + qDebug() << "RetrieveYoutubeUrl::processFinished: exitCode:" << exitCode << "exitStatus:" << exitStatus; - if (r == R360p) { - if (url_map.contains(360)) { - chosen_quality = 360; - } else r = R240p; - } - - if (r == R240p) { - if (url_map.contains(240)) { - chosen_quality = 240; - } - } - - qDebug() << "RetrieveYoutubeUrl::streamPageLoaded: chosen_quality:" << chosen_quality; - - if (chosen_quality == 0) chosen_quality = best_resolution; - - setUrlMap(url_map); - - if (url_map.contains(chosen_quality)) { - selected_url = url_map.value(chosen_quality); - qDebug() << "RetrieveYoutubeUrl::streamPageLoaded: selected_url:" << selected_url; - emit gotPreferredUrl(selected_url, 0); - } else { - emit gotEmptyList(); - } -} + QByteArray data = process->readAll().replace("\r", "").trimmed(); +#ifndef YT_USE_JSON + qDebug() << "RetrieveYoutubeUrl::fetchPage: process output:" << data; #endif + QList lines = data.split('\n'); + qDebug() << "RetrieveYoutubeUrl::fetchPage: lines:" << lines.count(); -void RetrieveYoutubeUrl::finish(const UrlMap & url_map) { - qDebug() << "RetrieveYoutubeUrl::finish"; - - setUrlMap(url_map); +#ifdef YT_USE_JSON + QJsonDocument doc; + QJsonObject json; - #ifdef YT_DASH_SUPPORT - selected_quality = findPreferredResolution(url_map, preferred_resolution, use_dash, use_60fps); - #else - selected_quality = findPreferredResolution(url_map, preferred_resolution); - #endif - - selected_url = ""; - if (selected_quality != None) selected_url = url_map[selected_quality]; - qDebug() << "RetrieveYoutubeUrl::finish: selected_url:" << selected_url; - - #ifdef YT_DASH_SUPPORT - selected_audio_quality = findBestAudio(url_map); - selected_audio_url = ""; - if (use_dash) { - if (selected_audio_quality != None) selected_audio_url = url_map[selected_audio_quality]; - qDebug() << "RetrieveYoutubeUrl::finish: audio itag:" << selected_audio_quality; - qDebug() << "RetrieveYoutubeUrl::finish: audio url:" << selected_audio_url; + if (lines.count() >= 1) { + doc = QJsonDocument::fromJson(lines[0]); + QJsonObject json = doc.object(); + video_title = json["title"].toString(); + selected_video_url = json["url"].toString(); + selected_video_quality = (Quality) json["format_id"].toString().toInt(); } - #endif - - if (selected_quality != None) { - emit gotUrls(url_map); - //emit gotPreferredUrl(p_url); - emit gotPreferredUrl(selected_url, selected_quality); - } else { - emit gotEmptyList(); - } -} - -#ifdef YT_USE_SIG -QString RetrieveYoutubeUrl::aclara(const QString & text, const QString & player) { - Q_UNUSED(player); - QString res; - - #ifdef YT_USE_SIG - if (!sig.decrypt_function.isEmpty()) { - res = sig.aclara(text); + if (lines.count() >= 2) { + doc = QJsonDocument::fromJson(lines[1]); + QJsonObject json = doc.object(); + selected_audio_url = json["url"].toString(); + selected_audio_quality = (Quality) json["format_id"].toString().toInt(); } - #endif - return res; -} -#endif - -OptMap RetrieveYoutubeUrl::extractOptions(const QByteArray & urldata) { - OptMap data; - QList l = urldata.split('&'); - foreach(QByteArray o, l) { - QList p = o.split('='); - if (p.count() > 1) { - QString tag = QUrl::fromPercentEncoding(p[0]); - QString value = QUrl::fromPercentEncoding(p[1]); - data[tag] = value; + #ifdef DEBUG_OUTPUT_JSON + QString output = QDir::tempPath() + "/smplayer_yt.json"; + QFile f(output); + if (f.open(QIODevice::WriteOnly)) { + QByteArray o = "{"; + if (lines.count() >= 1) { + o += "\"video\": "+ lines[0]; } - } - return data; -} - -UrlMap RetrieveYoutubeUrl::extractURLs(QString fmtArray, bool allow_https, bool use_player) { - UrlMap url_map; - - failed_to_decrypt_signature = false; - - #if QT_VERSION >= 0x050000 - QUrlQuery * q = new QUrlQuery(); - #endif - - //qDebug() << "RetrieveYoutubeUrl::extractURLs: fmtArray:" << fmtArray; - - QList codeList = fmtArray.toLatin1().split(','); - //qDebug() << "RetrieveYoutubeUrl::extractURLs: codeList.count:" << codeList.count(); - - foreach(QByteArray code, codeList) { - //qDebug() << "RetrieveYoutubeUrl::extractURLs: code:" << code; - OptMap opt_map = extractOptions(code); - //qDebug() << "RetrieveYoutubeUrl::extractURLs: opt_map:" << opt_map; - - if (opt_map.contains("url")) { - QUrl url(opt_map["url"]); - //qDebug() << "RetrieveYoutubeUrl::extractURLs: url:" << url; - - #if QT_VERSION >= 0x050000 - q->setQuery(url.query(QUrl::FullyDecoded)); - #else - QUrl * q = &url; - #endif - - QString signature_name = "signature"; - if (opt_map.contains("sp")) { - signature_name = opt_map["sp"]; - //qDebug() << "RetrieveYoutubeUrl::extractURLs: signature field:" << signature_name; - } - - if (opt_map.contains("sig")) { - q->addQueryItem(signature_name, opt_map["sig"]); - } - else - if (opt_map.contains("s")) { - #ifdef YT_USE_SIG - QString player = sig.html5_player; - QString enc_sig = opt_map["s"]; - QString signature = aclara(enc_sig, use_player ? player : QString::null); - if (!signature.isEmpty()) { - q->addQueryItem(signature_name, signature); - } else { - failed_to_decrypt_signature = true; - } - #else - failed_to_decrypt_signature = true; - #endif - q->removeQueryItem("s"); - } - q->removeAllQueryItems("fallback_host"); - q->removeAllQueryItems("type"); - q->removeAllQueryItems("xtags"); - - if (!q->hasQueryItem("ratebypass")) q->addQueryItem("ratebypass", "yes"); - - if (opt_map.contains("clen")) { - if (opt_map["clen"] == "0") { - qDebug() << "RetrieveYoutubeUrl::extractURLs: discarted url with empty clen"; - continue; - } - } else { - if (!q->hasQueryItem("clen")) { - qDebug() << "RetrieveYoutubeUrl::extractURLs: discarted url with no clen"; - continue; - } - } - - if ((q->hasQueryItem("itag")) /*&& (q->hasQueryItem(signature_name))*/) { - QString itag = q->queryItemValue("itag"); - - // Remove duplicated queries - QPair item; - QList > items = q->queryItems(); - foreach(item, items) { - q->removeAllQueryItems(item.first); - q->addQueryItem(item.first, item.second); - } - - QUrl line = url; - #if QT_VERSION >= 0x050000 - line.setQuery(q->query(QUrl::FullyDecoded)); - #endif - - if (!line.toString().startsWith("https") || allow_https) { - url_map[itag.toInt()] = line.toString(); - } else { - qDebug() << "RetrieveYoutubeUrl::extractURLs: discarted url with itag:" << itag.toInt(); - } - - //qDebug() << "RetrieveYoutubeUrl::extractURLs: itag:" << itag << "line:" << line.toString(); - } + if (lines.count() >= 2) { + o += ", \"audio\": " + lines[1]; } + o += "}"; + f.write(o); + f.close(); + qDebug() << "RetrieveYoutubeUrl::processFinished: json data saved to" << output; } - - #if QT_VERSION >= 0x050000 - delete q; #endif +#else + #define LINE_TITLE 0 + #define LINE_VIDEO_URL 1 + #define LINE_VIDEO_ITAG 2 + #define LINE_AUDIO_URL 4 + #define LINE_AUDIO_ITAG 5 - qDebug() << "RetrieveYoutubeUrl::extractURLs: url count:" << url_map.count(); - - return url_map; -} - -RetrieveYoutubeUrl::Quality RetrieveYoutubeUrl::findResolution(const UrlMap & url_map, QList l) { - foreach(Quality q, l) { - QString url = url_map.value(q, QString()); \ - if (!url.isNull()) return q; - } - return None; -} - -RetrieveYoutubeUrl::Quality RetrieveYoutubeUrl::findPreferredResolution(const UrlMap & url_map, Resolution res, bool use_dash, bool use_60fps) { - Quality chosen_quality = None; - - QList l2160p, l1440p, l1080p, l720p, l480p, l360p, l240p; - - if (!use_dash) { - l1080p << MP4_1080p << WEBM_1080p; - l720p << MP4_720p << WEBM_720p; - l480p << MP4_480p << MP4_480p2 << WEBM_480p << FLV_480p; - l360p << MP4_360p << WEBM_360p << FLV_360p; - l240p << FLV_240p << FLV_270p; + if (lines.count() >= 3) { + video_title = QString::fromUtf8(lines[LINE_TITLE]); + if (lines[LINE_VIDEO_URL].startsWith("http")) selected_video_url = lines[LINE_VIDEO_URL]; + selected_video_quality = (Quality) getItagFromFormat(lines[LINE_VIDEO_ITAG]); } -#ifdef YT_DASH_SUPPORT - else { - #if 0 - l240p << DASH_VIDEO_WEBM_240p60hdr; - l360p << DASH_VIDEO_WEBM_360p60hdr; - l480p << DASH_VIDEO_WEBM_480p60hdr; - l720p << DASH_VIDEO_WEBM_720p60hdr; - l1080p << DASH_VIDEO_WEBM_1080p60hdr; - l1440p << DASH_VIDEO_WEBM_1440p60hdr; - l2160p << DASH_VIDEO_WEBM_2160p60hdr; - #endif - - if (use_60fps) { - l720p << DASH_VIDEO_720p60 << DASH_VIDEO_WEBM_720p60; - l1080p << DASH_VIDEO_1080p60 << DASH_VIDEO_WEBM_1080p60; - l1440p << DASH_VIDEO_WEBM_1440p60; - l2160p << DASH_VIDEO_WEBM_2160p60; - } - - l2160p << DASH_VIDEO_2160p << DASH_VIDEO_2160p2 << DASH_VIDEO_WEBM_2160p << DASH_VIDEO_WEBM_2160p2; - l1440p << DASH_VIDEO_1440p << DASH_VIDEO_WEBM_1440p; - l1080p << DASH_VIDEO_1080p << DASH_VIDEO_WEBM_1080p << DASH_VIDEO_WEBM_1080p2; - l720p << DASH_VIDEO_720p << DASH_VIDEO_WEBM_720p << DASH_VIDEO_WEBM_720p2; - l480p << DASH_VIDEO_480p << DASH_VIDEO_480p2 << DASH_VIDEO_WEBM_480p << DASH_VIDEO_WEBM_480p2 - << DASH_VIDEO_WEBM_480p3 << DASH_VIDEO_WEBM_480p4 << DASH_VIDEO_WEBM_480p5 << DASH_VIDEO_WEBM_480p6; - l360p << DASH_VIDEO_360p << DASH_VIDEO_WEBM_360p << DASH_VIDEO_WEBM_360p2; - l240p << DASH_VIDEO_240p << DASH_VIDEO_WEBM_240p; + if (lines.count() >= 6) { + if (lines[LINE_AUDIO_URL].startsWith("http")) selected_audio_url = lines[LINE_AUDIO_URL]; + selected_audio_quality = (Quality) getItagFromFormat(lines[LINE_AUDIO_ITAG]); } #endif - if (res == R2160p) { - chosen_quality = findResolution(url_map, l2160p); - if (chosen_quality == None) res = R1440p; - } - - if (res == R1440p) { - chosen_quality = findResolution(url_map, l1440p); - if (chosen_quality == None) res = R1080p; - } - - if (res == R1080p) { - chosen_quality = findResolution(url_map, l1080p); - if (chosen_quality == None) res = R720p; - } - - if (res == R720p) { - chosen_quality = findResolution(url_map, l720p); - if (chosen_quality == None) res = R480p; - } - - if (res == R480p) { - chosen_quality = findResolution(url_map, l480p); - if (chosen_quality == None) res = R360p; - } - - if (res == R360p) { - chosen_quality = findResolution(url_map, l360p); - if (chosen_quality == None) res = R240p; - } + qDebug() << "RetrieveYoutubeUrl::fetchPage: title:" << video_title; + qDebug() << "RetrieveYoutubeUrl::fetchPage: video url:" << selected_video_url; + qDebug() << "RetrieveYoutubeUrl::fetchPage: video itag:" << selected_video_quality; - if (res == R240p) { - chosen_quality = findResolution(url_map, l240p); - } + qDebug() << "RetrieveYoutubeUrl::fetchPage: audio url:" << selected_audio_url; + qDebug() << "RetrieveYoutubeUrl::fetchPage: audio itag:" << selected_audio_quality; - // If everything fails, take the first url in the map - if (chosen_quality == None) { - QList keys = url_map.keys(); - if (!keys.isEmpty()) { - QString url = url_map.value(keys[0], QString()); - if (!url.isNull()) chosen_quality = (Quality) keys[0]; - } + if (selected_video_url.isEmpty()) { + emit gotEmptyList(); + } else { + emit gotPreferredUrl(selected_video_url, selected_video_quality); } - - qDebug() << "RetrieveYoutubeUrl::findResolution: chosen_quality:" << chosen_quality; - return chosen_quality; } -QString RetrieveYoutubeUrl::sanitizeForUnicodePoint(QString string) { - QRegExp rx("\\\\u(\\d{4})"); - while (rx.indexIn(string) != -1) { - string.replace(rx.cap(0), QString(QChar(rx.cap(1).toInt(0,16)))); - } - return string; +void RetrieveYoutubeUrl::processError(QProcess::ProcessError error) { + qDebug() << "RetrieveYoutubeUrl::processError:" << error; } QString RetrieveYoutubeUrl::extensionForItag(int itag) { @@ -891,23 +347,27 @@ return ext; } -#ifdef YT_DASH_SUPPORT -RetrieveYoutubeUrl::Quality RetrieveYoutubeUrl::findBestAudio(const QMap& url_map) { - QString url; - - #define CHECKAQ(QUALITY) { \ - url = url_map.value(QUALITY, QString()); \ - if (!url.isNull()) return QUALITY; \ - } - - CHECKAQ(DASH_AUDIO_MP4_256); - CHECKAQ(DASH_AUDIO_WEBM_192); - CHECKAQ(DASH_AUDIO_MP4_128); - CHECKAQ(DASH_AUDIO_WEBM_128); - CHECKAQ(DASH_AUDIO_MP4_48); - - return None; +QString RetrieveYoutubeUrl::resolutionToText(Resolution r) { + QString s; + switch (r) { + case R240p: s = "240"; break; + case R360p: s = "360"; break; + case R480p: s = "480"; break; + case R720p: s = "720"; break; + case R1080p: s = "1080"; break; + case R1440p: s = "1440"; break; + case R2160p: s = "2160"; break; + } + return s; +} + +int RetrieveYoutubeUrl::getItagFromFormat(const QByteArray & t) { + int itag = -1; + QList l = t.split(' '); + if (l.count() > 0) { + itag = l[0].toInt(); + } + return itag; } -#endif #include "moc_retrieveyoutubeurl.cpp" diff -Nru smtube-20.1.0/src/retrieveyoutubeurl.h smtube-20.6.0/src/retrieveyoutubeurl.h --- smtube-20.1.0/src/retrieveyoutubeurl.h 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/retrieveyoutubeurl.h 2020-06-01 15:03:22.000000000 +0000 @@ -19,27 +19,16 @@ #ifndef RETRIEVEYOUTUBEURL_H #define RETRIEVEYOUTUBEURL_H -#include -#include -#include "loadpage.h" +#include -#ifdef YT_USE_SIG -#include "sig.h" -#endif - -class QSettings; +#define YT_USE_YTDL +//#define YT_OBSOLETE -#define YT_GET_VIDEOINFO +#ifdef YT_OBSOLETE #define YT_DASH_SUPPORT -#define YT_LIVE_STREAM - -#ifdef YT_GET_VIDEOINFO -//#define YT_DISCARD_HTTPS +class QSettings; #endif -typedef QMap UrlMap; -typedef QMap OptMap; - class RetrieveYoutubeUrl : public QObject { Q_OBJECT @@ -102,147 +91,105 @@ RetrieveYoutubeUrl( QObject* parent = 0 ); ~RetrieveYoutubeUrl(); - void clearData(); + void fetchPage(const QString & url); + void close(); void setPreferredResolution(Resolution r) { preferred_resolution = r; } Resolution preferredResolution() { return preferred_resolution; } - void setUserAgent(const QString & s) { LoadPage::setDefaultUserAgent(s); }; - QString userAgent() { return LoadPage::defaultUserAgent(); }; + void setUseDASH(bool b) { use_dash = b; } + bool useDASH() { return use_dash; } - void fetchPage(const QString & url); + void enable60fps(bool b) { use_60fps = b; } + bool is60fpsEnabled() { return use_60fps; } - #ifdef YT_USE_SIG - void setSettings(QSettings * settings); - #endif + void enableAv1(bool b) { use_av1 = b; } + bool isAv1Enabled() { return use_av1; } - QString urlTitle() { return url_title; } - QString origUrl() { return yt_url; } + void setYtdlBin(const QString & path) { ytdl_bin = path; }; + QString ytdlBin(); - QString selectedUrl() { return selected_url; } - Quality selectedQuality() { return selected_quality; } + void setUserAgent(const QString & s) { user_agent = s; } + QString userAgent() { return user_agent; }; - #ifdef YT_DASH_SUPPORT - void setUseDASH(bool b) { use_dash = b; } - bool useDASH() { return use_dash; } + void setUserFormat(const QString & s) { user_format = s; } + QString userFormat() { return user_format; } - void enable60fps(bool b) { use_60fps = b; } - bool is60fpsEnabled() { return use_60fps; } + QString origUrl() { return yt_url; } + + QString videoTitle() { return video_title; } + + QString selectedVideoUrl() { return selected_video_url; } + Quality selectedVideoQuality() { return selected_video_quality; } QString selectedAudioUrl() { return selected_audio_url; } Quality selectedAudioQuality() { return selected_audio_quality; } - #endif - UrlMap urlMap() { return urlmap; } - - bool isUrlSupported(const QString & url); + static bool isUrlSupported(const QString & url); QString fullUrl(const QString & url); - void setUseHttpsMain(bool b) { use_https_main = b; }; - bool useHttpsMain() { return use_https_main; }; - static QString extensionForItag(int itag); - void close() { /* FIXME: do something */ }; +#ifdef YT_OBSOLETE + #ifdef YT_USE_SIG + void setSettings(QSettings * /*settings*/) {}; + #endif + + QString urlTitle() { return video_title; } + QString selectedUrl() { return selected_video_url; } + Quality selectedQuality() { return selected_video_quality; } + + void setUseHttpsMain(bool b) { use_https_main = b; }; + bool useHttpsMain() { return use_https_main; }; +#endif signals: - void gotUrls(const QMap&); - //void gotPreferredUrl(const QString &); void gotPreferredUrl(const QString & url, int itag); void gotEmptyList(); void connecting(QString host); + void processFailedToStart(); +#ifdef YT_OBSOLETE void errorOcurred(int error_number, QString error_str); void signatureNotFound(const QString & title); void noSslSupport(); +#endif protected slots: - void videoPageLoaded(QByteArray page); - #ifdef YT_GET_VIDEOINFO - void videoInfoPageLoaded(QByteArray page); - #endif - #ifdef YT_USE_SIG - void playerPageLoaded(QByteArray page); - #endif - #ifdef YT_LIVE_STREAM - void streamPageLoaded(QByteArray page); - #endif - /* void receivedResponse303(QString); */ - - void processVideoPage(); + void processFinished(int exitCode, QProcess::ExitStatus exitStatus); + void processError(QProcess::ProcessError error); protected: - void fetchVideoPage(const QString & url); - #ifdef YT_GET_VIDEOINFO - void fetchVideoInfoPage(const QString & url); - #endif - #ifdef YT_USE_SIG - void fetchPlayerPage(const QString & player_name); - #endif - #ifdef YT_LIVE_STREAM - void fetchStreamPage(const QString & url); - #endif - - void setUrlMap(const UrlMap & map) { urlmap = map; } - - QString getVideoID(QString video_url); - OptMap extractOptions(const QByteArray & urldata); - QString getArrayFromStreamingData(const QString & page); - UrlMap extractURLs(QString fmtArray, bool allow_https, bool use_player); - - void finish(const UrlMap & url_map); - - #ifdef YT_USE_SIG - QString aclara(const QString & text, const QString & player = ""); - #endif - - static Quality findResolution(const UrlMap & url_map, QList l); - static Quality findPreferredResolution(const UrlMap & url_map, Resolution res, bool use_dash = false, bool use_60fps = false); - #ifdef YT_DASH_SUPPORT - static Quality findBestAudio(const QMap& url_map); - #endif - - static QString sanitizeForUnicodePoint(QString string); + void clearData(); + void runYtdl(const QString & url); + static QString getVideoID(QString video_url); + static QString resolutionToText(Resolution r); + static int getItagFromFormat(const QByteArray & t); private: - QNetworkAccessManager* manager; - LoadPage * dl_video_page; - - #ifdef YT_GET_VIDEOINFO - LoadPage * dl_video_info_page; - #endif - - #ifdef YT_USE_SIG - LoadPage * dl_player_page; - Sig sig; - QSettings * set; - #endif - - #ifdef YT_LIVE_STREAM - LoadPage * dl_stream_page; - #endif - Resolution preferred_resolution; +#ifdef YT_OBSOLETE bool use_https_main; +#endif QString yt_url; - QString url_title; + QString video_title; - QString selected_url; - Quality selected_quality; + QString selected_video_url; + Quality selected_video_quality; - #ifdef YT_DASH_SUPPORT QString selected_audio_url; Quality selected_audio_quality; + bool use_dash; bool use_60fps; - #endif + bool use_av1; - UrlMap urlmap; + QString user_agent; + QString user_format; - QString video_page; - bool failed_to_decrypt_signature; + QProcess * process; + QString ytdl_bin; }; #endif - diff -Nru smtube-20.1.0/src/sig.cpp smtube-20.6.0/src/sig.cpp --- smtube-20.1.0/src/sig.cpp 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/sig.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,325 +0,0 @@ -/* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2020 Ricardo Villalba - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include "sig.h" -#include -#include -#include -#include - -#ifdef SIG_USE_JSCODE -#include -#endif - -//#define ULTRAVERBOSE - -QString Sig::playerURL(const QString & player_name) { -#ifdef SIG_FROM_SMPLAYER_SITE - QString p = player_name.toUtf8().toBase64(); - return QString("http://updates.smplayer.info/ytsig/?e=%1&c=1").arg(p); -#else - return QString("http://www.youtube.com/yts/jsbin/%1/base.js").arg(player_name); -#endif -} - -#ifdef SIG_FROM_SMPLAYER_SITE -QString Sig::findFunctions(const QString & text) { - qDebug() << "Sig::findFunctions:" << text; - - sts = ""; - function_name = ""; - decrypt_function = ""; - - QRegExp rx; - rx.setMinimal(true); - - rx.setPattern("sts:(\\d+)\n"); - if (rx.indexIn(text) != -1) { - sts = rx.cap(1); - } - qDebug() << "Sig::findFunctions: sts:" << sts; - - rx.setPattern("function_name:(.*)\n"); - if (rx.indexIn(text) != -1) { - function_name = rx.cap(1); - } - qDebug() << "Sig::findFunctions: function_name:" << function_name; - - rx.setPattern("function:(.*)\n"); - if (rx.indexIn(text) != -1) { - decrypt_function = rx.cap(1); - } - qDebug() << "Sig::findFunctions: decrypt_function:" << decrypt_function; - - rx.setPattern("code:(.*)\n"); - if (rx.indexIn(text) != -1) { - decrypt_code = rx.cap(1).trimmed(); - } - qDebug() << "Sig::findFunctions: decrypt_code:" << decrypt_code; - - return decrypt_function; -} - -#else - -QString Sig::findText(const QString & text, const QString & begin, const QString & end) { - QString res; - - int pos = text.indexOf(begin); - if (pos > -1) { - int pos2 = text.indexOf(end, pos); - if (pos2 > -1) { - pos = pos + begin.length(); - res = text.mid(pos, pos2 - pos); - } - } - - return res; -} - -QString Sig::findFunctions(const QString & text) { - QString res; - - //QString sts; - QRegExp rx_sts("sts:(\\d+)"); - if (rx_sts.indexIn(text) != -1) { - sts = rx_sts.cap(1); - } - qDebug() << "Sig::findFunctions: sts:" << sts; - - QString sig_name; - QRegExp rx_sig("akamaized\\.net.*encodeURIComponent\\((.*)\\("); - rx_sig.setMinimal(true); - if (rx_sig.indexIn(text) != -1) { - sig_name = rx_sig.cap(1); - } - qDebug() << "Sig::findFunctions: sig_name:" << sig_name; - - QString sig_code; - if (!sig_name.isEmpty()) { - //int pos = text.indexOf("function " + sig_name); - int pos = text.indexOf("var " + sig_name + "=function"); - if (pos == -1) pos = text.indexOf("," + sig_name + "=function"); - if (pos == -1) pos = text.indexOf(sig_name + "=function"); - if (pos > -1) { - int endpos = text.indexOf("}", pos); - #ifdef ULTRAVERBOSE - qDebug() << "Sig::findFunctions: pos:" << pos << "endpos:" << endpos; - #endif - if (endpos > -1) { - sig_code = text.mid(pos, (endpos-pos)+1); - if (sig_code.startsWith("var ")) sig_code.replace("var " + sig_name + "=function", "function " + sig_name); - else - if (sig_code.startsWith(",")) sig_code.replace("," + sig_name + "=function", "function " + sig_name); - else - if (sig_code.startsWith(sig_name+"=")) sig_code.replace(sig_name + "=function", "function " + sig_name); - } - } - } - qDebug() << "Sig::findFunctions: sig_code:" << sig_code; - - // Find the 2nd function - QString function2; - if (!sig_code.isEmpty()) { - QStringList parts = sig_code.split(";"); - #ifdef ULTRAVERBOSE - qDebug() << "Sig::findFunctions: parts:" << parts; - #endif - foreach(QString part, parts) { - //qDebug() << "Sig::findFunctions: part:" << part; - QRegExp rx("([a-zA-Z\\$]+)\\.([a-zA-Z0-9]+)\\("); - if (rx.indexIn(part) != -1) { - QString possible_var = rx.cap(1); - #ifdef ULTRAVERBOSE - qDebug() << "Sig::findFunctions: possible var:" << possible_var; - #endif - if ((possible_var != "a") && (possible_var != "")) { - QString s = findText(text, "var "+ possible_var +"=", "};"); - #ifdef ULTRAVERBOSE - qDebug() << "Sig::findFunctions: s:" << s; - #endif - if (!s.isEmpty()) { - function2 = "var "+ possible_var +" = "+ s +" };"; - break; - } - } - } - } - } - qDebug() << "Sig::findFunctions: function2:" << function2; - - if (!sig_code.isEmpty()) { - //sig_code = sig_code.replace("function "+ sig_name + "(", "function aclara("); - function_name = sig_name; - #ifdef ULTRAVERBOSE - qDebug() << "Sig::findFunctions: sig_code:" << sig_code; - #endif - res = sig_code + " " + function2; - } - - qDebug() << "Sig::findFunctions: res:" << res; - - decrypt_function = res; - return res; -} -#endif - -QString Sig::aclara(const QString & signature) { -#if defined(SIG_USE_JSCODE) && defined(SIG_USE_NO_JSCODE) - if (!decrypt_code.isEmpty()) { - return aclaraNoJS(signature); - } else { - return aclaraJS(signature); - } -#else -#ifdef SIG_USE_JSCODE - return aclaraJS(signature); -#else - return aclaraNoJS(signature); -#endif -#endif -} - -#ifdef SIG_USE_JSCODE -QString Sig::aclaraJS(const QString & signature) { - int dot = signature.indexOf('.'); - if (dot != -1) { - qDebug("Sig::aclaraJS: length: %d (%d.%d)", signature.size(), dot, signature.size()-dot-1); - } else { - qDebug("Sig::aclaraJS: length: %d", signature.size()); - } - - QString res; - - if (!decrypt_function.isEmpty()) { - QString fname = function_name; - QScriptEngine engine; - engine.evaluate(decrypt_function); - - QScriptValueList args; - args << signature; - QScriptValue aclarar = engine.globalObject().property(fname); - res = aclarar.call(QScriptValue(), args).toString(); - } - - #ifdef ULTRAVERBOSE - qDebug() << "Sig::aclara: orig:" << signature; - qDebug() << "Sig::aclara: res:" << res; - #endif - - if (res.isEmpty()) { - qDebug() << "Sig::aclara: signature length not supported:" << signature.size() << ":" << signature; - } - - return res; -} -#endif - -#ifdef SIG_USE_NO_JSCODE -QString Sig::reverseString(const QString & orig) { - QString r; - for (int n = orig.size()-1; n >= 0; n--) { - r.append(orig.at(n)); - } - return r; -} - -QString Sig::aclaraNoJS(const QString & signature) { - int dot = signature.indexOf('.'); - if (dot != -1) { - qDebug("Sig::aclaraNoJS: length: %d (%d.%d)", signature.size(), dot, signature.size()-dot-1); - } else { - qDebug("Sig::aclaraNoJS: length: %d", signature.size()); - } - - QString s = signature; - - if (decrypt_code.isEmpty()) { - qDebug() << "Sig::aclara: decrypt_code not found"; - return ""; - } - - QStringList commands = decrypt_code.split(";", QString::SkipEmptyParts); - foreach(QString command, commands) { - #ifdef ULTRAVERBOSE - qDebug() << "Sig::aclara: command:" << command; - #endif - QRegExp rx("(\\w+)\\((\\d+)\\)"); - if (rx.indexIn(command) != -1) { - QString c = rx.cap(1); - int v = rx.cap(2).toInt(); - //qDebug() << "c:" << c << "v:" << v; - if (c == "slice") { - s = s.mid(v); - } - else - if (c == "swap") { - int p = v % s.length(); - QChar c = s[0]; - s[0] = s[p]; - s[p] = c; - } - else - if (c == "reverse") { - s = reverseString(s); - } - else { - qDebug() << "Sig::aclara: unknown command:" << command; - } - } else { - // Error - qDebug() << "Sig::aclara: failed to parse command:" << command; - } - } - - #ifdef ULTRAVERBOSE - qDebug() << "Sig::aclara: orig:" << signature; - qDebug() << "Sig::aclara: res:" << s; - #endif - - if (s.isEmpty()) { - qDebug() << "Sig::aclara: signature length not supported:" << signature.size() << ":" << signature; - } - - return s; -} -#endif - -void Sig::save(QSettings * set) { - qDebug() << "Sig::save"; - - set->beginGroup("sig"); - set->setValue("player", html5_player); - set->setValue("sts", sts); - set->setValue("function_name", function_name); - set->setValue("function", decrypt_function); - set->setValue("code", decrypt_code); - set->endGroup(); -} - -void Sig::load(QSettings * set) { - qDebug() << "Sig::load"; - - set->beginGroup("sig"); - html5_player = set->value("player", "").toString(); - sts = set->value("sts", "").toString(); - function_name = set->value("function_name", "").toString(); - decrypt_function = set->value("function", "").toString(); - decrypt_code = set->value("code", "").toString(); - set->endGroup(); -} diff -Nru smtube-20.1.0/src/sig.h smtube-20.6.0/src/sig.h --- smtube-20.1.0/src/sig.h 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/sig.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -/* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2020 Ricardo Villalba - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef SIG_H -#define SIG_H - -#include - -#define SIG_FROM_SMPLAYER_SITE - -#define SIG_USE_JSCODE -#define SIG_USE_NO_JSCODE - -#ifndef SIG_FROM_SMPLAYER_SITE -#undef SIG_USE_NO_JSCODE -#endif - -#ifndef QT_SCRIPT_LIB -#undef SIG_USE_JSCODE -#define SIG_USE_NO_JSCODE -#define SIG_FROM_SMPLAYER_SITE -#endif - -class QSettings; - -class Sig -{ -public: - void clear() { html5_player = ""; sts = ""; decrypt_function = ""; decrypt_code = "";} - - QString html5_player; - QString sts; - - QString function_name; - QString decrypt_function; // javascript - - QString decrypt_code; // No javascript - - QString findFunctions(const QString & text); - QString aclara(const QString & signature); - - static QString playerURL(const QString & player_name); - - void save(QSettings * set); - void load(QSettings * set); - -protected: -#ifdef SIG_USE_JSCODE - QString aclaraJS(const QString & signature); -#endif -#ifdef SIG_USE_NO_JSCODE - QString aclaraNoJS(const QString & signature); -#endif - -private: -#ifndef SIG_FROM_SMPLAYER_SITE - static QString findText(const QString & text, const QString & begin, const QString & end); -#endif - -#ifdef SIG_USE_NO_JSCODE - static QString reverseString(const QString & orig); -#endif -}; - -#endif - diff -Nru smtube-20.1.0/src/sitedialog.cpp smtube-20.6.0/src/sitedialog.cpp --- smtube-20.1.0/src/sitedialog.cpp 1970-01-01 00:00:00.000000000 +0000 +++ smtube-20.6.0/src/sitedialog.cpp 2020-05-28 14:01:39.000000000 +0000 @@ -0,0 +1,40 @@ +/* SMTUBE2, a small YouTube browser for SMPlayer + Copyright (C) 2015-2020 Ricardo Villalba + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "sitedialog.h" + +SiteDialog::SiteDialog(QWidget * parent, Qt::WindowFlags f) + : QDialog(parent, f) +{ + setupUi(this); +} + +SiteDialog::~SiteDialog() { +} + +void SiteDialog::setSite(Site s) { + name_edit->setText(s.name()); + home_edit->setText(s.homeUrl()); + search_edit->setText(s.searchUrl()); +} + +Site SiteDialog::site() { + return Site(name_edit->text(), home_edit->text(), search_edit->text()); +} + +#include "moc_sitedialog.cpp" diff -Nru smtube-20.1.0/src/sitedialog.h smtube-20.6.0/src/sitedialog.h --- smtube-20.1.0/src/sitedialog.h 1970-01-01 00:00:00.000000000 +0000 +++ smtube-20.6.0/src/sitedialog.h 2020-05-28 14:01:39.000000000 +0000 @@ -0,0 +1,39 @@ +/* SMTUBE2, a small YouTube browser for SMPlayer + Copyright (C) 2015-2020 Ricardo Villalba + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef SITEDIALOG_H +#define SITEDIALOG_H + +#include "ui_sitedialog.h" + +#include +#include "sites.h" + +class SiteDialog : public QDialog, public Ui::SiteDialog +{ + Q_OBJECT + +public: + SiteDialog( QWidget * parent = 0, Qt::WindowFlags f = 0 ); + ~SiteDialog(); + + void setSite(Site s); + Site site(); +}; + +#endif diff -Nru smtube-20.1.0/src/sitedialog.ui smtube-20.6.0/src/sitedialog.ui --- smtube-20.1.0/src/sitedialog.ui 1970-01-01 00:00:00.000000000 +0000 +++ smtube-20.6.0/src/sitedialog.ui 2020-05-28 14:01:39.000000000 +0000 @@ -0,0 +1,121 @@ + + + SiteDialog + + + + 0 + 0 + 648 + 150 + + + + Edit Site + + + + + + + + &Name: + + + name_edit + + + + + + + + + + + + + + &Home page URL: + + + home_edit + + + + + + + + + + + + + + &Search URL: + + + search_edit + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + name_edit + home_edit + search_edit + buttonBox + + + + + buttonBox + accepted() + SiteDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + SiteDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff -Nru smtube-20.1.0/src/sites.cpp smtube-20.6.0/src/sites.cpp --- smtube-20.1.0/src/sites.cpp 1970-01-01 00:00:00.000000000 +0000 +++ smtube-20.6.0/src/sites.cpp 2020-05-27 14:37:18.000000000 +0000 @@ -0,0 +1,83 @@ +/* smtube, a small youtube browser. + Copyright (C) 2012-2020 Ricardo Villalba + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "sites.h" +#include +#include + +Sites::Sites() { + list.clear(); + list << Site("Tonvid.com", "http://www.tonvid.com", "http://www.tonvid.com/search.php?q=SEARCHTERM"); + list << Site("Youtube.com", "http://m.youtube.com", "http://m.youtube.com/results?search_query=SEARCHTERM"); + + default_list = list; + curr = 0; +} + +int Sites::findName(QString name) { + for (int n = 0; n < list.count(); n++) { + if (list[n].name() == name) return n; + } + return -1; +} + +void Sites::save(QSettings * set) { + qDebug() << "Sites::save"; + + set->beginGroup("sites"); + set->setValue("count", list.count()); + set->setValue("selected_site", curr); + + for (int n = 0; n < list.count(); n++) { + QString section = QString("site_%1").arg(n); + set->beginGroup(section); + set->setValue("name", list[n].name()); + set->setValue("home_url", list[n].homeUrl()); + set->setValue("search_url", list[n].searchUrl()); + set->endGroup(); + } + + set->endGroup(); +} + +void Sites::load(QSettings * set) { + qDebug() << "Sites::load"; + + set->beginGroup("sites"); + int count = set->value("count", 0).toInt(); + + if (count > 0) { + list.clear(); + + for (int n = 0; n < count; n++) { + QString section = QString("site_%1").arg(n); + set->beginGroup(section); + QString name = set->value("name", "").toString(); + QString home_url = set->value("home_url", "").toString(); + QString search_url = set->value("search_url", "").toString(); + + list << Site(name, home_url, search_url); + set->endGroup(); + } + + curr = set->value("selected_site", 0).toInt(); + if (curr >= list.count()) curr = 0; + } + + set->endGroup(); +} diff -Nru smtube-20.1.0/src/sites.h smtube-20.6.0/src/sites.h --- smtube-20.1.0/src/sites.h 1970-01-01 00:00:00.000000000 +0000 +++ smtube-20.6.0/src/sites.h 2020-05-27 14:20:16.000000000 +0000 @@ -0,0 +1,81 @@ +/* smtube, a small youtube browser. + Copyright (C) 2012-2020 Ricardo Villalba + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef SITES_H +#define SITES_H + +#include +#include +#include + +class QSettings; + +class Site +{ +public: + Site(const QString & name, const QString & home, const QString & search) + { + site_name = name; + home_url = home; + search_url = search; + } + + void setName(const QString & name) { site_name = name; } + void setHomeUrl(const QString & url) { home_url = url; } + void setSearchUrl(const QString & url) { search_url = url; } + + QString name() { return site_name; } + QString homeUrl() { return home_url; } + QString searchUrl() { return search_url; } + +protected: + QString site_name, home_url, search_url; +}; + + +class Sites +{ +public: + Sites(); + + int count() { return list.count(); } + + void setCurrent( int c ) { curr = c; } + int current() { return curr; } + + Site item(int i) { return list[i]; } + Site currentSite() { return list[curr]; } + + int findName(QString name); + + void save(QSettings * set); + void load(QSettings * set); + + void setAllSites(QList sites) { list = sites; } + QList allSites() { return list; } + + QList defaultSites() { return default_list; } + +protected: + QList list; + QList default_list; + + int curr; +}; + +#endif diff -Nru smtube-20.1.0/src/smtube.pro smtube-20.6.0/src/smtube.pro --- smtube-20.1.0/src/smtube.pro 2018-10-21 20:26:43.000000000 +0000 +++ smtube-20.6.0/src/smtube.pro 2020-05-29 14:45:39.000000000 +0000 @@ -1,4 +1,3 @@ - TEMPLATE = app QT += network @@ -6,9 +5,10 @@ #CONFIG += debug DEFINES += USE_PLAYERS -DEFINES += YT_USE_SIG #DEFINES += D_BUTTON DEFINES += STYLE_SWITCHING +DEFINES += CODEDOWNLOADER +DEFINES += USE_SITES # If Qt >= 5.4 greaterThan(QT_MAJOR_VERSION, 4):greaterThan(QT_MINOR_VERSION, 3) { @@ -29,7 +29,6 @@ mywebview.h \ mywebpage.h \ mycookiejar.h \ - loadpage.h \ retrieveyoutubeurl.h \ supportedurls.h \ version.h \ @@ -45,7 +44,6 @@ SOURCES = mywebview.cpp \ mywebpage.cpp \ mycookiejar.cpp \ - loadpage.cpp \ retrieveyoutubeurl.cpp \ supportedurls.cpp \ version.cpp \ @@ -63,12 +61,6 @@ RESOURCES = icons.qrc -contains( DEFINES, YT_USE_SIG ) { - HEADERS += sig.h - SOURCES += sig.cpp - QT += script # optional -} - contains(DEFINES, USE_PLAYERS) { HEADERS += players.h SOURCES += players.cpp @@ -76,11 +68,22 @@ HEADERS += hcplayer.h } +contains(DEFINES, USE_SITES) { + HEADERS += sites.h sitedialog.h + SOURCES += sites.cpp sitedialog.cpp + FORMS += sitedialog.ui +} + contains( DEFINES, HDPI_SUPPORT ) { HEADERS += hdpisupport.h SOURCES += hdpisupport.cpp } +contains( DEFINES, CODEDOWNLOADER ) { + HEADERS += codedownloader.h + SOURCES += codedownloader.cpp +} + unix { UI_DIR = .ui MOC_DIR = .moc @@ -96,6 +99,7 @@ } TRANSLATIONS = translations/smtube_es.ts \ + translations/smtube_es_ES.ts \ translations/smtube_en.ts \ translations/smtube_de.ts \ translations/smtube_fr.ts \ diff -Nru smtube-20.1.0/src/smtube.rc smtube-20.6.0/src/smtube.rc --- smtube-20.1.0/src/smtube.rc 2020-01-21 19:31:18.000000000 +0000 +++ smtube-20.6.0/src/smtube.rc 2020-06-18 14:49:40.000000000 +0000 @@ -1,7 +1,7 @@ #include -#define SMTUBE_FILEVERSION 20,1,0,0 -#define SMTUBE_PRODVERSION "20.1.0.0\0" +#define SMTUBE_FILEVERSION 20,6,0,0 +#define SMTUBE_PRODVERSION "20.6.0.0\0" VS_VERSION_INFO VERSIONINFO FILEVERSION SMTUBE_FILEVERSION diff -Nru smtube-20.1.0/src/translations/smtube_bg.ts smtube-20.6.0/src/translations/smtube_bg.ts --- smtube-20.1.0/src/translations/smtube_bg.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_bg.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Начало - + Navigation Навигация - + Zoom + Увеличение (+) - + Zoom - Намаление (-) - + &Quit &Изход - + &Navigation &Навигация - + &View &Изглед - + Toolbar Лента с инструменти - + Statusbar Лента на състоянието - + &Settings &Настройки - + &Help &Помощ - - &Update the YouTube code - &Обновяване на кода за YouTube + + &Update YouTube playback support + - - About this &release - Относно тази &компилация + + &Install / Update YouTube playback support + - + &About SMTube &Относно SMTube - + Download video using an external service Изтегляне на видео чрез външна услуга - + Download Изтегляне - - Connection failed - Неуспешно свързване + + No video found + Няма намерено видео - - The video you requested needs to open a HTTPS connection. - Поръчаното от Вас видео, изисква отваряне на HTTPS връзка. + + It wasn't possible to find the URL for this video. + Не беше успешно намирането на Интернет адреса за това видео. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - За съжаление изискваният за това OpenSSL компонент не е наличен на Вашата система. + + Loading... %1% + Зареждане... %1% + + + CodeDownloader - - No video found - Няма намерено видео + + Downloading... + - - It wasn't possible to find the URL for this video. - Не беше успешно намирането на Интернет адреса за това видео. + + Connecting to %1 + - - - Problems with YouTube - Проблеми с YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - За съжаление поради промени в YouTube, видеото '%1' не може да бъде възпроизведено. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Желаете ли да обновите кода за YouTube? Това може да поправи проблема. + + Success + - - Maybe updating this application could fix the problem. - Може би обновяването на приложението би поправило проблема. + + + Error + - - About this release - Относно тази компилация + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Поради промени в YouTube, старият SMTube вече не работи. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Това е нова версия на SMTube, написана от нулата. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Някои функционалности все още не са налични. + + It wasn't possible to find the URL for this video. + Не беше успешно намирането на Интернет адреса за това видео. - - Important: - Важно: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Ако видеата от VEVO не се възпроизвеждат, моля използвайте опцията %1 от помощното меню. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Обновяване на кода за YouTube + + This component needs to be updated frequently. + - - Loading... %1% - Зареждане... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Общи - + + A&dd... + + + + &Players &Плейъри - + Add Добавяне - + Up Нагоре @@ -282,37 +316,57 @@ Предпочитано &качество: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Изтриване - + Edit Редактиране - + A&dd predefined players &Добави предварително указани плейъри - + &Interface &Интерфейс - + &Style: &Стил: - + Font: Шрифт: - + C&hange... Про&мяна... @@ -327,12 +381,12 @@ Изтегляне на видео чрез &външна услуга - + Down Надолу - + Default По подразбиране @@ -471,4 +525,27 @@ Стандартно + + SiteDialog + + + Edit Site + + + + + &Name: + &Име: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_ca.ts smtube-20.6.0/src/translations/smtube_ca.ts --- smtube-20.1.0/src/translations/smtube_ca.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_ca.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Inici - + Navigation Navegació - + Zoom + + zoom - + Zoom - - zoom - + &Quit &Surt - + &Navigation &Navegació - + &View &Visualitza - + Toolbar Barra d'eines - + Statusbar Barra d'estat - + &Settings Ajust&s - + &Help &Ajuda - - &Update the YouTube code - Act&ualitza el codi de YouTube + + &Update YouTube playback support + - - About this &release - Quant a aquest llan&çament + + &Install / Update YouTube playback support + - + &About SMTube Qu&ant a SMTube - + Download video using an external service Baixa el vídeo mitjançant un servei extern - + Download Baixa - - Connection failed - La connexió ha fallat + + No video found + No s'ha trobat cap vídeo - - The video you requested needs to open a HTTPS connection. - El vídeo que heu sol·licitat requereix que s'obri una connexió HTTPS. + + It wasn't possible to find the URL for this video. + No ha estat possible trobar l'URL per a aquest vídeo. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Desafortunadament, el component OpenSSL, que es requereix per això, no està disponible al sistema. + + Loading... %1% + S'està carregant... %1% + + + CodeDownloader - - No video found - No s'ha trobat cap vídeo + + Downloading... + - - It wasn't possible to find the URL for this video. - No ha estat possible trobar l'URL per a aquest vídeo. + + Connecting to %1 + - - - Problems with YouTube - Problemes amb YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Desafortunadament, a causa de canvis a YouTube, no es pot reproduir el vídeo '%1'. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Voleu actualitzar el codi de YouTube? Això pot corregir el problema. + + Success + - - Maybe updating this application could fix the problem. - Potser l'actualització d'aquesta aplicació pot corregir el problema. + + + Error + - - About this release - Quant a aquest llançament + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - A causa de canvis a YouTube, l'antic SMTube no funciona més. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Aquesta és una versió nova de SMTube, escrita des de zero. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Algunes funcionalitats encara no estan disponibles. + + It wasn't possible to find the URL for this video. + No ha estat possible trobar l'URL per a aquest vídeo. - - Important: - Important: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Si falla la reproducció dels vídeos de VEVO, si us plau, utilitzeu l'opció %1 del menú d'ajuda. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Actualitza el codi de YouTube + + This component needs to be updated frequently. + - - Loading... %1% - S'està carregant... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &General - + + A&dd... + + + + &Players Re&productors - + Add Afegeix - + Up Amunt @@ -282,37 +316,57 @@ &Qualitat preferida: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Suprimeix - + Edit Edita - + A&dd predefined players Afegeix els repro&ductors predefinits - + &Interface &Interfície - + &Style: E&stil: - + Font: Lletra: - + C&hange... &Canvia... @@ -327,12 +381,12 @@ Baixa els vídeos mitjançant un servei &extern - + Down Avall - + Default Predeterminat @@ -471,4 +525,27 @@ Predeterminat + + SiteDialog + + + Edit Site + + + + + &Name: + &Nom: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_cs.ts smtube-20.6.0/src/translations/smtube_cs.ts --- smtube-20.1.0/src/translations/smtube_cs.ts 2018-11-10 22:16:45.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_cs.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Domov - + Navigation Navigace - + Zoom + Přiblížit + - + Zoom - Oddálit - - + &Quit &Zavřít - + &Navigation &Navigace - + &View Zobrazení - + Toolbar Nástrojová lišta - + Statusbar Stavový řádek - + &Settings Nastavení - + &Help &Nápověda - - &Update the YouTube code - &Aktualizovat kód Youtube + + &Update YouTube playback support + - - About this &release - O tomto vydání + + &Install / Update YouTube playback support + - + &About SMTube &O aplikaci SMTube - + Download video using an external service Stáhnout video pomocí externí služby - + Download Stáhnout - - Connection failed - Spojení selhalo + + No video found + Video nebylo nalezeno - - The video you requested needs to open a HTTPS connection. - Video, které chcete otevřít, potřebuje spojení přes HTTPS. + + It wasn't possible to find the URL for this video. + Nebylo možné najít URL pro toto video - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Bohužel nutná součást Openssl není ve vašem systému k dispozici. + + Loading... %1% + Načítání... + + + CodeDownloader - - No video found - Video nebylo nalezeno + + Downloading... + - - It wasn't possible to find the URL for this video. - Nebylo možné najít URL pro toto video + + Connecting to %1 + - - - Problems with YouTube - Problémy s Youtube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Kvůli změnám na stránce Youtube nelze video '%1' přehrát. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Chcete aktualizovat kód Youtube? To může problém vyřešit. + + Success + - - Maybe updating this application could fix the problem. - Vyřešit problém by mohla aktualizace této aplikace. + + + Error + - - About this release - O tomto vydání + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Kvůli změnám na YouTube starý SMTube nebude fungovat. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Toto je nová verze SMTube, přepracovaná od nuly. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Některé funkce ještě nejsou k dispozici. + + It wasn't possible to find the URL for this video. + Nebylo možné najít URL pro toto video - - Important: - Důležité: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Pokud se videa z VEVO nepřehrají, použijte prosím volbu %1 v polože Nápověda. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Aktualizujte kód Youtube + + This component needs to be updated frequently. + - - Loading... %1% - Načítání... + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Obecné - + + A&dd... + + + + &Players &Přehrávače - + Add Přidat... - + Up Nahoru @@ -282,37 +316,57 @@ Preferovaná kvalita: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Smazat - + Edit Upravit - + A&dd predefined players P&řidat předdefinované přehrávače - + &Interface &Rozhraní - + &Style: &Styl: - + Font: Font: - + C&hange... Z&měnit... @@ -327,12 +381,12 @@ Stáhnout video pomocí &externí služby - + Down Dolů - + Default Výchozí @@ -471,4 +525,27 @@ Výchozí + + SiteDialog + + + Edit Site + + + + + &Name: + &Název: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_da.ts smtube-20.6.0/src/translations/smtube_da.ts --- smtube-20.1.0/src/translations/smtube_da.ts 2019-06-16 19:20:12.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_da.ts 2020-06-12 14:49:29.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Hjem - + Navigation Navigation - + Zoom + Zoom + - + Zoom - Zoom - - + &Quit &Afslut - + &Navigation &Navigation - + &View &Vis - + Toolbar Værktøjslinje - + Statusbar Statuslinje - + &Settings &Indstillinger - + &Help &Hjælp - - &Update the YouTube code - Opdater &YouTube-koden + + &Update YouTube playback support + &Opdater understøttelse af YouTube-afspilning - - About this &release - Om denne &udgivelse + + &Install / Update YouTube playback support + &Installer/opdater understøttelse af YouTube-afspilning - + &About SMTube &Om SMTube - + Download video using an external service Download video ved brug af en ekstern tjeneste - + Download Download - - Connection failed - Forbindelse mislykkedes + + No video found + Der blev ikke fundet nogen video - - The video you requested needs to open a HTTPS connection. - Videoen du har anmodet om har brug for at åbne en HTTPS-forbindelse. + + It wasn't possible to find the URL for this video. + Det var ikke muligt at finde videoens URL. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Desværre er OpenSSL-komponenten, der kræves, ikke tilgængelige på dit system. + + Loading... %1% + Indlæser ... %1% + + + CodeDownloader - - No video found - Der blev ikke fundet nogen video + + Downloading... + Downloader ... - - It wasn't possible to find the URL for this video. - Det var ikke muligt at finde videoens URL. + + Connecting to %1 + Opretter forbindelse til %1 - - - Problems with YouTube - Problemer med YouTube + + The YouTube code has been installed successfully. + YouTube-koden er blevet installeret. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Videoen "%1" kan desværre ikke afspilles, på grund af ændringer på YouTube. + + Installed version: %1 + Installeret version: %1 - - Do you want to update the YouTube code? This may fix the problem. - Vil du opdatere YouTube-koden? Det vil måske rette problemet. + + Success + Succes - - Maybe updating this application could fix the problem. - Opdatering af dette program kan muligvis rette problemet. + + + Error + Fejl - - About this release - Om denne udgivelse + + It's not possible to save %1. + Det er ikke muligt at gemme %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Den gamle SMTube virker ikke længere, på grund af ændringer på YouTube. + + An error happened while downloading the file:<br>%1 + Der opstod en fejl ved download af filen:<br>%1 - - This is a new version of SMTube, written from scratch. - Dette er en ny version af SMTube, skrevet fra bunden. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 kunne ikke kommunikere med youtube-dl. Enten er den ikke downloadet eller også virker den ikke korrekt. - - Some functionality is not available yet. - Nogle funktioner er endnu ikke tilgængelige. + + It wasn't possible to find the URL for this video. + Det var ikke muligt at finde videoens URL. - - Important: - Vigtigt: + + Maybe you need to update youtube-dl. + Måske er det nødvendigt at opdatere youtube-dl. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Hvis VEVO-videoer ikke kan afspille, så brug venligst %1 i Hjælp-menuen. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + For at kunne afspille YouTube-vidoer skal %1 bruge et eksternt program kaldet youtube-dl. - - Update the YouTube code - Opdater YouTube-koden + + This component needs to be updated frequently. + Komponenten skal opdateres ofte. - - Loading... %1% - Indlæser ... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Du kan opdatere eller blot geninstallere SMPlayer. Installationsprogrammet downloader og installerer den seneste version. + + + + Install / Update YouTube support + Installer/opdater understøttelse af YouTube + + + + %1 can download and install this application for you. + %1 kan downloade og installere programmet for dig. + + + + It will be downloaded from the official website and installed in %1. + Det vil blive downloadet fra det officielle websted og blive installeret i %1. + + + + Would you like to proceeed? + Vil du fortsætte? + + + + + Install YouTube support? + Installer understøttelse af YouTube? @@ -257,17 +286,22 @@ &Generelt - + + A&dd... + &Tilføj ... + + + &Players &Afspillere - + Add Tilføj - + Up Op @@ -282,37 +316,57 @@ Foretrukket &kvalitet: - + + Sites + Steder + + + + &Site: + &Sted: + + + + Edi&t... + &Rediger ... + + + + De&lete + &Slet + + + Delete Slet - + Edit Rediger - + A&dd predefined players &Tilføj foruddefinerede afspillere - + &Interface &Grænseflade - + &Style: &Stil: - + Font: Skrifttype: - + C&hange... &Vælg ... @@ -327,12 +381,12 @@ Download video ved brug af en &ekstern tjeneste - + Down Ned - + Default Standard @@ -471,4 +525,27 @@ Standard + + SiteDialog + + + Edit Site + Rediger sted + + + + &Name: + &Navn: + + + + &Home page URL: + URL for &hjemmeside: + + + + &Search URL: + URL for &søgning: + + diff -Nru smtube-20.1.0/src/translations/smtube_de.ts smtube-20.6.0/src/translations/smtube_de.ts --- smtube-20.1.0/src/translations/smtube_de.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_de.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Start - + Navigation Navigation - + Zoom + Vergrößern + - + Zoom - Verkleinern - - + &Quit &Beenden - + &Navigation &Navigation - + &View &Ansicht - + Toolbar Werkzeugleiste - + Statusbar Statusleiste - + &Settings &Einstellungen - + &Help &Hilfe - - &Update the YouTube code - &YouTube-Code aktualisieren + + &Update YouTube playback support + - - About this &release - Über diese &Version + + &Install / Update YouTube playback support + - + &About SMTube &Über SMTube - + Download video using an external service Filme durch einen externen Dienst herunterladen - + Download Herunterladen - - Connection failed - Verbindung fehlgeschlagen + + No video found + Kein Video gefunden - - The video you requested needs to open a HTTPS connection. - Das Video, das Sie angefordert haben, benötigt eine HTTPS-Verbindung. + + It wasn't possible to find the URL for this video. + Es war nicht möglich, die Adresse für dieses Video zu finden. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Leider ist die erforderliche OpenSSL-Komponente auf Ihrem System nicht verfügbar. + + Loading... %1% + Wird geladen … %1% + + + CodeDownloader - - No video found - Kein Video gefunden + + Downloading... + - - It wasn't possible to find the URL for this video. - Es war nicht möglich, die Adresse für dieses Video zu finden. + + Connecting to %1 + - - - Problems with YouTube - Probleme mit YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Aufgrund von Änderungen in YouTube, kann das Video »%1« Leider nicht wiedergegeben werden. + + Installed version: %1 + Installierte Version: %1 - - Do you want to update the YouTube code? This may fix the problem. - Wollen Sie den YouTube-Code zu aktualisieren? Das kann das Problem beheben. + + Success + Erfolg - - Maybe updating this application could fix the problem. - Vielleicht könnte eine Aktualisierung dieser Anwendung das Problem beheben. + + + Error + Fehler - - About this release - Über diese Version + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Aufgrund von Änderungen in YouTube, funktioniert das alte SMTube nicht mehr. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Das ist eine neue Version von SMTube, von Grund auf neu geschrieben. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Manche Funktion ist noch nicht verfügbar. + + It wasn't possible to find the URL for this video. + Es war nicht möglich, die Adresse für dieses Video zu finden. - - Important: - Wichtig: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Wenn die VEVO-Videos nicht spielen, bitte die Option %1 im Hilfemenü verwenden. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - YouTube-Code aktualisieren + + This component needs to be updated frequently. + - - Loading... %1% - Wird geladen … %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + Youtube-Unterstützung installieren / aktualisieren + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + Youtube-Unterstützung installieren? @@ -257,17 +286,22 @@ All&gemein - + + A&dd... + Hinzu&fügen... + + + &Players &Abspieler - + Add Hinzufügen - + Up Hoch @@ -282,37 +316,57 @@ Bevorzugte &Qualität: - + + Sites + Seiten + + + + &Site: + &Seite: + + + + Edi&t... + Bearbei&ten... + + + + De&lete + &Löschen + + + Delete Löschen - + Edit Bearbeiten - + A&dd predefined players &Vordefinierte Abspieler hinzufügen - + &Interface &Oberfläche - + &Style: &Stil: - + Font: Schrift: - + C&hange... &Ändern … @@ -327,12 +381,12 @@ &Filme durch einen externen Dienst herunterladen - + Down Herunter - + Default Vorgabe @@ -471,4 +525,27 @@ Vorgabe + + SiteDialog + + + Edit Site + Seite bearbeiten + + + + &Name: + &Name: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_el.ts smtube-20.6.0/src/translations/smtube_el.ts --- smtube-20.1.0/src/translations/smtube_el.ts 2019-06-16 19:20:12.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_el.ts 2020-06-03 15:32:49.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Αρχική - + Navigation Πλοήγηση - + Zoom + Μεγέθυνση + - + Zoom - Σμίκρυνση - - + &Quit &Έξοδος - + &Navigation &Πλοήγηση - + &View Π&ροβολή - + Toolbar Γραμμή εργαλείων - + Statusbar Γραμμή κατάστασης - + &Settings &Ρυθμίσεις - + &Help &Βοήθεια - - &Update the YouTube code - &Ενημέρωση του κώδικα για το YouTube + + &Update YouTube playback support + &Ενημέρωση της υποστήριξης για το &YouTube - - About this &release - Πέρι αυτής της &κυκλοφορίας + + &Install / Update YouTube playback support + &Εγκατάσταση / Ενημέρωση της υποστήριξης για το &YouTube - + &About SMTube &Περί το SMTube - + Download video using an external service Λήψη του βίντεο χρησιμοποιώντας μια εξωτερική υπηρεσία - + Download Λήψη - - Connection failed - Η σύνδεση απέτυχε + + No video found + Δεν βρέθηκε βίντεο - - The video you requested needs to open a HTTPS connection. - Το αιτούμενο βίντεο απαιτεί το άνοιγμα μιας σύνδεσης HTTPS. + + It wasn't possible to find the URL for this video. + Δεν ήταν δυνατή η εύρεση του URL του βίντεο. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Δυστυχώς το απαιτούμενο συστατικό OpenSSL, δεν είναι διαθέσιμο στο σύστημά σας. + + Loading... %1% + Φόρτωση... %1% + + + CodeDownloader - - No video found - Δεν βρέθηκε βίντεο + + Downloading... + Λήψη... - - It wasn't possible to find the URL for this video. - Δεν ήταν δυνατή η εύρεση του URL του βίντεο. + + Connecting to %1 + Συνδέεται στο %1 - - - Problems with YouTube - Προβλήματα με το YouTube + + The YouTube code has been installed successfully. + Ο κώδικας για το YouTube εγκαταστάθηκε επιτυχώς. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Δυστυχώς, ένεκα αλλαγών στο YouTube, το βίντεο «%1» δεν μπορεί να αναπαραχθεί. + + Installed version: %1 + Εγκατεστημένη έκδοση: %1 - - Do you want to update the YouTube code? This may fix the problem. - Θέλετε να ενημερώσετε τον κώδικα YouTube; Μπορεί να επιλύσει το πρόβλημα. + + Success + Επιτυχία - - Maybe updating this application could fix the problem. - Ίσως ευημερώντας αυτήν την εφαρμογή θα λύσει το πρόβλημα. + + + Error + Σφάλμα - - About this release - Περί αυτής της κυκλοφορίας + + It's not possible to save %1. + Αδύνατη η αποθήκευση του %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Ένεκα αλλαγών στο YouTube, το παλαιό SMTube δεν λειτουργεί εφεξής. + + An error happened while downloading the file:<br>%1 + Συνέβη σφάλμα κατά την λήψη του αρχείου:<br>%1 - - This is a new version of SMTube, written from scratch. - Αυτή είναι μια νέα έκδοση του SMTube, γραμμένη εξαρχής. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + Το %1 απέτυχε να επικοινωνήσει με το youtube-dl. Είτε δεν είναι εγκατεστημένο, είτε δεν λειτουργεί σωστά. - - Some functionality is not available yet. - Μερικά χαρακτηριστικά δεν είναι ακόμη διαθέσιμα. + + It wasn't possible to find the URL for this video. + Δεν ήταν δυνατή η εύρεση του URL του βίντεο. - - Important: - Σημαντικό: + + Maybe you need to update youtube-dl. + Ίσως χρειάζεται ενημέρωση το youtube-dl. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Αν τα βίντεο VEVO αποτυγχάνουν να αναπαραχθούν, παρακαλώ χρησιμοποιήστε την επιλογή %1 στο μενού Βοήθειας. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Για την αναπαραγωγή των βίντεο από το YouTube, το %1 χρειάζεται μια εξωτερική εφαρμογή το youtube-dl. - - Update the YouTube code - Ενημέρωση του κώδικα YouTube + + This component needs to be updated frequently. + Αυτό το συστατικό απαιτεί συχνές ενημερώσεις. - - Loading... %1% - Φόρτωση... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Μπορείτε να το ενημερώσετε με επανεγκατάσταση του SMPlayer. Ο εγκαταστάτης θα τηλεφορτώσει την τελευταία έκδοση. + + + + Install / Update YouTube support + Εγκατάσταση / Ενημέρωση της υποστήριξης για το YouTube + + + + %1 can download and install this application for you. + Το %1 μπορεί να κάνει την λήψη και την εγκατάσταση της εφαρμογής αυτής. + + + + It will be downloaded from the official website and installed in %1. + Η λήψη θα γίνει από την επίσημη ιστοσελίδα και θα εγκατασταθεί στο %1. + + + + Would you like to proceeed? + Θέλετε να συνεχίσετε; + + + + + Install YouTube support? + Να γίνει η εγκατάσταση της υποστήριξης για το YouTube; @@ -257,17 +286,22 @@ &Γενικά - + + A&dd... + Προσ&θήκη... + + + &Players &Αναπαραγωγείς - + Add Προσθήκη - + Up Πάνω @@ -282,37 +316,57 @@ Προτι&μώμενη ποιότητα: - + + Sites + Ιστοσελίδες + + + + &Site: + &Ιστοσελίδα: + + + + Edi&t... + &Επεξεργασία... + + + + De&lete + Διαγρα&φή + + + Delete Διαγραφή - + Edit Επεξεργασία - + A&dd predefined players &Προσθήκη προτιμώμενων αναπαραγωγέων - + &Interface &Περιβάλλον - + &Style: &Ύφος - + Font: Γραμματοσειρά: - + C&hange... &Τροποποίηση... @@ -327,12 +381,12 @@ Λήψη των βίντεο χρησιμοποιώντας μια ε&ξωτερική υπηρεσία - + Down Κάτω - + Default Εξ ορισμού @@ -471,4 +525,27 @@ Εξ ορισμού + + SiteDialog + + + Edit Site + Επεξεργασία ιστοσελίδας + + + + &Name: + &Όνομα: + + + + &Home page URL: + &URL αρχικής σελίδας: + + + + &Search URL: + URL ανα&ζήτησης: + + diff -Nru smtube-20.1.0/src/translations/smtube_en_GB.ts smtube-20.6.0/src/translations/smtube_en_GB.ts --- smtube-20.1.0/src/translations/smtube_en_GB.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_en_GB.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,172 +77,200 @@ BrowserWindow - + Home Home - + Navigation Navigation - + Zoom + Zoom + - + Zoom - Zoom - - + &Quit &Quit - + &Navigation &Navigation - + &View &View - + Toolbar Toolbar - + Statusbar Statusbar - + &Settings &Settings - + &Help &Help - - &Update the YouTube code - &Update the YouTube code + + &Update YouTube playback support + - - About this &release - About this &release + + &Install / Update YouTube playback support + - + &About SMTube &About SMTube - + Download video using an external service Download video using an external service - + Download Download - - Connection failed - Connection failed + + No video found + No video found - - The video you requested needs to open a HTTPS connection. - The video you requested needs to open a HTTPS connection. + + It wasn't possible to find the URL for this video. + Could not find the URL for this video. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Unfortunately the OpenSSL component, required for it, is not available on your system. + + Loading... %1% + Loading... %1% + + + CodeDownloader - - No video found - No video found + + Downloading... + - - It wasn't possible to find the URL for this video. - Could not find the URL for this video. + + Connecting to %1 + - - - Problems with YouTube - Problems with YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Unfortunately, due to changes in YouTube the video '%1' can't be played. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Do you want to update the YouTube code? -This may fix the problem. + + Success + - - Maybe updating this application could fix the problem. - Maybe updating this application could fix the problem. + + + Error + - - About this release - About this release + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Due to changes in YouTube, the old SMTube doesn't work anymore. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - This is a new version of SMTube, written from scratch. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Some functionality is not available yet. + + It wasn't possible to find the URL for this video. + Could not find the URL for this video. - - Important: - Important: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - If the VEVO videos fail to play, please use the option %1 in the Help menu. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Update the YouTube code + + This component needs to be updated frequently. + - - Loading... %1% - Loading... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -258,17 +286,22 @@ &General - + + A&dd... + + + + &Players &Players - + Add Add - + Up Up @@ -283,37 +316,57 @@ Preferred &quality: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Delete - + Edit Edit - + A&dd predefined players A&dd predefined players - + &Interface &Interface - + &Style: &Style: - + Font: Font: - + C&hange... C&hange... @@ -328,12 +381,12 @@ Download videos using an &external service - + Down Down - + Default Default @@ -472,4 +525,27 @@ Default + + SiteDialog + + + Edit Site + + + + + &Name: + &Name: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_en.ts smtube-20.6.0/src/translations/smtube_en.ts --- smtube-20.1.0/src/translations/smtube_en.ts 2018-10-26 20:00:52.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_en.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,170 +77,199 @@ BrowserWindow - + Home - + Navigation - + Zoom + - + Zoom - - + &Quit - + &Navigation - + &View - + Toolbar - + Statusbar - + &Settings - + &Help - - &Update the YouTube code + + &Update YouTube playback support - - About this &release + + &Install / Update YouTube playback support - + &About SMTube - + Download video using an external service - + Download - - Connection failed + + No video found - - The video you requested needs to open a HTTPS connection. + + It wasn't possible to find the URL for this video. - - Unfortunately the OpenSSL component, required for it, is not available in your system. + + Loading... %1% + + + CodeDownloader - - No video found + + Downloading... - - It wasn't possible to find the URL for this video. + + Connecting to %1 - - - Problems with YouTube + + The YouTube code has been installed successfully. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. + + Installed version: %1 - - Do you want to update the YouTube code? This may fix the problem. + + Success - - Maybe updating this application could fix the problem. + + + Error - - About this release + + It's not possible to save %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. + + An error happened while downloading the file:<br>%1 - - This is a new version of SMTube, written from scratch. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. - - Some functionality is not available yet. + + It wasn't possible to find the URL for this video. - - Important: + + Maybe you need to update youtube-dl. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. - - Update the YouTube code + + This component needs to be updated frequently. - - Loading... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? @@ -257,17 +286,22 @@ - + + A&dd... + + + + &Players - + Add - + Up @@ -282,37 +316,57 @@ - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete - + Edit - + A&dd predefined players - + &Interface - + &Style: - + Font: - + C&hange... @@ -327,12 +381,12 @@ - + Down - + Default @@ -471,4 +525,27 @@ + + SiteDialog + + + Edit Site + + + + + &Name: + + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_es_ES.ts smtube-20.6.0/src/translations/smtube_es_ES.ts --- smtube-20.1.0/src/translations/smtube_es_ES.ts 1970-01-01 00:00:00.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_es_ES.ts 2020-06-01 15:29:55.000000000 +0000 @@ -0,0 +1,555 @@ + + + + + About + + + About... + Acerca de... + + + + &Info + &Info + + + + &Translators + &Traductores + + + + &License + &Licencia + + + + YouTube%1 Browser for SMPlayer + Buscador de vídeos de YouTube%1 de SMPlayer + + + + Version: %1 + Versión: %1 + + + + Portable Edition + Edición Portable + + + + Compiled with Qt %1 (using %2) + Compilado con Qt %1 (usando %2) + + + + Visit our website for updates: + Visita nuestra web para conseguir actualizaciones: + + + + Many people contributed with translations. + Muchas personas han contribuido con traducciones. + + + + You can also help to translate SMTube into your own language. + Tú también puedes ayudar a traducir el SMTube a tu propio idioma. + + + + Visit %1 and join a translation team. + Visita %1 y únete a un equipo de traducción. + + + + Click here to know the translators from the transifex teams + Pulsa aquí para conocer los traductores de los equipos de transifex + + + + <b>%1</b> (%2) + <b>%1</b> (%2) + + + + BrowserWindow + + + Home + Inicio + + + + Navigation + Navegación + + + + Zoom + + Zoom + + + + + Zoom - + Zoom - + + + + &Quit + &Salir + + + + &Navigation + &Navegación + + + + &View + &Ver + + + + Toolbar + Barra de herramientas + + + + Statusbar + Barra de estado + + + + &Settings + &Configuración + + + + &Help + &Ayuda + + + + &Update YouTube playback support + Actualizar el código para reproducir vídeos de &YouTube + + + + &Install / Update YouTube playback support + &Instalar / Actualizar el código para reproducir vídeos de YouTube + + + + &About SMTube + &Acerca de SMTube + + + + Download video using an external service + Descargar el vídeo usando un servicio externo + + + + Download + Descargar + + + + No video found + No se ha encontrado el vídeo + + + + It wasn't possible to find the URL for this video. + No ha sido posible encontrar la URL de este vídeo. + + + + Loading... %1% + Cargando... %1% + + + + CodeDownloader + + + Downloading... + Descargando... + + + + Connecting to %1 + Conectando con %1 + + + + The YouTube code has been installed successfully. + El código de YouTube se ha instalado correctamente. + + + + Installed version: %1 + Versión instalada: %1 + + + + Success + Todo correcto + + + + + Error + Error + + + + It's not possible to save %1. + No es posible guardar %1. + + + + An error happened while downloading the file:<br>%1 + Se ha producido un error al descargar el archivo::<br>%1 + + + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 no se ha podido comunicar con youtube-dl. O no está instalado o no funciona correctamente. + + + + It wasn't possible to find the URL for this video. + No ha sido posible encontrar la URL de este vídeo. + + + + Maybe you need to update youtube-dl. + Quizás sea necesario actualizar youtube-dl. + + + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Para poder reproducir vídeos de YouTube, %1 necesita una aplicación externa llamada youtube-dl. + + + + This component needs to be updated frequently. + Este componente hay que actualizarlo con frecuencia. + + + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Puedes actualizarlo reinstalando SMPlayer. El instalador descargará e instalará la última versión. + + + + Install / Update YouTube support + Instalar / Actualizar el soporte para YouTube + + + + %1 can download and install this application for you. + %1 puede descargar e instalar esta aplicación. + + + + It will be downloaded from the official website and installed in %1. + Se descargará de la web oficial y se instalará en %1. + + + + Would you like to proceeed? + ¿Quieres continuar? + + + + + Install YouTube support? + ¿Instalar el soporte para YouTube? + + + + ConfigDialog + + + Settings + Configuración + + + + &General + &General + + + + A&dd... + Aña&dir... + + + + &Players + &Reproductores + + + + Add + Añadir + + + + Up + Subir + + + + Playback + Reproducción + + + + Preferred &quality: + Calidad &preferida: + + + + Sites + Sitios Web + + + + &Site: + &Sitio: + + + + Edi&t... + Edi&tar... + + + A&dd.. + Aña&dir... + + + + De&lete + &E&liminar + + + + Delete + Borrar + + + + Edit + Editar + + + + A&dd predefined players + Añadir &reproductores predeterminados + + + + &Interface + &Interfaz + + + + &Style: + &Estilo: + + + + Font: + Tipo de letra: + + + + C&hange... + Ca&mbiar... + + + + Download + Descargas + + + + Download videos using an &external service + Descargar vídeos usando un servicio &externo + + + + Down + Bajar + + + + Default + Predeterminado + + + + FileChooser + + + Click to select a file or folder + Pulsa para seleccionar un archivo o carpeta + + + + MyWebView + + + Open in &YouTube + Abrir en &YouTube + + + + &Save link... + &Descargar enlace... + + + + Copy &link to clipboard + Copiar en&lace al portapapeles + + + + Open link in this window + Abrir enlace en esta ventana + + + + &Copy text to clipboard + &Copiar texto al portapapeles + + + + Open link in &new window + Abrir enlace en una &nueva ventana + + + + &Play with + &Reproducir con + + + + Play &audio with + Reproducir &audio con + + + + &Play with %1 + &Reproducir con %1 + + + + Play &audio with %1 + Reproducir &audio con %1 + + + + Play video with a &web browser + Reproducir vídeo en un navegador &web + + + + PlayerDialog + + + Edit Player + Editar Reproductor + + + + &Name: + &Nombre: + + + + &Executable: + &Ejecutable: + + + + &Parameters: + &Parámetros: + + + + This player supports &video sites + Este reproductor incorpora soporte para webs de &vídeos + + + + This player can play &online TV + Este reproductor puede reproducir TV &online + + + + Preferred &quality: + Calidad pre&ferida: + + + + Add to &menu: + Añadir al &menú: + + + + None + Ninguno + + + + Video + Vídeo + + + + Audio + Audio + + + + Video and audio + Vídeo y audio + + + + Default + Predeterminada + + + + SiteDialog + + + Edit Site + Editar Sitio Web + + + + &Name: + &Nombre: + + + + &Home page URL: + &URL de la página principal: + + + + &Search URL: + URL de la página de &búsqueda: + + + diff -Nru smtube-20.1.0/src/translations/smtube_es.ts smtube-20.6.0/src/translations/smtube_es.ts --- smtube-20.1.0/src/translations/smtube_es.ts 2018-10-26 20:00:52.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_es.ts 2020-06-12 14:49:29.000000000 +0000 @@ -11,7 +11,7 @@ &Info - &Info + &Información @@ -26,7 +26,7 @@ YouTube%1 Browser for SMPlayer - Buscador de vídeos de YouTube%1 de SMPlayer + Navegador de YouTube%1 de SMPlayer @@ -36,7 +36,7 @@ Portable Edition - Edición Portable + Edición portable @@ -46,7 +46,7 @@ Visit our website for updates: - Visita nuestra web para conseguir actualizaciones: + Visite nuestra web para conseguir actualizaciones: @@ -56,17 +56,17 @@ You can also help to translate SMTube into your own language. - Tú también puedes ayudar a traducir el SMTube a tu propio idioma. + También puede ayudar a traducir SMTube a su propio idioma. Visit %1 and join a translation team. - Visita %1 y únete a un equipo de traducción. + Visite %1 y únase a un equipo de traducción. Click here to know the translators from the transifex teams - Pulsa aquí para conocer los traductores de los equipos de transifex + Haga clic aquí para conocer a los traductores de los equipos de Transifex @@ -77,206 +77,200 @@ BrowserWindow - + Home Inicio - + Navigation Navegación - + Zoom + - Zoom + + Ampliar - + Zoom - - Zoom - + Reducir - + &Quit &Salir - + &Navigation &Navegación - + &View &Ver - + Toolbar Barra de herramientas - + Statusbar Barra de estado - + &Settings &Configuración - + &Help &Ayuda - - &Update the YouTube code - Actualizar el código de &YouTube + + &Update YouTube playback support + Actualizar el código para reproducir vídeos de &YouTube - - About this &release - Acerca de esta &version + + &Install / Update YouTube playback support + &Instalar/actualizar el código para reproducir vídeos de YouTube - + &About SMTube &Acerca de SMTube - + Download video using an external service Descargar el vídeo usando un servicio externo - + Download Descargar - - Connection failed - Error en la conexión - - - - The video you requested needs to open a HTTPS connection. - El vídeo que has solicitado necesita abrir una conexión HTTPS. - - - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Lamentablemente el componente OpenSSL, que es necesario para ello, no se encuentra en tu sistema. - - - + No video found - No se ha encontrado el vídeo + No se ha encontrado ningún vídeo - + It wasn't possible to find the URL for this video. - No ha sido posible encontrar la URL de este vídeo. + No ha sido posible encontrar el URL de este vídeo. - - - Problems with YouTube - Problemas con YouTube + + Loading... %1% + Cargando... %1% + + + CodeDownloader - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Lamentablemente debido a cambios en YouTube, no es posible reproducir el vídeo '%1'. + + Downloading... + Descargando... - - Do you want to update the YouTube code? This may fix the problem. - ¿Quieres actualizar el código de YouTube? Esto podría solucionar el problema. + + Connecting to %1 + Conectando con %1 - - Maybe updating this application could fix the problem. - Quizás el problema se podría solucionar actualizando esta aplicación. + + The YouTube code has been installed successfully. + El código de YouTube se ha instalado correctamente. - - About this release - Acerca de esta version + + Installed version: %1 + Versión instalada: %1 - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Debido a cambios en YouTube, la versión anterior de SMTube ha dejado de funcionar. + + Success + Todo correcto - - This is a new version of SMTube, written from scratch. - Esta es una versión totalmente nueva, escrita desde cero. + + + Error + Error - - Some functionality is not available yet. - Todavía no están disponible todas las funciones. + + It's not possible to save %1. + No es posible guardar %1. - - Important: - Importante: + + An error happened while downloading the file:<br>%1 + Se ha producido un error al descargar el archivo::<br>%1 - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Si los vídeos VEVO no se reproducen, por favor usa la opción %1 del menú Ayuda. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 no se ha podido comunicar con youtube-dl. O no está instalado o no funciona correctamente. - - Update the YouTube code - Actualizar el código de YouTube + + It wasn't possible to find the URL for this video. + No se ha podido encontrar el URL de este vídeo. - - Loading... %1% - Cargando... %1% + + Maybe you need to update youtube-dl. + Quizás haya que actualizar youtube-dl. - - - CodeDownloader - Downloading... - Descargando... + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Para poder reproducir vídeos de YouTube, %1 necesita una aplicación externa llamada youtube-dl. - Connecting to %1 - Conectando con %1 + + This component needs to be updated frequently. + Hay que actualizar este componente con frecuencia. - The Youtube code has been updated successfully. - El código de Youtube se ha actualizado correctamente. + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Puede actualizarlo reinstalando SMPlayer. El instalador descargará e instalará la última versión. - Installed version: %1 - Versión instalada: %1 + + Install / Update YouTube support + Instalar/actualizar el código de YouTube - Success - Operación realizada correctamente + + %1 can download and install this application for you. + %1 puede descargar e instalar esta aplicación. - Error - Error + + It will be downloaded from the official website and installed in %1. + Se descargará de la web oficial y se instalará en %1. - An error happened writing %1 - Ha ocurrido un error al escribir en %1 + + Would you like to proceeed? + ¿Quiere continuar? - An error happened while downloading the file:<br>%1 - Ha ocurrido un error descargando el fichero:<br>%1 + + + Install YouTube support? + ¿Instalar el código de YouTube? @@ -292,17 +286,22 @@ &General - + + A&dd... + Aña&dir... + + + &Players &Reproductores - + Add Añadir - + Up Subir @@ -317,37 +316,57 @@ Calidad &preferida: - + + Sites + Sitios web + + + + &Site: + &Sitio: + + + + Edi&t... + Edi&tar... + + + + De&lete + E&liminar + + + Delete - Borrar + Eliminar - + Edit Editar - + A&dd predefined players - Añadir &reproductores predeterminados + Añadir los &reproductores predeterminados - + &Interface &Interfaz - + &Style: &Estilo: - + Font: Tipo de letra: - + C&hange... Ca&mbiar... @@ -362,12 +381,12 @@ Descargar vídeos usando un servicio &externo - + Down Bajar - + Default Predeterminado @@ -377,40 +396,12 @@ Click to select a file or folder - Pulsa para seleccionar un archivo o carpeta + Haga clic para seleccionar un archivo o una carpeta MyWebView - Open link in a web browser - Abrir enlace en un navegador web - - - Open link in new window - Abrir enlace en una nueva ventana - - - Open audio with - Abrir audio con - - - Open with %1 - Abrir con %1 - - - Open audio with %1 - Abrir audio con %1 - - - Copy link to clipboard - Copiar enlace al portapapeles - - - Save link... - Descargar enlace... - - Open in &YouTube Abrir en &YouTube @@ -418,27 +409,27 @@ &Save link... - &Descargar enlace... + &Descargar el enlace... Copy &link to clipboard - Copiar en&lace al portapapeles + Copiar el en&lace al portapapeles Open link in this window - Abrir enlace en esta ventana + Abrir el enlace en esta ventana &Copy text to clipboard - &Copiar texto al portapapeles + &Copiar el texto al portapapeles Open link in &new window - Abrir enlace en una &nueva ventana + Abrir el enlace en una &nueva ventana @@ -448,7 +439,7 @@ Play &audio with - Reproducir &audio con + Reproducir el &audio con @@ -458,24 +449,12 @@ Play &audio with %1 - Reproducir &audio con %1 - - - Play with %1 - Reproducir con %1 - - - Play audio with %1 - Reproducir audio con %1 + Reproducir el &audio con %1 Play video with a &web browser - Reproducir vídeo en un navegador &web - - - Copy text to clipboard - Copiar texto al portapapeles + Reproducir el vídeo en un navegador &web @@ -483,7 +462,7 @@ Edit Player - Editar Reproductor + Editar el reproductor @@ -503,12 +482,12 @@ This player supports &video sites - Este reproductor incorpora soporte para webs de &vídeos + Este reproductor admite sitios web de &vídeos This player can play &online TV - Este reproductor puede reproducir TV &online + Este reproductor puede repr&oducir TV en línea @@ -523,7 +502,7 @@ None - Ninguno + Desactivar @@ -546,4 +525,27 @@ Predeterminada + + SiteDialog + + + Edit Site + Editar el sitio web + + + + &Name: + &Nombre: + + + + &Home page URL: + &URL de la página principal: + + + + &Search URL: + URL de la página de &búsqueda: + + diff -Nru smtube-20.1.0/src/translations/smtube_eu.ts smtube-20.6.0/src/translations/smtube_eu.ts --- smtube-20.1.0/src/translations/smtube_eu.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_eu.ts 2020-06-03 15:32:49.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Hasiera - + Navigation Nabigazioa - + Zoom + Zooma + - + Zoom - Zooma - - + &Quit &Utzi - + &Navigation &Nabigazioa - + &View &Ikusi - + Toolbar Tresnabarra - + Statusbar Egoerabarra - + &Settings &Ezarpenak - + &Help &Laguntza - - &Update the YouTube code - &Eguneratu YouTube kodea + + &Update YouTube playback support + Eguneratu &YouTube irakurketa sostengua - - About this &release - A&rgitalpen honi buruz + + &Install / Update YouTube playback support + Ezarri / Eguneratu &YouTube irakurketa sostengua - + &About SMTube &SMTube-ri buruz - + Download video using an external service Jeitsi bideoa kanpoko zerbitzu bat erabiliz - + Download Jeitsi - - Connection failed - Elkarketa hutsegitea + + No video found + Ez da bideorik aurkitu - - The video you requested needs to open a HTTPS connection. - Eskatu duzun bideoak HTTPS elkarketa bat irekitzea behar du. + + It wasn't possible to find the URL for this video. + Ezinezkoa da bideo honen URL-a aurkitzea. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Zorigaitzez OpenSSL osagaia, horretarako beharrezkoa dena, ez dago eskuragarri zure sisteman. + + Loading... %1% + Gertatzen... %1% + + + CodeDownloader - - No video found - Ez da bideorik aurkitu + + Downloading... + Jeisten... - - It wasn't possible to find the URL for this video. - Ezinezkoa da bideo honen URL-a aurkitzea. + + Connecting to %1 + %1-ra elkarketatzen - - - Problems with YouTube - Arazoak YouTube-rekin + + The YouTube code has been installed successfully. + Youtube kodea ongi ezarri da. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Zorigaitzez YouTubeko aldaketen ondorioz, '%1' bideoa ezin da irakurri. + + Installed version: %1 + Ezarritako bertsioa: %1 - - Do you want to update the YouTube code? This may fix the problem. - Nahi duzu YouTube kodea eguneratzea? Honek arazoa konpondu dezake. + + Success + Ongi - - Maybe updating this application could fix the problem. - Badaiteke aplikazio hau eguneratuz arazoa zuzentzea. + + + Error + Akatsa - - About this release - Argitalpen honi buruz + + It's not possible to save %1. + Ezinezkoa da %1 gordetzea. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - YouTubeko aldaketen ondorioz, SMTube zaharrak ez du lanik egiten. + + An error happened while downloading the file:<br>%1 + Akats bat gertatu da agiria jeisterakoan:<br>%1 - - This is a new version of SMTube, written from scratch. - Hau SMTube bertsio berri bat da, hasieratik idatzia. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 huts egin du youtube-dl-rekin harremantzean. Edo ez dago ezarrita edo ez du zuzen lan egiten. - - Some functionality is not available yet. - Zenbait eginkizun ez daude eskuragarri oraindik. + + It wasn't possible to find the URL for this video. + Ezinezkoa da bideo honen URL-a aurkitzea. - - Important: - Garrantzitsua: + + Maybe you need to update youtube-dl. + Badaiteke youtube-dl eguneratu behar izatea. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - VEVO bideoek huts egiten badute irakurtzean, mesedez erabili '%1' aukera Laguntza menuan. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + YouTube bideoak ikusteko, %1-ek youtube-dl izeneko kanpoko aplikazio bat behar du. - - Update the YouTube code - Eguneratu YouTube kodea + + This component needs to be updated frequently. + Osagai hau maiz eguneratu behar da. - - Loading... %1% - Gertatzen... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + SMPlayer berriro ezarriz eguneratu dezakezu. Ezartzaileak azken bertsioa jeitsi eta ezarriko du. + + + + Install / Update YouTube support + Ezarri / Eguneratu YouTube sostengua + + + + %1 can download and install this application for you. + %1-ek ezin du aplikazio hau zure ordez jeitsi eta ezarri. + + + + It will be downloaded from the official website and installed in %1. + Webgune ofizialetik jeitsiko da eta %1-n ezarri. + + + + Would you like to proceeed? + Jarraitzea nahi duzu? + + + + + Install YouTube support? + Ezarri YouTube sostengua? @@ -257,17 +286,22 @@ &Orokorra - + + A&dd... + G&ehitu... + + + &Players &Irakurgailuak - + Add Gehitu - + Up Gora @@ -282,37 +316,57 @@ Hobetsitako &ontasuna: - + + Sites + Guneak + + + + &Site: + G&unea: + + + + Edi&t... + Edi&tatu... + + + + De&lete + E&zabatu + + + Delete Ezabatu - + Edit Editatu - + A&dd predefined players &Gehitu aurrezehaztutako irakurgailuak - + &Interface &Interfazea - + &Style: E&stiloa: - + Font: Hizkia: - + C&hange... Aldatu&... @@ -327,12 +381,12 @@ Jeitsi bideoak &kanpoko zerbitzu bat erabiliz - + Down Behera - + Default Berezkoa @@ -471,4 +525,27 @@ Berezkoa + + SiteDialog + + + Edit Site + Editatu Gunea + + + + &Name: + &Izena: + + + + &Home page URL: + Et&xeko orrialde URL-a: + + + + &Search URL: + &Bilatu URL-a: + + diff -Nru smtube-20.1.0/src/translations/smtube_fr.ts smtube-20.6.0/src/translations/smtube_fr.ts --- smtube-20.1.0/src/translations/smtube_fr.ts 2019-06-16 19:20:12.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_fr.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Maison - + Navigation Navigation - + Zoom + Zoom + - + Zoom - Zoom - - + &Quit &Quitter - + &Navigation &Navigation - + &View &Vue - + Toolbar Barre d'outils - + Statusbar Barre de statut - + &Settings &Paramètres - + &Help &Aide - - &Update the YouTube code - &Mise à jour du code YouTube + + &Update YouTube playback support + - - About this &release - À propos de cette &version + + &Install / Update YouTube playback support + &Installer / Mettre à jour le support de YouTube - + &About SMTube &À propos de SMTube - + Download video using an external service Télécharger la vidéo à l'aide d'un service externe - + Download Télécharger - - Connection failed - Connexion échouée + + No video found + Aucune vidéo trouvée - - The video you requested needs to open a HTTPS connection. - La vidéo demandée nécessite d'ouvrir une connexion HTTPS. + + It wasn't possible to find the URL for this video. + Impossible de trouver l'URL pour cette vidéo. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Malheureusement, le composant OpenSSL requis n'est pas disponible sur votre système. + + Loading... %1% + Chargement... %1% + + + CodeDownloader - - No video found - Aucune vidéo trouvée + + Downloading... + Téléchargement... - - It wasn't possible to find the URL for this video. - Impossible de trouver l'URL pour cette vidéo. + + Connecting to %1 + Connexion à %1 - - - Problems with YouTube - Problèmes avec YouTube + + The YouTube code has been installed successfully. + Le code YouTube a été correctement installé. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Malheureusement, à cause de changements dans Youtube, il est impossible de lire la vidéo '%1'. + + Installed version: %1 + Version installée : %1 - - Do you want to update the YouTube code? This may fix the problem. - Voulez-vous mettre à jour le code Youtube ? Cela pourrait résoudre le problème. + + Success + Succès - - Maybe updating this application could fix the problem. - Une mise à jour de l'application pourrait résoudre ce problème. + + + Error + Erreur - - About this release - À propos de cette version + + It's not possible to save %1. + Il est impossible d'enregistrer %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - A cause de changements dans YouTube, l'ancien SMTube ne fonctionne plus. + + An error happened while downloading the file:<br>%1 + Une erreur est survenue lors du téléchargement du fichier :<br>%1 - - This is a new version of SMTube, written from scratch. - Ceci est une nouvelle version de SMTube, réécrite totalement. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 n'a pas réussi à communiquer avec youtube-dl. Soit ce dernier n'est pas installé, soit il ne fonctionne pas correctement. - - Some functionality is not available yet. - Quelques fonctionnalités ne sont toujours pas disponibles. + + It wasn't possible to find the URL for this video. + Impossible de trouver l'URL pour cette vidéo. - - Important: - Important : + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Si les vidéos VEVO refusent de fonctionner, utilisez l'option %1 dans le menu d'Aide. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Afin de lire les vidéos YouTube, %1 nécessite une application externe appelée youtube-dl. - - Update the YouTube code - Mettre à jour le code YouTube + + This component needs to be updated frequently. + Ce composant doit être régulièrement mis à jour. - - Loading... %1% - Chargement... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Vous pouvez le mettre à jour en réinstallant SMPlayer. L'installateur téléchargera et installera la toute dernière version. + + + + Install / Update YouTube support + Installer / Mettre à jour le support de YouTube + + + + %1 can download and install this application for you. + %1 peut télécharger et installer cette application pour vous. + + + + It will be downloaded from the official website and installed in %1. + Il sera téléchargé depuis le site officiel et installé dans %1. + + + + Would you like to proceeed? + Souhaitez-vous continuer ? + + + + + Install YouTube support? + Installer le support de YouTube ? @@ -257,17 +286,22 @@ &Général - + + A&dd... + + + + &Players &Lecteurs - + Add Ajouter - + Up Haut @@ -282,37 +316,57 @@ &Qualité préférée : - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Suppression - + Edit Edition - + A&dd predefined players A&jout de lecteurs prédéfinis - + &Interface &Interface - + &Style: &Style : - + Font: Police : - + C&hange... C&hanger... @@ -327,12 +381,12 @@ Télécharger la vidéo à l'aide d'un service &externe - + Down Bas - + Default Défaut @@ -471,4 +525,27 @@ Défaut + + SiteDialog + + + Edit Site + + + + + &Name: + &Nom : + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_gl.ts smtube-20.6.0/src/translations/smtube_gl.ts --- smtube-20.1.0/src/translations/smtube_gl.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_gl.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Inicio - + Navigation Navegación - + Zoom + Ampliar - + Zoom - Reducir - + &Quit &Saír - + &Navigation &Navegación - + &View &Ver - + Toolbar Barra de ferramentas - + Statusbar Barra de estado - + &Settings &Axstes - + &Help A&xuda - - &Update the YouTube code - &Actualizar o código de YouTube + + &Update YouTube playback support + &Actualizar compatibilidade con YouTube - - About this &release - Sobre esta &publicación + + &Install / Update YouTube playback support + &Instalar / Actualizar compatibilidade para reprodución no YouTube - + &About SMTube &Sobre SMTube - + Download video using an external service Descargar o vídeo por medio dun servizo externo - + Download Descargar - - Connection failed - A conexión fallou + + No video found + Non se atopou ningún vídeo - - The video you requested needs to open a HTTPS connection. - O vídeo solicitado precisa abrir a conexión HTTPS. + + It wasn't possible to find the URL for this video. + Non foi posíbel atopar a URL deste vídeo. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Desafortunadamente o compoñente OpenSSL requirido non está dispoñíbel no sistema. + + Loading... %1% + Cargando... %1% + + + CodeDownloader - - No video found - Non se atopou ningún vídeo + + Downloading... + Descargando... - - It wasn't possible to find the URL for this video. - Non foi posíbel atopar a URL deste vídeo. + + Connecting to %1 + Conectándose a %1 - - - Problems with YouTube - Problemas con YouTube + + The YouTube code has been installed successfully. + O código de Youtube instalouse correctamente. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Debido a cambios en YouTube non é posíbel reproducir o vídeo %1. + + Installed version: %1 + Versión instalada: %1 - - Do you want to update the YouTube code? This may fix the problem. - Quere actualizar o código de acceso a YouTube? Esta actualización podería solucionar o problema. + + Success + Éxito - - Maybe updating this application could fix the problem. - Actualizar o programa podeŕia solucionar o problema. + + + Error + Erro - - About this release - Sobre esta versión + + It's not possible to save %1. + Non é posíbel gardar %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Debido a cambios en YouTube, a versión vella de SMTube xa non funciona. + + An error happened while downloading the file:<br>%1 + Aconteceu un erro mentres se descargaba: <br>%1 - - This is a new version of SMTube, written from scratch. - Esta é unha nova versión de SMTube escrita desde cero. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 fallou tentando a comunicación co youtube-dl. Ou ben non está instalado ou non funciona correctamente. - - Some functionality is not available yet. - Algunhas funcionalidades aínda non están dispoñíbeis. + + It wasn't possible to find the URL for this video. + Non foi posíbel atopar a URL deste vídeo. - - Important: - Importante: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Se non consigue reproducir vídeos de VEVO, use a opción «%1» do menú de axuda. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Con fin de reproducir vídeos de YouTube, %1 precisa dunha aplicación externa chamada youtube-dl. - - Update the YouTube code - Actualizar o código para YouTube + + This component needs to be updated frequently. + Este compoñente precisa actualizacións frecuentes. - - Loading... %1% - Cargando... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Pode actualizalo simplemente reinstalando o SMPlayer. O instalador descargará e instalará a última versión. + + + + Install / Update YouTube support + Instalar / Actualizar compatibilidade con YouTube + + + + %1 can download and install this application for you. + %1 pode descargar e instalar esta aplicación por vostede. + + + + It will be downloaded from the official website and installed in %1. + Será descargada do sitio web oficial e instalarase en %1. + + + + Would you like to proceeed? + Desexa continuar? + + + + + Install YouTube support? + Desexa instalar a compatibilidade con YouTube? @@ -257,17 +286,22 @@ &Xeral - + + A&dd... + Enga&dir... + + + &Players &Reprodutores - + Add Engadir - + Up Arriba @@ -282,37 +316,57 @@ &Calidade preferida: - + + Sites + Sitios + + + + &Site: + &Sitio: + + + + Edi&t... + Edi&tar... + + + + De&lete + E&liminar + + + Delete Eliminar - + Edit Editar - + A&dd predefined players Enga&dir os reprodutores predefinidos - + &Interface &Interface - + &Style: &Estilo: - + Font: Tipo de letra: - + C&hange... Ca&mbiar... @@ -327,12 +381,12 @@ Descargar os vídeos por medio dun servizo &externo - + Down Abaixo - + Default Predeterminado @@ -471,4 +525,27 @@ Predeterminado + + SiteDialog + + + Edit Site + Editar sitio + + + + &Name: + &Nome: + + + + &Home page URL: + URL da páxin&a de inicio: + + + + &Search URL: + URL de bu&sca: + + diff -Nru smtube-20.1.0/src/translations/smtube_he_IL.ts smtube-20.6.0/src/translations/smtube_he_IL.ts --- smtube-20.1.0/src/translations/smtube_he_IL.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_he_IL.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home בית - + Navigation ניווט - + Zoom + - + Zoom - - + &Quit י&ציאה - + &Navigation &ניווט - + &View &תצוגה - + Toolbar סרגל כלים - + Statusbar שורת מצב - + &Settings &הגדרות - + &Help &עזרה - - &Update the YouTube code - &עדכן קוד YouTube + + &Update YouTube playback support + - - About this &release - אודות &שחרור זה + + &Install / Update YouTube playback support + - + &About SMTube &אודות SMTube - + Download video using an external service - + Download - - Connection failed - חיבור נכשל + + No video found + לא נמצא וידאו - - The video you requested needs to open a HTTPS connection. - הוידאו אשר ביקשת צריך לפתוח חיבור HTTPS. + + It wasn't possible to find the URL for this video. + לא התאפשרה מציאת URL לוידאו זה. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - למרבה הצער, מרכיב OpenSSL, דרוש לזאת, אינו זמין בתוך המערכת שלך. + + Loading... %1% + כעת טוען... %1% + + + CodeDownloader - - No video found - לא נמצא וידאו + + Downloading... + - - It wasn't possible to find the URL for this video. - לא התאפשרה מציאת URL לוידאו זה. + + Connecting to %1 + - - - Problems with YouTube - בעיות עם YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - למרבה הצער, בשל שינויים בתוך YouTube, הוידאו '%1' לא ניתן לניגון. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - האם ברצונך לעדכן קוד YouTube? זה עשוי לתקן את הבעיה. + + Success + - - Maybe updating this application could fix the problem. - אולי עדכון יישום זה יכול לתקן את הבעיה. + + + Error + - - About this release - אודות שחרור זה + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - בשל שינויים בתוך YouTube, ‏SMTube לא עובד עוד. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - זוהי גרסא חדשה של SMTube, נכתבה מהבסיס. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - תפקודיות מסוימת אינה זמינה עדיין. + + It wasn't possible to find the URL for this video. + לא התאפשרה מציאת URL לוידאו זה. - - Important: - חשוב: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - אם סרטוני VEVO נכשליים להתנגן, אנא השתמש באפשרות %1 בתוך התפריט עזרה. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - עדכן קוד YouTube + + This component needs to be updated frequently. + - - Loading... %1% - כעת טוען... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &כללי - + + A&dd... + + + + &Players - + Add הוסף - + Up מעלה @@ -282,37 +316,57 @@ איכות &מועדפת: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete מחק - + Edit ערוך - + A&dd predefined players הוס&ף נגנים מוגדרים מראש - + &Interface - + &Style: - + Font: - + C&hange... @@ -327,12 +381,12 @@ - + Down מטה - + Default שגרתי @@ -471,4 +525,27 @@ שגרתי + + SiteDialog + + + Edit Site + + + + + &Name: + &שם: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_hr.ts smtube-20.6.0/src/translations/smtube_hr.ts --- smtube-20.1.0/src/translations/smtube_hr.ts 2019-06-16 19:20:12.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_hr.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Naslovnica - + Navigation Navigacija - + Zoom + Uvećaj + - + Zoom - Smanji - - + &Quit &Zatvori - + &Navigation &Navigacija - + &View &Prikaz - + Toolbar Alatna traka - + Statusbar Traka stanja - + &Settings &Postavke - + &Help &Pomoć - - &Update the YouTube code - Nadopuni &Youtube kôd + + &Update YouTube playback support + - - About this &release - O ovom &izdanju + + &Install / Update YouTube playback support + - + &About SMTube &O SMTubu - + Download video using an external service Preuzmite video snimku pomoću vanjske usluge - + Download Preuzimi - - Connection failed - Neuspjelo povezivanje + + No video found + Nema pronađenih video snimaka - - The video you requested needs to open a HTTPS connection. - Video snimka koju ste zatražili treba HTTPS povezivanje. + + It wasn't possible to find the URL for this video. + Nemoguće je pronaći URL za ovu video snimku. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Nažalost OpenSSL komponenta potrebna za povezivanje, nije dostupna na vašem sustavu. + + Loading... %1% + Učitavanje... %1% + + + CodeDownloader - - No video found - Nema pronađenih video snimaka + + Downloading... + - - It wasn't possible to find the URL for this video. - Nemoguće je pronaći URL za ovu video snimku. + + Connecting to %1 + - - - Problems with YouTube - Problemi s Youtubom + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Nažalost uslijed promjena na Youtube stranici, video snimka '%1' se ne može reproducirati. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Želite li nadopuniti Youtube kôd? To može popraviti problem. + + Success + - - Maybe updating this application could fix the problem. - Možda nadopuna ove aplikacije može popraviti problem. + + + Error + - - About this release - O ovom izdanju + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Uslijed promjena na YouTube stranici, stara SMTube aplikacija više ne radi. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Ovo je novo izdanje SMTube aplikacije, napisane ispočetka. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Neke funkcionalnosti još nisu dostupne. + + It wasn't possible to find the URL for this video. + Nemoguće je pronaći URL za ovu video snimku. - - Important: - Upozorenje: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Ako se VEVO video snimke ne mogu reproducirati, upotrijebite mogućnost %1 u Pomoć izborniku. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Nadopuni &Youtube kôd + + This component needs to be updated frequently. + - - Loading... %1% - Učitavanje... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Općenito - + + A&dd... + + + + &Players &Reproduktori - + Add Dodaj - + Up Gore @@ -282,37 +316,57 @@ Željena &kvaliteta: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Obriši - + Edit Uredi - + A&dd predefined players D&odaj unaprijed određen reproduktor - + &Interface &Sučelje - + &Style: &Izgled: - + Font: Slova: - + C&hange... P&romijeni... @@ -327,12 +381,12 @@ Preuzmi video snimke pomoću &vanjske usluge - + Down Dolje - + Default Zadano @@ -471,4 +525,27 @@ Zadano + + SiteDialog + + + Edit Site + + + + + &Name: + &Naziv: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_hu.ts smtube-20.6.0/src/translations/smtube_hu.ts --- smtube-20.1.0/src/translations/smtube_hu.ts 2019-06-16 19:20:12.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_hu.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Kezdőlap - + Navigation Navigáció - + Zoom + Nagyítás + - + Zoom - Kicsinyítés - - + &Quit &Kilépés - + &Navigation &Navigáció - + &View &Nézet - + Toolbar Eszköztár - + Statusbar Állapotsor - + &Settings &Beállítások - + &Help &Segítség - - &Update the YouTube code - YouTube kód &frissítése + + &Update YouTube playback support + - - About this &release - A jelenlegi &kiadásról + + &Install / Update YouTube playback support + - + &About SMTube SMTube &névjegye - + Download video using an external service Videó letöltése külső szolgáltató segítségével - + Download Letöltés - - Connection failed - Sikertelen kapcsolat + + No video found + Nincs videótalálat - - The video you requested needs to open a HTTPS connection. - Ön által kért videóhoz HTTPS kapcsolatot kell megnyitni. + + It wasn't possible to find the URL for this video. + A videó nem található a megadott URL címen. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Sajnos, az Ön rendszerén nem állnak rendelkezésre a szükséges OpenSSL komponensek. + + Loading... %1% + Betöltve... %1% + + + CodeDownloader - - No video found - Nincs videótalálat + + Downloading... + - - It wasn't possible to find the URL for this video. - A videó nem található a megadott URL címen. + + Connecting to %1 + - - - Problems with YouTube - Problémák a Youtube-bal + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Sajnos, a Youtube-on történt változások miatt, a(z) '%1' videót nem lehet lejátszani. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Szeretné frissíteni a Youtube kódot? Ez megoldhatja a problémát. + + Success + - - Maybe updating this application could fix the problem. - Lehet, hogy az alkalmazás frissítése megoldja a problémát. + + + Error + - - About this release - A jelenlegi kiadásról + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - A YouTube-on történt változások miatt, a régi SMTube már nem működik. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Az SMTube ezen verziója a nulláról lett újraírva. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Ezért néhány funkció még nem elérhető. + + It wasn't possible to find the URL for this video. + A videó nem található a megadott URL címen. - - Important: - Fontos: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Ha a VEVO videókat nem tudja lejátszani, kérem használja a Segítség menüből a %1 menüpontot. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - YouTube kód frissítése + + This component needs to be updated frequently. + - - Loading... %1% - Betöltve... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Általános - + + A&dd... + + + + &Players &Lejátszók - + Add Hozzáadás - + Up Fel @@ -282,37 +316,57 @@ Előnyben részesített &minőség: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Törlés - + Edit Szerkesztés - + A&dd predefined players Lejátszók &hozzáadása - + &Interface &Felület - + &Style: &Stílus - + Font: Betűtípus: - + C&hange... &Csere... @@ -327,12 +381,12 @@ Videó letöltése &külső szolgáltató segítségével - + Down Le - + Default Alapértelmezett @@ -471,4 +525,27 @@ Alapértelmezett + + SiteDialog + + + Edit Site + + + + + &Name: + &Név: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_it.ts smtube-20.6.0/src/translations/smtube_it.ts --- smtube-20.1.0/src/translations/smtube_it.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_it.ts 2020-06-03 15:32:49.000000000 +0000 @@ -77,171 +77,201 @@ BrowserWindow - + Home Home - + Navigation Navigazione - + Zoom + Zoom + - + Zoom - Zoom - - + &Quit &Esci - + &Navigation &Navigazione - + &View &Mostra - + Toolbar Barra strumenti - + Statusbar Barra di stato - + &Settings &Impostazioni... - + &Help &Aiuto - - &Update the YouTube code - Aggiorna &codice di YouTube + + &Update YouTube playback support + &Aggiorna supporto YouTube - - About this &release - Informazioni sulla &versione... + + &Install / Update YouTube playback support + &Installa / Aggiorna supporto YouTube - + &About SMTube Informazioni su &SMTube... - + Download video using an external service Scarica video tramite servizio esterno - + Download Download - - Connection failed - Connessione fallita + + No video found + Nessun video trovato - - The video you requested needs to open a HTTPS connection. - Il video richiesto richiede l'apertura di una connessione HTTPS. + + It wasn't possible to find the URL for this video. + Non è stato possibile trovare l'URL di questo video - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Attenzione, il componente OpenSSL richiesto non è disponibile sul tuo computer. + + Loading... %1% + Caricamento... %1% + + + CodeDownloader - - No video found - Nessun video trovato + + Downloading... + Scaricamento... - - It wasn't possible to find the URL for this video. - Non è stato possibile trovare l'URL di questo video + + Connecting to %1 + Connessione a %1 - - - Problems with YouTube - Problemi con YouTube + + The YouTube code has been installed successfully. + Il codice di YouTube è stato aggiornato con successo. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Sfortunatamente a causa delle recenti modifiche apportate a YouTube il video '%1' che si sta cercando non è più visualizzabile. + + Installed version: %1 + Versione installata: %1 - - Do you want to update the YouTube code? This may fix the problem. - Si desidera aggiornare il codice di YouTube? Questa operazione potrebbe risolvere il problema. + + Success + Successo - - Maybe updating this application could fix the problem. - Il problema potrebbe essere risolvibile aggiornando questa applicazione. + + + Error + Errore - - About this release - Informazioni sulla versione + + It's not possible to save %1. + Impossibile salvare %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - A causa delle recenti modifiche apportate a YouTube la vecchia versione di SMTube non è più funzionante. + + An error happened while downloading the file:<br>%1 + Si è verificato un errore durante lo scaricamento del file: +%1 - - This is a new version of SMTube, written from scratch. - Questa è una nuova versione parzialmente riscritta + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 non è stato in grado di comunicare, non funziona oppure non è stato installato correttamente. - - Some functionality is not available yet. - perciò alcune funzionalità devono ancora essere implementate. + + It wasn't possible to find the URL for this video. + Non è stato possibile trovare l'URL di questo video. - - Important: - Importante: + + Maybe you need to update youtube-dl. + Probabilmente è necessario aggiornare youtube-dl. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Nel caso i video da VEVO risultino inaccessibili per favore usa l'opzione %1 dal menu "Aiuto" + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Per riprodurre i video da YouTube, %1 necessita di una applicazione esterna chiamata youtube-dl. - - Update the YouTube code - Aggiorna codice di YouTube + + This component needs to be updated frequently. + Questo componente ha bisogno di essere aggiornato frequentemente. - - Loading... %1% - Caricamento... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Puoi aggiornarlo semplicemente reinstallando SMPlayer. Il programma di installazione scaricherà ed installerà la versione più recente. + + + + Install / Update YouTube support + Installa / Aggiorna supporto YouTube + + + + %1 can download and install this application for you. + %1 può scaricare ed installare questa applicazione per te. + + + + It will be downloaded from the official website and installed in %1. + Verrà scaricato dal sito ufficiale ed installato in %1. + + + + Would you like to proceeed? + Si desidera procedere? + + + + + Install YouTube support? + Installare il supporto YouTube? @@ -257,17 +287,22 @@ &Generale - + + A&dd... + A&ggiungi... + + + &Players &Lettori - + Add Aggiungi - + Up Sposta in alto @@ -282,37 +317,57 @@ &Qualità: - + + Sites + Siti + + + + &Site: + &Sito: + + + + Edi&t... + Mo&difica... + + + + De&lete + Ca&ncella + + + Delete Rimuovi - + Edit Modifica - + A&dd predefined players A&ggiungi lettori predefiniti - + &Interface &Interfaccia - + &Style: &Stile: - + Font: Font: - + C&hange... M&odifica... @@ -327,12 +382,12 @@ Scarica video tramite servizio &esterno - + Down Sposta in basso - + Default Predefinito @@ -471,4 +526,27 @@ Predefinita + + SiteDialog + + + Edit Site + Modifica Sito + + + + &Name: + &Nome: + + + + &Home page URL: + &Home page URL: + + + + &Search URL: + &Ricerca URL: + + diff -Nru smtube-20.1.0/src/translations/smtube_ja.ts smtube-20.6.0/src/translations/smtube_ja.ts --- smtube-20.1.0/src/translations/smtube_ja.ts 2018-11-10 22:16:45.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_ja.ts 2020-06-03 15:32:49.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home ホーム - + Navigation ナビゲーション - + Zoom + 拡大 - + Zoom - 縮小 - + &Quit 終了(&Q) - + &Navigation 操作(&N) - + &View 表示(&V) - + Toolbar ツール バー - + Statusbar ステータス バー - + &Settings 設定(&S) - + &Help ヘルプ(&H) - - &Update the YouTube code - YouTube のコードの更新(&U) + + &Update YouTube playback support + YouTube 再生サポートの更新(&U) - - About this &release - このリリースについて(&R) + + &Install / Update YouTube playback support + YouTube 再生サポートのインストール / 更新(&I) - + &About SMTube SMTube のバージョン情報(&A) - + Download video using an external service - 外部サービスを使用して動画をダウンロード + 外部サービスを使用して動画をダウンロードする - + Download ダウンロード - - Connection failed - 接続に失敗しました + + No video found + 動画が見つかりません - - The video you requested needs to open a HTTPS connection. - 要求した動画は HTTPS 接続を開く必要があります。 + + It wasn't possible to find the URL for this video. + この動画の URL を見つけることができませんでした。 - - Unfortunately the OpenSSL component, required for it, is not available in your system. - 残念ながらそれに必要な OpenSSL コンポーネントはお使いのシステムで利用できません。 + + Loading... %1% + 読み込み中... %1% + + + CodeDownloader - - No video found - 動画が見つかりません + + Downloading... + ダウンロードしています... - - It wasn't possible to find the URL for this video. - この動画の URL を見つけることができませんでした。 + + Connecting to %1 + %1 へ接続しています - - - Problems with YouTube - YouTube に関する問題 + + The YouTube code has been installed successfully. + YouTube のコードは正常にインストールされました。 - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - YouTube の変更のため、動画 '%1' は残念ながら再生できません。 + + Installed version: %1 + インストールされたバージョン: %1 - - Do you want to update the YouTube code? This may fix the problem. - YouTube のコードを更新しますか? これで問題を修正できる可能性があります。 + + Success + 成功 - - Maybe updating this application could fix the problem. - このアプリケーションの更新により問題が修正されるかもしれません。 + + + Error + エラー - - About this release - このリリースについて + + It's not possible to save %1. + %1 を保存できません。 - - Due to changes in YouTube, the old SMTube doesn't work anymore. - YouTube の変更のため、古い SMTube はもはや動作しません。 + + An error happened while downloading the file:<br>%1 + ファイルのダウンロード中にエラーが発生しました:<br>%1 - - This is a new version of SMTube, written from scratch. - これは一から書き直された SMTube の新しいバージョンです。 + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 は youtube-dl との通信に失敗しました。インストールされていないか正しく動作しない可能性があります。 - - Some functionality is not available yet. - 一部の機能はまだ利用できません。 + + It wasn't possible to find the URL for this video. + この動画の URL を見つけることができませんでした。 - - Important: - 重要: + + Maybe you need to update youtube-dl. + youtube-dl を更新する必要がある可能性があります。 - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - VEVO の動画の再生が失敗する場合は、[ヘルプ] メニューのオプション [%1] を使用してください。 + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + YouTube 動画を再生するのに、%1 は youtube-dl という外部アプリケーションを必要とします。 - - Update the YouTube code - YouTube のコードの更新 + + This component needs to be updated frequently. + このコンポーネントは頻繁に更新される必要があります。 - - Loading... %1% - 読み込み中... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + 単純に SMPlayer を再インストールして更新できます。インストーラーは最新バージョンをダウンロードおよびインストールします。 + + + + Install / Update YouTube support + YouTube サポートのインストール / 更新 + + + + %1 can download and install this application for you. + %1 はこのアプリケーションをダウンロードおよびインストールします。 + + + + It will be downloaded from the official website and installed in %1. + 公式 Web サイトからダウンロードされ %1 にインストールされます。 + + + + Would you like to proceeed? + 続行しますか? + + + + + Install YouTube support? + YouTube サポートをインストールしますか? @@ -257,17 +286,22 @@ 全般(&G) - + + A&dd... + 追加(&D)... + + + &Players プレーヤー(&P) - + Add 追加 - + Up 上へ @@ -282,37 +316,57 @@ 優先する品質(&Q): - + + Sites + サイト + + + + &Site: + サイト(&S): + + + + Edi&t... + 編集(&T)... + + + + De&lete + 削除(&L) + + + Delete 削除 - + Edit 編集 - + A&dd predefined players 定義済みプレーヤーの追加(&D) - + &Interface インターフェイス(&I) - + &Style: スタイル(&S): - + Font: フォント: - + C&hange... 変更(&H)... @@ -324,15 +378,15 @@ Download videos using an &external service - 外部サービスを使用して動画をダウンロード(&E) + 外部サービスを使用して動画をダウンロードする(&E) - + Down 下へ - + Default 既定 @@ -471,4 +525,27 @@ 既定 + + SiteDialog + + + Edit Site + サイトの編集 + + + + &Name: + 名前(&N): + + + + &Home page URL: + ホーム ページの URL(&H): + + + + &Search URL: + 検索 URL(&S): + + diff -Nru smtube-20.1.0/src/translations/smtube_ko.ts smtube-20.6.0/src/translations/smtube_ko.ts --- smtube-20.1.0/src/translations/smtube_ko.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_ko.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home - + Navigation 네비게이션 - + Zoom + 줌 + - + Zoom - 줌 - - + &Quit 종료(&Q) - + &Navigation 네비게이션(&N) - + &View 보기 - + Toolbar 툴바 - + Statusbar 상태바 - + &Settings 설정 - + &Help 도움말 - - &Update the YouTube code - 유투브 코드 업데이트하기 + + &Update YouTube playback support + - - About this &release - 이 버전 정보 + + &Install / Update YouTube playback support + - + &About SMTube SMTube 정보 - + Download video using an external service 외부 서비스를 이용해 비디오 다운로드하기 - + Download 다운로드 - - Connection failed - 연결에 실패했습니다 + + No video found + 비디오를 찾을 수 없습니다 - - The video you requested needs to open a HTTPS connection. - 요청한 비디오는 HTTPS 연결이 필요합니다 + + It wasn't possible to find the URL for this video. + 이 비디오의 URL을 찾지 못했습니다. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - 유감스럽게도 필요한 OpenSSL 컴포넌트가 시스템에 없습니다. + + Loading... %1% + 불러오는 중... %1% + + + CodeDownloader - - No video found - 비디오를 찾을 수 없습니다 + + Downloading... + - - It wasn't possible to find the URL for this video. - 이 비디오의 URL을 찾지 못했습니다. + + Connecting to %1 + - - - Problems with YouTube - 유투브 문제 + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - 불행히도 유투브의 변경 때문에 '%1' 비디오를 재생할 수 없습니다. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - 유투브 코드를 업데이트할까요? 문제를 해결할 수도 있습니다. + + Success + - - Maybe updating this application could fix the problem. - 이 프로그램을 업데이트해서 문제를 해결할 수 있을 것입니다. + + + Error + - - About this release - 이 버전 정보 + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - 유투브의 변경 때문에 이전의 SMTube는 더 이상 동작하지 않습니다. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - 이것은 처음부터 새로 만든 새로운 버전의 SMTube입니다. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - 몇몇 기능은 아직 사용할 수 없습니다. + + It wasn't possible to find the URL for this video. + 이 비디오의 URL을 찾지 못했습니다. - - Important: - 중요: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - VEVO 비디오 재생에 실패하면 도움말 메뉴의 %1 옵션을 사용하세요. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - 유투브 코드를 업데이트하기 + + This component needs to be updated frequently. + - - Loading... %1% - 불러오는 중... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ 일반 - + + A&dd... + + + + &Players 재생기(&P) - + Add 추가 - + Up 위로 @@ -282,37 +316,57 @@ 선호 품질: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete 삭제 - + Edit 편집 - + A&dd predefined players 미리 정의한 재생기 추가하기 - + &Interface 인터페이스(&I) - + &Style: 스타일(&S): - + Font: 글꼴: - + C&hange... 변경(&H)... @@ -327,12 +381,12 @@ 외부 서비스를 이용해 비디오를 다운로드하기(&E) - + Down 아래로 - + Default 기본값 @@ -471,4 +525,27 @@ 기본 + + SiteDialog + + + Edit Site + + + + + &Name: + 이름: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_ms.ts smtube-20.6.0/src/translations/smtube_ms.ts --- smtube-20.1.0/src/translations/smtube_ms.ts 2018-11-10 22:16:45.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_ms.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Rumah - + Navigation Navigasi - + Zoom + Zum + - + Zoom - Zum - - + &Quit &Keluar - + &Navigation &Navigasi - + &View &Lihat - + Toolbar Palang Alat - + Statusbar Palang Status - + &Settings &Tetapan - + &Help &Bantuan - - &Update the YouTube code - &Kemaskini kod YouTube + + &Update YouTube playback support + - - About this &release - Perihal k&eluaran ini + + &Install / Update YouTube playback support + - + &About SMTube Perih&al SMTube - + Download video using an external service Muat turun video menggunakan perkhidmatan luar - + Download Muat turun - - Connection failed - Sambungan gagal + + No video found + Tiada video ditemui - - The video you requested needs to open a HTTPS connection. - Video yang anda pinta perlukan sambungan HTTPS terbuka. + + It wasn't possible to find the URL for this video. + Adalah mustahil dapat mencari URL untuk video ini. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Malang bagi komponen OpenSSL, diperlukan, tetapi tidak tersedia dalam sistem anda. + + Loading... %1% + Memuatkan... %1% + + + CodeDownloader - - No video found - Tiada video ditemui + + Downloading... + - - It wasn't possible to find the URL for this video. - Adalah mustahil dapat mencari URL untuk video ini. + + Connecting to %1 + - - - Problems with YouTube - Masalah dengan YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Malangnya kerana terdapat perubahan dalam Youtube, video '%1' tidak dapat dimainkan. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Anda mahu kemaskini kod Youtube? Ia dapat membaiki masalah. + + Success + - - Maybe updating this application could fix the problem. - Dengan mengemaskini aplikasi ini dapat membaiki masalah tersebut. + + + Error + - - About this release - Perihal keluaran ini + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Oleh kerana terdapat perubahan dalam YouTube, SMTube lama tidak dapat berfungsi dengan baik lagi. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Ini merupakan versi terbaharu SMTube, yang ditulis dari awal. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Beberapa kefungsian masih belum tersedia lagi. + + It wasn't possible to find the URL for this video. + Adalah mustahil dapat mencari URL untuk video ini. - - Important: - Penting: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Jika video VEVO masih gagal dimainkan, sila guna pilihan %1 dalam menu Bantuan. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Kemaskini kod YouTube + + This component needs to be updated frequently. + - - Loading... %1% - Memuatkan... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Am - + + A&dd... + + + + &Players &Pemain - + Add Tambah - + Up Naik @@ -282,37 +316,57 @@ K&ualiti dikehendaki: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Padam - + Edit Sunting - + A&dd predefined players Ta&mbah pemain pratakrif - + &Interface Antaramuka - + &Style: &Gaya: - + Font: Fon: - + C&hange... &Ubah... @@ -327,12 +381,12 @@ Muat turun video menggunakan perkhidmatan &luar - + Down Turun - + Default Lalai @@ -471,4 +525,27 @@ Lalai + + SiteDialog + + + Edit Site + + + + + &Name: + &Nama: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_nb_NO.ts smtube-20.6.0/src/translations/smtube_nb_NO.ts --- smtube-20.1.0/src/translations/smtube_nb_NO.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_nb_NO.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Hjem - + Navigation Navigasjon - + Zoom + Zoom + - + Zoom - Zoom - - + &Quit &Avslutt - + &Navigation &Navigasjon - + &View &Vis - + Toolbar Verktøylinje - + Statusbar Statuslinje - + &Settings &Innstillinger - + &Help &Hjelp - - &Update the YouTube code - &Oppdater YouTube-koden + + &Update YouTube playback support + - - About this &release - Om denne &lanseringen + + &Install / Update YouTube playback support + - + &About SMTube &Om SMTube - + Download video using an external service Last ned videoen ved hjelp av en ekstern tjeneste - + Download Last ned - - Connection failed - Tilkobling mislyktes + + No video found + Ingen video ble funnet - - The video you requested needs to open a HTTPS connection. - Video du etterspurte behøver å åpne en HTTPS-tilkobling. + + It wasn't possible to find the URL for this video. + Det var ikke mulig å finne nettadressen til denne videoen. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Dessverre er OpenSSL-komponenten som kreves for dette, ikke tilgjengelig til ditt system. + + Loading... %1% + &Laster inn... %1% + + + CodeDownloader - - No video found - Ingen video ble funnet + + Downloading... + - - It wasn't possible to find the URL for this video. - Det var ikke mulig å finne nettadressen til denne videoen. + + Connecting to %1 + - - - Problems with YouTube - Problemer med YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - På grunn av endringer i YouTube-siden, kan '%1'-videoen dessverre ikke spilles av. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Vil du oppdatere YouTube-koden? Dette kan løse problemet. + + Success + - - Maybe updating this application could fix the problem. - Kanskje kan en oppdatering av programmet løse problemet. + + + Error + - - About this release - Om denne lanseringen + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - På grunn av endringer i YouTube, fungerer ikke den gamle SMTube-versjonen lenger. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Dette er en ny versjon av SMTube, laget helt fra bunnen av. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Noen funksjoner er ikke tilgjengelige ennå. + + It wasn't possible to find the URL for this video. + Det var ikke mulig å finne nettadressen til denne videoen. - - Important: - Viktig: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Hvis avspilling av VEVO-videoer mislykkes, vennligst bruk alternativet "%1" i Hjelp-menyen + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Oppdater YouTube-koden + + This component needs to be updated frequently. + - - Loading... %1% - &Laster inn... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Generelt - + + A&dd... + + + + &Players &Avspillere - + Add Legg til - + Up Opp @@ -282,37 +316,57 @@ Foretrukket &kvalitet: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Slett - + Edit Rediger - + A&dd predefined players L&egg til forhåndsdefinerte avspillere - + &Interface &Grensesnitt - + &Style: &Stil: - + Font: Font: - + C&hange... E&ndre... @@ -327,12 +381,12 @@ Last ned videoener ved hjelp av en &ekstern tjeneste - + Down Ned - + Default Standard @@ -471,4 +525,27 @@ Standard + + SiteDialog + + + Edit Site + + + + + &Name: + &Navn: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_nn_NO.ts smtube-20.6.0/src/translations/smtube_nn_NO.ts --- smtube-20.1.0/src/translations/smtube_nn_NO.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_nn_NO.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Heim - + Navigation Navigering - + Zoom + Zoom + - + Zoom - Zoom - - + &Quit &Avslutt - + &Navigation &Navigasjon - + &View &Vising - + Toolbar Verktøylinje - + Statusbar Statusline - + &Settings &Innstillingar - + &Help &Hjelp - - &Update the YouTube code - &Oppdater YouTube-koden + + &Update YouTube playback support + - - About this &release - Om denne &utgjevinga + + &Install / Update YouTube playback support + - + &About SMTube &Om SMTube - + Download video using an external service Last ned video med ei ekstern teneste - + Download Last ned - - Connection failed - Mislukka tilkopling + + No video found + Fann ingen video - - The video you requested needs to open a HTTPS connection. - Videoen du spør etter må opna ei HTTPS-tilkopling + + It wasn't possible to find the URL for this video. + Ein kunne ikkje finna URL-en for denne videoen. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - OpenSSL-komponenten du ba om er diverre ikkje tilgjengeleg for ditt system. + + Loading... %1% + Lastar… %1% + + + CodeDownloader - - No video found - Fann ingen video + + Downloading... + - - It wasn't possible to find the URL for this video. - Ein kunne ikkje finna URL-en for denne videoen. + + Connecting to %1 + - - - Problems with YouTube - Problem med YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - På grunn av endringar i YouTube, kan diverre ikkje videoen '%1' spelast. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Vil du oppdatera YouTub-kodeken? Dette kan retta eit problem. + + Success + - - Maybe updating this application could fix the problem. - Kanskje oppdatering av denne appen kan fiksa problemet. + + + Error + - - About this release - Om denne utgjevinga + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - På grunn av endringar i YouTube, vil gammal SMTube ikkje lenger fungera. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Dette er ein ny versjon av SMTube, skriven frå botnen av. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Nokre funksjonar er ikkje tilgjengelege enno. + + It wasn't possible to find the URL for this video. + Ein kunne ikkje finna URL-en for denne videoen. - - Important: - Viktig: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Om VEVO-videoar ikkje spelar av, ver snill og bruk valet %1 i Hjelp-menyen. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Oppdater YouTube-koden + + This component needs to be updated frequently. + - - Loading... %1% - Lastar… %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Generelt - + + A&dd... + + + + &Players &Spelarar - + Add Legg til - + Up Opp @@ -282,37 +316,57 @@ Føretrekt &kvalitet: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Slett - + Edit Rediger - + A&dd predefined players L&egg til førehandsbestemte spelarar - + &Interface &Grensesnitt - + &Style: &Stil: - + Font: Skrift: - + C&hange... E&ndre @@ -327,12 +381,12 @@ Last ned video med ei &ekstern teneste - + Down Ned - + Default Standard @@ -471,4 +525,27 @@ Standard + + SiteDialog + + + Edit Site + + + + + &Name: + &Namn: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_pl.ts smtube-20.6.0/src/translations/smtube_pl.ts --- smtube-20.1.0/src/translations/smtube_pl.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_pl.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Strona główna - + Navigation Nawigacja - + Zoom + Powiększenie + - + Zoom - Powiększenie - - + &Quit &Wyjdź - + &Navigation &Nawigacja - + &View &Widok - + Toolbar Pasek narzędzi - + Statusbar Pasek stanu - + &Settings &Ustawienia - + &Help &Pomoc - - &Update the YouTube code - &Uaktualnij kod YouTube + + &Update YouTube playback support + - - About this &release - Informacje o &wydaniu + + &Install / Update YouTube playback support + - + &About SMTube &O SMTube - + Download video using an external service Pobierz film za pomocą usługi zewnętrznej - + Download Pobierz - - Connection failed - Połączenie nie powiodło się + + No video found + Nie znaleziono żadnego wideo - - The video you requested needs to open a HTTPS connection. - Wideo, które chcesz obejrzeć potrzebuje nawiązania połączenia HTTPS. + + It wasn't possible to find the URL for this video. + Nie było możliwe znalezienie URL dla tego wideo. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Niestety potrzebny do tego komponent OpenSSL, nie jest dostępny w twoim systemie. + + Loading... %1% + Ładowanie... %1% + + + CodeDownloader - - No video found - Nie znaleziono żadnego wideo + + Downloading... + - - It wasn't possible to find the URL for this video. - Nie było możliwe znalezienie URL dla tego wideo. + + Connecting to %1 + - - - Problems with YouTube - Problemy z YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Niestety z powodu zmian w YouTube, wideo '%1' nie może zostać odtworzone. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Czy chcesz uaktualnić kod YouTube? To może naprawić ten problem. + + Success + - - Maybe updating this application could fix the problem. - Być może aktualizacja tego programu rozwiąże problem. + + + Error + - - About this release - O tym wydaniu + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Z powodu zmian na YouTube, stara wersja SMTube już nie działa. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - To jest nowa wersja SMTube, napisana od zera. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Niektóre funkcjonalności nie są jeszcze dostępne. + + It wasn't possible to find the URL for this video. + Nie było możliwe znalezienie URL dla tego wideo. - - Important: - Ważne: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Jeśli wideo z VEVO nie odtwarza się, należy użyć opcji %1 w menu Pomoc. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Zaktualizuj kod YouTube + + This component needs to be updated frequently. + - - Loading... %1% - Ładowanie... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ O&gólne - + + A&dd... + + + + &Players &Odtwarzacze - + Add Dodaj - + Up Do góry @@ -282,37 +316,57 @@ Preferowana jakość: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Usuń - + Edit Edytuj - + A&dd predefined players &Dodaj predefiniowane odtwarzacze - + &Interface &Interfejs - + &Style: &Styl: - + Font: Czcionka: - + C&hange... Zmień... (&h) @@ -327,12 +381,12 @@ Pobierz film za pomocą usługi &zewnętrznej - + Down W dół - + Default Domyślnie @@ -471,4 +525,27 @@ Domyślnie + + SiteDialog + + + Edit Site + + + + + &Name: + &Nazwa: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_pt_BR.ts smtube-20.6.0/src/translations/smtube_pt_BR.ts --- smtube-20.1.0/src/translations/smtube_pt_BR.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_pt_BR.ts 2020-06-03 15:32:49.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Início - + Navigation Navegação - + Zoom + Zoom + - + Zoom - Zoom - - + &Quit &Sair - + &Navigation &Navegação - + &View &Ver - + Toolbar Barra de ferramentas - + Statusbar Barra de status - + &Settings &Configurações - + &Help &Ajuda - - &Update the YouTube code - &Atualize o código do YouTube + + &Update YouTube playback support + At&ualizar o suporte à reprodução do YouTube - - About this &release - Sobre essa &versão + + &Install / Update YouTube playback support + &Instalar / Atualizar o suporte à reprodução do YouTube - + &About SMTube &Sobre o YouTube - + Download video using an external service Baixar vídeo usando um serviço externo - + Download Baixar - - Connection failed - Falha na conexão + + No video found + Nenhum vídeo encontrado - - The video you requested needs to open a HTTPS connection. - O vídeo requisitado precisa abrir uma conexão HTTPS. + + It wasn't possible to find the URL for this video. + Não foi possível encontrar a URL desse vídeo. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Infelizmente, o componente OpenSSL, necessário para a ação, não está disponível em seu sistema. + + Loading... %1% + Carregando... %1% + + + CodeDownloader - - No video found - Nenhum vídeo encontrado + + Downloading... + Baixando... - - It wasn't possible to find the URL for this video. - Não foi possível encontrar a URL desse vídeo. + + Connecting to %1 + Conectando-se a %1 - - - Problems with YouTube - Problemas com o YouTube + + The YouTube code has been installed successfully. + O código do YouTube foi instalado com sucesso. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Infelizmente, devido a mudanças no YouTube, o vídeo '%1' não pode ser reproduzido. + + Installed version: %1 + Versão instalada: %1 - - Do you want to update the YouTube code? This may fix the problem. - Deseja atualizar o código do YouTube? Isso pode resolver o problema. + + Success + Sucesso - - Maybe updating this application could fix the problem. - Atualizar o aplicativo pode resolver o problema. + + + Error + Erro - - About this release - Sobre essa versão + + It's not possible to save %1. + Não é possível salvar %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Devido a mudanças no YouTube, o antigo SMTube não funciona mais. + + An error happened while downloading the file:<br>%1 + Ocorreu um erro durante o download do arquivo:<br>%1 - - This is a new version of SMTube, written from scratch. - Essa é uma nova versão do SMTube, desenvolvido do zero. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 não conseguiu se comunicar com o youtube-dl. Ele não está instalado ou não está funcionando corretamente. - - Some functionality is not available yet. - Algumas funcionalidades ainda não estão disponíveis. + + It wasn't possible to find the URL for this video. + Não foi possível encontrar a URL desse vídeo. - - Important: - Importante: + + Maybe you need to update youtube-dl. + Talvez você precise atualizar o youtube-dl. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - caso a reprodução dos vídeos do VEVO falhe, por favor use a opção %1 no menu Ajuda. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Para reproduzir vídeos do YouTube, %1 precisa de um programa externo chamado youtube-dl. - - Update the YouTube code - Atualize o código do YouTube + + This component needs to be updated frequently. + Esse componente precisa ser atualizado frequentemente. - - Loading... %1% - Carregando... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Você pode atualizá-lo reinstalando o SMPlayer. O instalador baixará e instalará a última versão. + + + + Install / Update YouTube support + Instalar / Atualizar o suporte ao YouTube + + + + %1 can download and install this application for you. + %1 pode baixar e instalar esse programa para você. + + + + It will be downloaded from the official website and installed in %1. + Será baixado do site oficial e instalado em %1. + + + + Would you like to proceeed? + Deseja prosseguir? + + + + + Install YouTube support? + Instalar o suporte ao YouTube? @@ -257,17 +286,22 @@ &Geral - + + A&dd... + A&dicionar... + + + &Players Re&produtores - + Add Adicionar - + Up Acima @@ -282,37 +316,57 @@ &Qualidade preferida: - + + Sites + Sites + + + + &Site: + &Site: + + + + Edi&t... + Edi&tar... + + + + De&lete + De&letar + + + Delete Apagar - + Edit Editar - + A&dd predefined players A&dicionar players predefinidos - + &Interface &Interface - + &Style: E&stilo: - + Font: Fonte: - + C&hange... &Alterar... @@ -327,12 +381,12 @@ Baixar vídeos usando um serviço &externo - + Down Abaixo - + Default Padrão @@ -471,4 +525,27 @@ Padrão + + SiteDialog + + + Edit Site + Editar site + + + + &Name: + &Nome: + + + + &Home page URL: + &URL da página principal: + + + + &Search URL: + Bu&scar URL: + + diff -Nru smtube-20.1.0/src/translations/smtube_pt.ts smtube-20.6.0/src/translations/smtube_pt.ts --- smtube-20.1.0/src/translations/smtube_pt.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_pt.ts 2020-06-03 15:32:49.000000000 +0000 @@ -6,7 +6,7 @@ About... - Sobre... + Acerca... @@ -77,171 +77,200 @@ BrowserWindow - + Home Página inicial - + Navigation Navegação - + Zoom + Ampliar - + Zoom - Reduzir - + &Quit &Sair - + &Navigation &Navegação - + &View &Ver - + Toolbar Barra de ferramentas - + Statusbar Barra de estado - + &Settings Definiçõe&s - + &Help Aju&da - - &Update the YouTube code - At&ualizar o código YouTube + + &Update YouTube playback support + Atualizar suporte ao Yo&uTube - - About this &release - Sob&re esta versão + + &Install / Update YouTube playback support + &Instalar/Atualizar suporte ao YouTube - + &About SMTube - Sobre o &SMTube + Acerca de &SMTube - + Download video using an external service Descarregar vídeo utilizando um serviço externo - + Download Descarregar - - Connection failed - Falha de ligação + + No video found + Não encontrado - - The video you requested needs to open a HTTPS connection. - O vídeo solicitado requer uma ligação HTTPS. + + It wasn't possible to find the URL for this video. + Não foi possível encontrar o URL deste vídeo. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Infelizmente, o componente necessário (OpenSSL) não está disponível no seu sistema. + + Loading... %1% + A carregar...%1% + + + CodeDownloader - - No video found - Não encontrado + + Downloading... + A descarregar... - - It wasn't possible to find the URL for this video. - Não foi possível encontrar o URL deste vídeo. + + Connecting to %1 + Ligação a %1 - - - Problems with YouTube - Problemas com o YouTube + + The YouTube code has been installed successfully. + O código YouTube foi instalado com sucesso. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Devido a alterações ao YouTube, o vídeo "%1" não pode ser reproduzido. + + Installed version: %1 + Versão instalada: %1 - - Do you want to update the YouTube code? This may fix the problem. - Gostaria de atualizar o código YouTube? Poderá corrigir o erro. + + Success + Sucesso - - Maybe updating this application could fix the problem. - A atualização da aplicação pode ajudar a corrigir o erro. + + + Error + Erro - - About this release - Sobre esta versão + + It's not possible to save %1. + Não é possível guardar %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Devido às alterações ao YouTube, o SMTube antigo já não funciona. + + An error happened while downloading the file:<br>%1 + Ocorreu um erro ao descarregar o ficheiro:<br>%1 - - This is a new version of SMTube, written from scratch. - Esta é uma nova versão do SMTube, desenvolvida de raiz. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 não conseguiu comunicar com youtube-dl. Ou não está instalada ou não está a funcionar corretamente. - - Some functionality is not available yet. - Algumas funções ainda não estão disponíveis. + + It wasn't possible to find the URL for this video. + Não foi possível encontrar o URL para este vídeo. - - Important: - Importante: + + Maybe you need to update youtube-dl. + Pode ser necessário atualizar o componente youtube-dl. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Se não conseguir reproduzir vídeos VEVO, utilize a opção %1 no menu de ajuda. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Para poder reproduzir vídeos do YouTube, %1 necessita de uma aplicação externa com o nome youtube-dl. - - Update the YouTube code - Atualizar o código Youtube + + This component needs to be updated frequently. + Este componente tem que ser atualizado frequentemente. - - Loading... %1% - A carregar...%1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Pode atualizar o componente se reinstalar SMPlayer. O instalador irá descarregar e instalar a versão mais recente. + + + + Install / Update YouTube support + Instalar/Atualizar suporte ao YouTube + + + + %1 can download and install this application for you. + %1 pode descarregar e instalar a aplicação por si. + + + + It will be downloaded from the official website and installed in %1. + Será descarregada do site oficial e instalada em %1. + + + + Would you like to proceeed? + Como deseja proceder? + + + + + Install YouTube support? + Instalar suporte a YouTube? @@ -257,17 +286,22 @@ &Geral - + + A&dd... + A&dicionar... + + + &Players Re&produtores - + Add Adicionar - + Up Cima @@ -282,37 +316,57 @@ &Qualidade preferencial: - + + Sites + Sites + + + + &Site: + &Site: + + + + Edi&t... + Edi&tar... + + + + De&lete + E&liminar + + + Delete Apagar - + Edit Editar - + A&dd predefined players A&dicionar reprodutores personalizados - + &Interface &Interface - + &Style: E&stilo: - + Font: Tipo de letra: - + C&hange... Al&terar... @@ -327,12 +381,12 @@ Descarregar vídeos utilizando um serviço &externo - + Down Baixo - + Default Padrão @@ -471,4 +525,27 @@ Padrão + + SiteDialog + + + Edit Site + Editar site + + + + &Name: + &Nome: + + + + &Home page URL: + &URL: + + + + &Search URL: + URL de pe&squisa: + + diff -Nru smtube-20.1.0/src/translations/smtube_ru.ts smtube-20.6.0/src/translations/smtube_ru.ts --- smtube-20.1.0/src/translations/smtube_ru.ts 2020-01-20 22:13:08.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_ru.ts 2020-06-03 15:32:49.000000000 +0000 @@ -1,4 +1,6 @@ - + + + About @@ -75,171 +77,200 @@ BrowserWindow - + Home Домой - + Navigation Навигация - + Zoom + Масштаб + - + Zoom - Масштаб – - + &Quit В&ыход - + &Navigation &Навигация - + &View &Вид - + Toolbar Панель инструментов - + Statusbar Панель состояния - + &Settings &Настройки - + &Help Сп&равка - - &Update the YouTube code - &Обновить код YouTube + + &Update YouTube playback support + &Обновить поддержку воспроизведения YouTube - - About this &release - О данном &выпуске + + &Install / Update YouTube playback support + &Установить / обновить поддержку воспроизведения YouTube - + &About SMTube &Об SMTube - + Download video using an external service Загрузить видео, используя внешний сервис - + Download Загрузить - - Connection failed - Соединение прервано + + No video found + Видео не найдено - - The video you requested needs to open a HTTPS connection. - Запрашиваемое вами видео требует HTTPS-соединения. + + It wasn't possible to find the URL for this video. + Невозможно найти ссылку для данного видео. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - К сожалению, необходимый для этого компонент OpenSSL не доступен в вашей системе. + + Loading... %1% + Загрузка... %1% + + + CodeDownloader - - No video found - Видео не найдено + + Downloading... + Скачивание… - - It wasn't possible to find the URL for this video. - Невозможно найти ссылку для данного видео. + + Connecting to %1 + Соединение с %1 - - - Problems with YouTube - Проблемы с YouTube + + The YouTube code has been installed successfully. + Код YouTube был успешно установлен. - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - К сожалению, из-за изменений на YouTube видео '%1' не может быть проиграно. + + Installed version: %1 + Установленная версия: %1 - - Do you want to update the YouTube code? This may fix the problem. - Хотите обновить код YouTube? Это может решить проблему. + + Success + Успешно - - Maybe updating this application could fix the problem. - Возможно обновление данного приложения позволит решить проблему. + + + Error + Ошибка - - About this release - О данном выпуске + + It's not possible to save %1. + Не удалось сохранить %1. - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Старый SMTube больше не работает из-за изменений на YouTube. + + An error happened while downloading the file:<br>%1 + Возникла ошибка при загрузке файла: <br> %1 - - This is a new version of SMTube, written from scratch. - Это новая версия SMTube, написанная с нуля. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 не смог связаться с youtube-dl. Он либо не установлен, либо не работает должным образом. - - Some functionality is not available yet. - Некоторые функции пока не доступны. + + It wasn't possible to find the URL for this video. + Не удалось найти ссылку для данного видео. - - Important: - Важно: + + Maybe you need to update youtube-dl. + Возможно вам стоит обновить youtube-dl. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Если VEVO видео не хочет проигрываться, пожалуйста, используйте пункт %1 в меню Справки. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + Чтобы проигрывать видео с YouTube, %1 требуется внешнее приложение youtube-dl. - - Update the YouTube code - Обновить код YouTube + + This component needs to be updated frequently. + Этот компонент требует частых обновлений. - - Loading... %1% - Загрузка... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + Вы можете обновить его с помощью переустановки SMPlayer. Установщик загрузит и установит самую последнюю версию. + + + + Install / Update YouTube support + Установить / обновить поддержку YouTube + + + + %1 can download and install this application for you. + %1 может загрузить и установить это приложение для вас. + + + + It will be downloaded from the official website and installed in %1. + Оно загрузится с официального сайта и установится в %1. + + + + Would you like to proceeed? + Хотите продолжить? + + + + + Install YouTube support? + Установить поддержку YouTube? @@ -255,17 +286,22 @@ &Основные - + + A&dd... + &Добавить… + + + &Players &Плееры - + Add Добавить - + Up Выше @@ -280,37 +316,57 @@ Предпочтительное &качество: - + + Sites + Сайты + + + + &Site: + &Сайт: + + + + Edi&t... + &Правка… + + + + De&lete + &Удалить + + + Delete Удалить - + Edit Правка - + A&dd predefined players &Добавить преднастроенные плееры - + &Interface &Внешний вид - + &Style: &Стиль: - + Font: Шрифт: - + C&hange... Из&менить... @@ -325,12 +381,12 @@ Загрузить видео, используя &внешний сервис - + Down Вниз - + Default По умолчанию @@ -469,4 +525,27 @@ По умолчанию - \ No newline at end of file + + SiteDialog + + + Edit Site + Править сайт + + + + &Name: + &Имя: + + + + &Home page URL: + &Адрес домашней страницы: + + + + &Search URL: + &Адрес поиска: + + + diff -Nru smtube-20.1.0/src/translations/smtube_sq.ts smtube-20.6.0/src/translations/smtube_sq.ts --- smtube-20.1.0/src/translations/smtube_sq.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_sq.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home - + Navigation - + Zoom + - + Zoom - - + &Quit - + &Navigation - + &View - + Toolbar &Toolbari - + Statusbar Statusbar - + &Settings - + &Help &Ndihme - - &Update the YouTube code - Azhorno codin e &Youtube + + &Update YouTube playback support + - - About this &release + + &Install / Update YouTube playback support - + &About SMTube Reth SMTube - + Download video using an external service - + Download - - Connection failed - Lidhja deshtoj + + No video found + Nuk u gjet asnje video - - The video you requested needs to open a HTTPS connection. + + It wasn't possible to find the URL for this video. - - Unfortunately the OpenSSL component, required for it, is not available in your system. + + Loading... %1% + Duke karikuar... %1% + + + + CodeDownloader + + + Downloading... - - No video found - Nuk u gjet asnje video + + Connecting to %1 + - - It wasn't possible to find the URL for this video. + + The YouTube code has been installed successfully. - - - Problems with YouTube - Probleme me Youtube + + Installed version: %1 + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. + + Success - - Do you want to update the YouTube code? This may fix the problem. + + + Error - - Maybe updating this application could fix the problem. - Ndoshta duke bërë update-in e aplikacionit mund të zgjidhi problemin. + + It's not possible to save %1. + - - About this release + + An error happened while downloading the file:<br>%1 - - Due to changes in YouTube, the old SMTube doesn't work anymore. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. - - This is a new version of SMTube, written from scratch. + + It wasn't possible to find the URL for this video. - - Some functionality is not available yet. + + Maybe you need to update youtube-dl. - - Important: + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. - - If the VEVO videos fail to play, please use the option %1 in the Help menu. + + This component needs to be updated frequently. - - Update the YouTube code - Azhorno codin e &Youtube + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + - - Loading... %1% - Duke karikuar... %1% + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Gjenerale - + + A&dd... + + + + &Players - + Add Shto... - + Up Siper @@ -282,37 +316,57 @@ - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Fshij - + Edit Modifiko - + A&dd predefined players - + &Interface - + &Style: - + Font: - + C&hange... @@ -327,12 +381,12 @@ - + Down - + Default @@ -471,4 +525,27 @@ + + SiteDialog + + + Edit Site + + + + + &Name: + Emri + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_sr.ts smtube-20.6.0/src/translations/smtube_sr.ts --- smtube-20.1.0/src/translations/smtube_sr.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_sr.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Почетна - + Navigation Навигација - + Zoom + Зум + - + Zoom - Зум - - + &Quit &Изађи - + &Navigation &Навигација - + &View &Приказ - + Toolbar Трака алатки - + Statusbar Трака стања - + &Settings По&ставке - + &Help &Помоћ - - &Update the YouTube code - &Ажурирајте Јутјуб код + + &Update YouTube playback support + - - About this &release - О овом &издању + + &Install / Update YouTube playback support + - + &About SMTube &О СМТјубу - + Download video using an external service Преузми видео помоћу спољног сервиса - + Download Преузимање - - Connection failed - Неуспело повезивање + + No video found + Нема видеа - - The video you requested needs to open a HTTPS connection. - Видео захтева отварање ХТТПС везе. + + It wasn't possible to find the URL for this video. + Није било могуће наћи УРЛ за овај видео. + + + + Loading... %1% + Учитавам... %1% + + + CodeDownloader - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Нажалост, ОпенССЛ компонента, која је неопходна, није доступна на вашем систему. + + Downloading... + - - No video found - Нема видеа + + Connecting to %1 + - - It wasn't possible to find the URL for this video. - Није било могуће наћи УРЛ за овај видео. + + The YouTube code has been installed successfully. + + + + + Installed version: %1 + - - - Problems with YouTube - Проблеми са Јутјубом + + Success + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Нажалост, због промена на Јутјубу, видео „%1“ не може бити репродукован. + + + Error + - - Do you want to update the YouTube code? This may fix the problem. - Да ли желите да ажурирате Јутјуб код? Ово може решити проблем. + + It's not possible to save %1. + + + + + An error happened while downloading the file:<br>%1 + + + + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Maybe updating this application could fix the problem. - Можда ажурирање овог програма реши проблем. + + It wasn't possible to find the URL for this video. + Није било могуће наћи УРЛ за овај видео. - - About this release - О овом издању + + Maybe you need to update youtube-dl. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Због промена на Јутјубу, стари СМТјуб више не ради. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - This is a new version of SMTube, written from scratch. - Ово је нова верзија СМТјуба, написана испочетка. + + This component needs to be updated frequently. + - - Some functionality is not available yet. - Неке могућности још нису доступне. + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + - - Important: - Важно: + + Install / Update YouTube support + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Ако VEVO видео не ради, користите %1 опцију у менију Помоћ. + + %1 can download and install this application for you. + - - Update the YouTube code - Ажурирај Јутјуб код + + It will be downloaded from the official website and installed in %1. + - - Loading... %1% - Учитавам... %1% + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Опште - + + A&dd... + + + + &Players &Плејери - + Add Додај - + Up Горе @@ -282,37 +316,57 @@ Жељени &квалитет: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Обриши - + Edit Уреди - + A&dd predefined players &Додај предефинисане плејере - + &Interface &Сучеље - + &Style: И&зглед: - + Font: Фонт: - + C&hange... Из&мени... @@ -327,12 +381,12 @@ Преузми видео помоћу &спољног сервиса - + Down Доле - + Default Подразумевано @@ -350,17 +404,17 @@ Open in &YouTube - + Отвори на Јутјубу &Save link... - + &Сачувај везу... Copy &link to clipboard - + Копирај &везу у клипборд @@ -370,37 +424,37 @@ &Copy text to clipboard - + &Копирај текст у клипборд Open link in &new window - + Отвори везу у &новом прозору &Play with - + &Пусти помоћу Play &audio with - + Пусти &аудио помоћу &Play with %1 - + &Пусти помоћу %1 Play &audio with %1 - + Пусти &аудио помоћу %1 Play video with a &web browser - + Пусти &видео у прегледачу @@ -471,4 +525,27 @@ Подразумевано + + SiteDialog + + + Edit Site + + + + + &Name: + &Назив: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_tr.ts smtube-20.6.0/src/translations/smtube_tr.ts --- smtube-20.1.0/src/translations/smtube_tr.ts 2020-01-20 22:13:08.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_tr.ts 2020-06-01 15:29:55.000000000 +0000 @@ -1,4 +1,6 @@ - + + + About @@ -75,171 +77,200 @@ BrowserWindow - + Home Anasayfa - + Navigation Gezinti - + Zoom + Yakınlaştır + - + Zoom - Uzaklaştır - - + &Quit &Kapat - + &Navigation &Gezinti - + &View &Gösterim - + Toolbar Araç çubuğu - + Statusbar Durum çubuğu - + &Settings &Ayarlar - + &Help &Yardım - - &Update the YouTube code - &Youtube kodlarını güncelle + + &Update YouTube playback support + - - About this &release - Bu &sürüm hakkında + + &Install / Update YouTube playback support + - + &About SMTube &SMPlayer Hakkında - + Download video using an external service Videoyu harici servisleri kullanarak indir - + Download İndir - - Connection failed - Bağlantı başarısız oldu + + No video found + Video bulunamadı - - The video you requested needs to open a HTTPS connection. - İstenen video HTTPS bağlantı açması gerekiyor. + + It wasn't possible to find the URL for this video. + Video bağlantısı bulunamadı - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Ne yazık ki openssl bileşeni gerekli bunun için sisteminizde mevcut değil. + + Loading... %1% + Yükleniyor.. %1% + + + CodeDownloader - - No video found - Video bulunamadı + + Downloading... + - - It wasn't possible to find the URL for this video. - Video bağlantısı bulunamadı + + Connecting to %1 + - - - Problems with YouTube - YouTube problemi + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - Ne yazık ki YouTube sayfasındaki değişiklik nedeniyle, video '%1' oynatılamadı. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - YouTube kodlarını güncellemek istiyor musun? Bu bazı problemleri çözecek. + + Success + - - Maybe updating this application could fix the problem. - Belki uygulamayı güncellemek sorunu çözebilir. + + + Error + - - About this release - Bu sürüm hakkında + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Ne yazık ki YouTube sayfasındaki değişiklik nedeniyle, eski SMTube doğru çalışamıyor. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Bu yeni SMTube sürümü sıfırdan yazılmıştır. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Bazı fonksiyonlar mevcut değil. + + It wasn't possible to find the URL for this video. + Video bağlantısı bulunamadı - - Important: - Önemli: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Eğer VEVO videolarını oynatamıyorsanız, %1 seçeneğini Yardım menüsünden bulun. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - YouTube kodlarını güncelle + + This component needs to be updated frequently. + - - Loading... %1% - Yükleniyor.. %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -255,17 +286,22 @@ &Genel - + + A&dd... + + + + &Players &Oynatıcılar - + Add Ekle - + Up Yukarı @@ -280,37 +316,57 @@ Tercih edilen &kalite: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Sil - + Edit Düzenle - + A&dd predefined players &Önceden ayarlı oynatıcı ekle - + &Interface &Arayüz - + &Style: &Stil: - + Font: Yazı tipi: - + C&hange... De&ğiştir... @@ -325,12 +381,12 @@ Videoyu &harici servisleri kullanarak indir - + Down Aşağı - + Default Öntanımlı @@ -383,7 +439,7 @@ Play &audio with - + @@ -469,4 +525,27 @@ Varsayılan - \ No newline at end of file + + SiteDialog + + + Edit Site + + + + + &Name: + &İsim: + + + + &Home page URL: + + + + + &Search URL: + + + + diff -Nru smtube-20.1.0/src/translations/smtube_uk.ts smtube-20.6.0/src/translations/smtube_uk.ts --- smtube-20.1.0/src/translations/smtube_uk.ts 2018-11-10 22:16:45.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_uk.ts 2020-06-01 15:29:55.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home Домівка - + Navigation Навігація - + Zoom + Збільшення + - + Zoom - Збільшення – - + &Quit &Вихід - + &Navigation &Навігація - + &View &Огляд - + Toolbar Панель знарядь - + Statusbar Панель стану - + &Settings &Налаштування - + &Help &Довідка - - &Update the YouTube code - &Оновити код YouTube + + &Update YouTube playback support + - - About this &release - Про цей &випуск + + &Install / Update YouTube playback support + - + &About SMTube &Про SMTube - + Download video using an external service Завантажити з використанням сторонньої служби - + Download Завантажити - - Connection failed - З’єднання перервано + + No video found + Відео не знайдено - - The video you requested needs to open a HTTPS connection. - Запитуване Вами відео потребує HTTPS-з’єднання. + + It wasn't possible to find the URL for this video. + Неможливо знайти посилання для цього відео. - - Unfortunately the OpenSSL component, required for it, is not available in your system. - Нажаль, потрібна для цього компонента OpenSSL не доступна у Вашій системі. + + Loading... %1% + Завантаження... %1% + + + CodeDownloader - - No video found - Відео не знайдено + + Downloading... + - - It wasn't possible to find the URL for this video. - Неможливо знайти посилання для цього відео. + + Connecting to %1 + - - - Problems with YouTube - Проблеми з YouTube + + The YouTube code has been installed successfully. + - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - На жаль, через зміни на YouTube відео '%1' не може бути відтворено. + + Installed version: %1 + - - Do you want to update the YouTube code? This may fix the problem. - Бажаєте оновити код YouTube? Це може вирішити проблему. + + Success + - - Maybe updating this application could fix the problem. - Можливо оновлення цього застосунку дозволить вирішити проблему. + + + Error + - - About this release - По цей випуск + + It's not possible to save %1. + - - Due to changes in YouTube, the old SMTube doesn't work anymore. - Старий SMTube більше не працює з-за змін на YouTube. + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - Це нова версія SMTube, написана з нуля. + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - Деякі функції покищо не доступні. + + It wasn't possible to find the URL for this video. + Неможливо знайти посилання для цього відео. - - Important: - Важливо: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - Якщо VEVO відео не бажає відтворюватися, будь ласка, використовуйте пункт %1 у меню Довідки. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - Оновити код YouTube + + This component needs to be updated frequently. + - - Loading... %1% - Завантаження... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ &Загальні - + + A&dd... + + + + &Players &Програвачі - + Add Додати - + Up Вище @@ -282,37 +316,57 @@ Бажана &якість: - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete Вилучити - + Edit Редагувати - + A&dd predefined players &Додати попередньо налаштовані програвачі - + &Interface &Зовнішній вигляд - + &Style: &Стиль: - + Font: Шрифт: - + C&hange... Змі&нити... @@ -327,12 +381,12 @@ Завантажити відео, використовуючи &зовнішній сервіс - + Down Нижче - + Default Типово @@ -471,4 +525,27 @@ Типовий + + SiteDialog + + + Edit Site + + + + + &Name: + &Ім’я: + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_zh_CN.ts smtube-20.6.0/src/translations/smtube_zh_CN.ts --- smtube-20.1.0/src/translations/smtube_zh_CN.ts 2019-06-16 19:20:12.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_zh_CN.ts 2020-06-18 14:40:37.000000000 +0000 @@ -31,7 +31,7 @@ Version: %1 - 版本:%1 + 版本: %1 @@ -46,7 +46,7 @@ Visit our website for updates: - 请访问我们的网站获取更新: + 访问我们的网站获取更新: @@ -77,171 +77,200 @@ BrowserWindow - + Home 主页 - + Navigation 导航 - + Zoom + 放大 - + Zoom - 缩小 - + &Quit 退出(&Q) - + &Navigation 导航(&N) - + &View - &视图 + 视图(&V) - + Toolbar 工具栏 - + Statusbar 状态条 - + &Settings 设置(&S) - + &Help 帮助(&H) - - &Update the YouTube code - 更新 YouTube 代码(&U) + + &Update YouTube playback support + &更新YouTube回放支持 - - About this &release - 关于此更新(&r) + + &Install / Update YouTube playback support + &安装/更新YouTube回放支持 - + &About SMTube 关于 SMTube (&A) - + Download video using an external service 使用外置服务下载视频 - + Download 下载 - - Connection failed - 连接失败 + + No video found + 未找到视频 - - The video you requested needs to open a HTTPS connection. - 您请求的视频需要 HTTPS 连接。 + + It wasn't possible to find the URL for this video. + 不过也不是没有办法获取此视频的URL。 - - Unfortunately the OpenSSL component, required for it, is not available in your system. - 很不幸,此功能依赖于openssl组件,而您的系统中未安装。 + + Loading... %1% + 加载... %1% + + + CodeDownloader - - No video found - 未找到视频 + + Downloading... + 下载中... - - It wasn't possible to find the URL for this video. - 不过也不是没有办法获取此视频的URL。 + + Connecting to %1 + 正在连接到 1% - - - Problems with YouTube - YouTube 问题 + + The YouTube code has been installed successfully. + YouTube代码已经安装成功 - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - 很不幸,由于 YouTube 的变动,无法播放 '%1'。 + + Installed version: %1 + 已安装版本: 1% - - Do you want to update the YouTube code? This may fix the problem. - 你想更新 YouTube 代码吗?此操作或许能解决问题。 + + Success + 成功 - - Maybe updating this application could fix the problem. - 或许更新此程序能解决此问题。 + + + Error + 错误 - - About this release - 关于此更新 + + It's not possible to save %1. + 无法保存 1%。 - - Due to changes in YouTube, the old SMTube doesn't work anymore. - 由于 YouTube 的变动,原来的 SMTube 无法正常工作。 + + An error happened while downloading the file:<br>%1 + - - This is a new version of SMTube, written from scratch. - 这是个全新的 SMTube,完全从头重写代码。 + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + - - Some functionality is not available yet. - 有些功能尚不完善。 + + It wasn't possible to find the URL for this video. + 不过也不是没有办法获取此视频的URL。 - - Important: - 重要: + + Maybe you need to update youtube-dl. + - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - 如果播放 VEVO 视频失败,请使用帮助菜单中的 %1. + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + - - Update the YouTube code - 更新 YouTube 代码 + + This component needs to be updated frequently. + - - Loading... %1% - 加载... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + + + + + Install / Update YouTube support + + + + + %1 can download and install this application for you. + + + + + It will be downloaded from the official website and installed in %1. + + + + + Would you like to proceeed? + + + + + + Install YouTube support? + @@ -257,17 +286,22 @@ 常规(&G) - + + A&dd... + + + + &Players 播放器(&P) - + Add 添加 - + Up 向上 @@ -279,42 +313,62 @@ Preferred &quality: - 优先使用画质(&q): + 偏好质量(&Q): - + + Sites + + + + + &Site: + + + + + Edi&t... + + + + + De&lete + + + + Delete 删除 - + Edit 编辑 - + A&dd predefined players 增加预定义的播放器 - + &Interface 界面(&I) - + &Style: 样式(&S): - + Font: 字体: - + C&hange... - 更改(&h)... + 更改(&H)... @@ -324,15 +378,15 @@ Download videos using an &external service - 使用外置服务下载视频(&e) + 使用外置服务下载视频(&E) - + Down 向下 - + Default 默认 @@ -350,12 +404,12 @@ Open in &YouTube - 在 YouTube 中打开(&Y) + 在 &YouTube 中打开 &Save link... - 保存链接...(&S) + 保存链接(&S)... @@ -375,7 +429,7 @@ Open link in &new window - 在新窗口中打开链接(&n) + 在新窗口中打开链接(&N) @@ -385,7 +439,7 @@ Play &audio with - 使用此设备播放音频(&a) + 使用此设备播放音频(&A) @@ -395,12 +449,12 @@ Play &audio with %1 - 使用 1% 播放音频(&a) + 使用 1% 播放音频(&A) Play video with a &web browser - 使用网页浏览器播放视频(&w) + 使用网页浏览器播放视频(&W) @@ -428,22 +482,22 @@ This player supports &video sites - 此播放器支持播放视频网站的视频(&v) + 此播放器支持播放视频网站的视频(&V) This player can play &online TV - 此播放器可以播放在线电视 (&o) + 此播放器可以播放在线电视(&O) Preferred &quality: - 画质优先(&q): + 画质优先(&Q): Add to &menu: - 添加到菜单(&m): + 添加到菜单(&M): @@ -471,4 +525,27 @@ 默认 + + SiteDialog + + + Edit Site + + + + + &Name: + 名称(&N): + + + + &Home page URL: + + + + + &Search URL: + + + diff -Nru smtube-20.1.0/src/translations/smtube_zh_TW.ts smtube-20.6.0/src/translations/smtube_zh_TW.ts --- smtube-20.1.0/src/translations/smtube_zh_TW.ts 2018-10-28 23:22:10.000000000 +0000 +++ smtube-20.6.0/src/translations/smtube_zh_TW.ts 2020-06-03 15:32:49.000000000 +0000 @@ -77,171 +77,200 @@ BrowserWindow - + Home 首頁 - + Navigation 導覽 - + Zoom + 放大 + - + Zoom - 縮小 - - + &Quit 結束(&Q) - + &Navigation 導覽(&N) - + &View 檢視(&V) - + Toolbar 工具列 - + Statusbar 狀態列 - + &Settings 設定(&S) - + &Help 說明(&H) - - &Update the YouTube code - 更新 YouTube 代碼(&U) + + &Update YouTube playback support + 更新 YouTube 播放支援(&U) - - About this &release - 關於這個版本(&R) + + &Install / Update YouTube playback support + 安裝/更新 YouTube 播放支援(&I) - + &About SMTube 關於 SMTube(&A) - + Download video using an external service 使用外部服務下載影片 - + Download 下載 - - Connection failed - 連線失敗 + + No video found + 找不到視訊 - - The video you requested needs to open a HTTPS connection. - 您所要求的影片需要開啟 HTTPS 連線。 + + It wasn't possible to find the URL for this video. + 找不對這個影片的 URL。 - - Unfortunately the OpenSSL component, required for it, is not available in your system. - 不幸的是,必須的 OpenSSL 組件並未在您的系統上提供。 + + Loading... %1% + 正在載入... %1% + + + CodeDownloader - - No video found - 找不到視訊 + + Downloading... + 正在下載…… - - It wasn't possible to find the URL for this video. - 找不對這個影片的 URL。 + + Connecting to %1 + 正在連線至 %1 - - - Problems with YouTube - YouTube 的問題 + + The YouTube code has been installed successfully. + YouTube 代碼已成功安裝。 - - - Unfortunately due to changes in YouTube, the video '%1' can't be played. - 不幸的是,因為 YouTube 的變更,影片「%1」無法播放。 + + Installed version: %1 + 已安裝的版本:%1 - - Do you want to update the YouTube code? This may fix the problem. - 您想要更新 YouTube 代碼嗎?這也許可以修復這個問題。 + + Success + 成功 - - Maybe updating this application could fix the problem. - 也許更新這個應用程式是可以修復這個問題。 + + + Error + 錯誤 - - About this release - 關於這個版本 + + It's not possible to save %1. + 不可能儲存 %1。 - - Due to changes in YouTube, the old SMTube doesn't work anymore. - 因為 YouTube 的變更,舊版的 SMTube 完全無法運作。 + + An error happened while downloading the file:<br>%1 + 在下載檔案時發生錯誤:<br>%1 - - This is a new version of SMTube, written from scratch. - 這是一個重新編寫的新版 SMTube。 + + %1 failed to communicate with youtube-dl. Either it's not installed or it doesn't work correctly. + %1 與 youtube-dl 溝通失敗。其不是未安裝就是無法正常運作。 - - Some functionality is not available yet. - 部份功能尚未提供。 + + It wasn't possible to find the URL for this video. + 找不到此影片的 URL。 - - Important: - 重要: + + Maybe you need to update youtube-dl. + 也許您需要更新 youtube-dl。 - - If the VEVO videos fail to play, please use the option %1 in the Help menu. - 如果 VEVO 的影片播放失敗,請在說明選單中使用 %1 選項。 + + + In order to play YouTube videos, %1 needs an external application called youtube-dl. + 為了播放 YouTube 影片,%1 需要稱為 youtube-dl 的外部應用程式。 - - Update the YouTube code - 更新 YouTube 代碼 + + This component needs to be updated frequently. + 此元件必須經常更新。 - - Loading... %1% - 正在載入... %1% + + You can update it just by reinstalling SMPlayer. The installer will download and install the very latest version. + 您可以透過重新安裝 SMPlayer 來更新它。安裝程式將會下載並安裝最新的版本。 + + + + Install / Update YouTube support + 安裝/更新 YouTube 支援 + + + + %1 can download and install this application for you. + %1 可以為您下載並安裝此應用程式。 + + + + It will be downloaded from the official website and installed in %1. + 其將會從官方網頁下載並在 %1 中安裝。 + + + + Would you like to proceeed? + 您想要繼續嗎? + + + + + Install YouTube support? + 安裝 YouTube 支援? @@ -257,17 +286,22 @@ 一般 (&G) - + + A&dd... + 新增……(&D) + + + &Players 播放器(&P) - + Add 新增 - + Up 向上 @@ -282,37 +316,57 @@ 偏好的畫質(&Q): - + + Sites + 網站 + + + + &Site: + 網站:(&S) + + + + Edi&t... + 編輯……(&T) + + + + De&lete + 刪除(&L) + + + Delete 刪除 - + Edit 編輯 - + A&dd predefined players 新增預定義的播放器(&D) - + &Interface 介面(&I) - + &Style: 樣式(&S): - + Font: 字型: - + C&hange... 改變(&H)... @@ -327,12 +381,12 @@ 使用外部服務下載影片 (&E) - + Down 向下 - + Default 預設值 @@ -471,4 +525,27 @@ 預設 + + SiteDialog + + + Edit Site + 編輯網站 + + + + &Name: + 名稱:(&N) + + + + &Home page URL: + 首頁 URL:(&H) + + + + &Search URL: + 搜尋 URL:(&S) + + diff -Nru smtube-20.1.0/src/version.cpp smtube-20.6.0/src/version.cpp --- smtube-20.1.0/src/version.cpp 2020-01-21 19:31:18.000000000 +0000 +++ smtube-20.6.0/src/version.cpp 2020-06-18 14:49:40.000000000 +0000 @@ -20,7 +20,7 @@ #define USE_SVN_VERSIONS 0 -#define VERSION "20.1.0" +#define VERSION "20.6.0" #if USE_SVN_VERSIONS #include "svn_revision.h" diff -Nru smtube-20.1.0/src/ytsig.cpp smtube-20.6.0/src/ytsig.cpp --- smtube-20.1.0/src/ytsig.cpp 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/ytsig.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ -/* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2020 Ricardo Villalba - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include "ytsig.h" -#include - -QString YTSig::script_filename; - -QString YTSig::script; -QString YTSig::default_script; - -QString YTSig::parsed_ts; - - -QString YTSig::aclara(const QString & text, const QString & player, const QString & function_name) { - int dot = text.indexOf('.'); - qDebug("YTSig::aclara: length: %d (%d.%d) p: %d", text.size(), dot, text.size()-dot-1, !player.isEmpty()); - - if (script.isEmpty()) script = default_script; - - QScriptEngine engine; - - //QScriptSyntaxCheckResult r = engine.checkSyntax(script); - //qDebug() << (int) r.state(); - - engine.evaluate(script); - - QScriptValueList args; - QString fname; - - if (!function_name.isEmpty()) { - fname = function_name; - args << text; - } - else - if (player.isEmpty()) { - fname = "aclara"; - args << text; - } - else { - fname = "aclara_p"; - args << text << player; - } - - //qDebug() << "YTSig::aclara: function_name:" << function_name; - - QScriptValue aclarar = engine.globalObject().property(fname); - QString res = aclarar.call(QScriptValue(), args).toString(); - - //qDebug() << res; - - if (res.isEmpty()) { - qDebug() << "YTSig::aclara: signature length not supported:" << text.size() << ":" << text; - } - - return res; -} - -void YTSig::reloadScriptFile() { - qDebug() << "YTSig::reloadScriptFile:" << script_filename; - - if (!QFile::exists(script_filename)) { - qDebug() << "YTSig::reloadScriptFile: file doesn't exist."; - return; - } - - QFile f(script_filename); - f.open(QIODevice::ReadOnly); - QByteArray bytes = f.readAll(); - f.close(); - - parsed_ts = ""; - - if (!bytes.isEmpty()) { - script = bytes; - - QRegExp rx("D: ([\\d,a-z,A-Z-]+)"); - if (rx.indexIn(bytes)) { - QByteArray d = rx.cap(1).toLatin1(); - qDebug() << "YTSig::reloadScriptFile: d:" << d; - parsed_ts = QByteArray::fromBase64(d); - } - - } -} diff -Nru smtube-20.1.0/src/ytsig.h smtube-20.6.0/src/ytsig.h --- smtube-20.1.0/src/ytsig.h 2020-01-21 19:24:19.000000000 +0000 +++ smtube-20.6.0/src/ytsig.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -/* smplayer, GUI front-end for mplayer. - Copyright (C) 2006-2020 Ricardo Villalba - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef YT_SIG_H -#define YT_SIG_H - -#include - -class YTSig -{ -public: - static QString aclara(const QString & text, const QString & player = "", const QString & function_name = QString::null); - static void setScriptFile(const QString & f) { script_filename = f; reloadScriptFile(); }; - static QString parsed_ts; - -private: - static QString script; - static QString default_script; - static QString script_filename; - static void reloadScriptFile(); -}; - -#endif -