Update to v2.3.367

This commit is contained in:
A S Lewis 2022-02-12 12:00:30 +00:00
parent 36dd493642
commit 7786428a78
36 changed files with 3416 additions and 3311 deletions

33
CHANGES
View File

@ -1,3 +1,36 @@
v2.3.367 (12 Feb 2022)
-------------------------------------------------------------------------------
MINOR NEW FEATURES
- MS Windows users have been reporting that FFmpeg cannot be installed any
more; this release attempts to fix that issue (but I can't be sure that the
fix will work)
- In order to cope with yt-dlp spam, added some new ignorable warnings (see
Edit > System preferences... > Windows > Errors/Warnings)
- In Edit > System preferences > Files > URLs, there is a new button for
opening a URL in your system's web browser. Also changed the layout of that
tab to make it a little easier to understand
MAJOR FIXES
- When the Tartube database was corrupted, on startup Tartube was unable to
create temporary directories, so the application closes even before the
main window is created. Fixed that, and also fixed the failure to show a
dialogue window when a lock can't be placed on the database file
- Fixed various issues when exporting/importing Tartube's database
- Fixed inability to rename channels/playlists/folders under certain
circumstances
MINOR FIXES
- Fixed minor typos in various edit windows
- When the downloader is yt-dlp and the user selects a custom executable,
Tartube installs youtube-dl instead. Fixed (Git #299)
- In the same situation (on MS Windows only), Tartube tries to execute an .exe
file as if it were a Python script. Fixed (Git #299)
- On MS Windows, user could not set an external download path for a channel or
playlist. Fixed (Git #329)
- Fixed inability to load databases from Tartrubr v2.2.007 (Git #356)
- Valid URLs like "yahho.com" were not accepted as valid. Fixed
v2.3.332 (8 Jul 2021)
-------------------------------------------------------------------------------

View File

@ -59,14 +59,14 @@ For a full list of new features and fixes, see `recent changes <CHANGES>`__.
3 Downloads
===========
Latest version: **v2.3.332 (8 Aug 2021)**
Latest version: **v2.3.367 (12 Feb 2022)**
Official packages (also available from the `Github release page <https://github.com/axcore/tartube/releases>`__):
- `MS Windows (64-bit) installer <https://sourceforge.net/projects/tartube/files/v2.3.332/install-tartube-2.3.332-64bit.exe/download>`__ and `portable edition <https://sourceforge.net/projects/tartube/files/v2.3.332/tartube-2.3.332-64bit-portable.zip/download>`__ from Sourceforge
- `MS Windows (32-bit) installer <https://sourceforge.net/projects/tartube/files/v2.3.332/install-tartube-2.3.332-32bit.exe/download>`__ and `portable edition <https://sourceforge.net/projects/tartube/files/v2.3.332/tartube-2.3.332-32bit-portable/download>`__ from Sourceforge (but see `7.23 Doesn't work on 32-bit Windows`_)
- `DEB package (for Debian-based distros, e.g. Ubuntu, Linux Mint) <https://sourceforge.net/projects/tartube/files/v2.3.332/python3-tartube_2.3.332.deb/download>`__ from Sourceforge
- `RPM package (for RHEL-based distros, e.g. Fedora) <https://sourceforge.net/projects/tartube/files/v2.3.332/tartube-2.3.332.rpm/download>`__ from Sourceforge
- `MS Windows (64-bit) installer <https://sourceforge.net/projects/tartube/files/v2.3.367/install-tartube-2.3.367-64bit.exe/download>`__ and `portable edition <https://sourceforge.net/projects/tartube/files/v2.3.367/tartube-2.3.367-64bit-portable.zip/download>`__ from Sourceforge
- `MS Windows (32-bit) installer <https://sourceforge.net/projects/tartube/files/v2.3.367/install-tartube-2.3.367-32bit.exe/download>`__ and `portable edition <https://sourceforge.net/projects/tartube/files/v2.3.367/tartube-2.3.367-32bit-portable/download>`__ from Sourceforge (but see `7.23 Doesn't work on 32-bit Windows`_)
- `DEB package (for Debian-based distros, e.g. Ubuntu, Linux Mint) <https://sourceforge.net/projects/tartube/files/v2.3.367/python3-tartube_2.3.367.deb/download>`__ from Sourceforge
- `RPM package (for RHEL-based distros, e.g. Fedora) <https://sourceforge.net/projects/tartube/files/v2.3.367/tartube-2.3.367.rpm/download>`__ from Sourceforge
There are also some DEB/RPM packages marked STRICT. In these packages, updates to **youtube-dl** from within **Tartube** have been disabled. If **Tartube** is uploaded to a repository with lots of rules, such as the official Debian repository, then you should probably use the STRICT packages.
@ -170,6 +170,8 @@ If you want to perform a manual installation, you can follow this procedure, whi
5.2 Installation - MacOS
------------------------
**Several users have reported problems installing Tartube on MacOS. The authors do not use MacOS, so we don't know how to fix these problems. Apologies in advance!**
MacOS users should use the following procedure (with thanks to JeremyShih):
- Install `Python 3 <https://www.python.org/downloads>`__ by downloading an installer, or with homebrew:

View File

@ -1 +1 @@
2.3.358
2.3.367

View File

@ -7,7 +7,7 @@ You want to contribute a translation to this project? Well, that's just great!
The simple way
--------------
1. Get a copy of the file `../tartube/po/messages.pot <tartube/po/messages.pot>`__
1. Get a copy of the file `../tartube/po/messages.pot <tartube/po/messages.pot>`__
2. Open it in a text editor
3. Read the notes below
4. Translate everything
@ -33,7 +33,7 @@ Header
======
The lines at the top must be changed from this::
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
@ -41,7 +41,7 @@ The lines at the top must be changed from this::
...to this::
# Tartube
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
# This file is distributed under the same license as the Tartube package.
The Project-Id-Version must be changed from this::
@ -106,7 +106,7 @@ Some pieces of text are spread across several lines, like this::
msgid ""
"The video file is missing from Tartube's data folder (try downloading the "
"video again!)"
"video again!)"
msgstr ""
The two strings are added to each other, producing a single string. You can do the same, if you want. (It doesn't matter how many strings you use).
@ -120,7 +120,7 @@ Multiple strings are combined without extra space characters. You should add the
"¡No puedo usar "
"YouTube "
"porque no hablo inglés!"
Please preserve capitalisation and punctuation::
msgid "Help!"
@ -128,10 +128,10 @@ Please preserve capitalisation and punctuation::
msgid "HELP!"
msgstr "¡AYUDA!"
msgid "help!"
msgstr "¡ayuda!"
One exception to this rule is underline/underscore characters. These denote keyboard shortcuts. Don't add the underline/underscore character to your translation::
msgid "_Channel"
@ -164,7 +164,7 @@ Some strings contain {0}, {1}, {2} and so on. These are substituted for somethin
Your translation must include the literal {0}, {1}, {2} and so on.
msgstr "blah blah blah {0} blah blah {1} blah blah"
If your translation uses a different word order, then treat the substrings like a word.
msgstr "Give to the {1} the {0}, please"
@ -177,7 +177,7 @@ Earlier version of Tartube used *directory* on Linux systems, and *folder* on MS
Downloads
=========
You have probably noticed two buttons in Tartube's main window: **Check all** and **Download all**.
You have probably noticed two buttons in Tartube's main window: **Check all** and **Download all**.
The first one fetches a list of videos from websites, but doesn't download the videos. The second one fetches a list of videos from websites AND downloads the videos.
@ -186,7 +186,7 @@ Throughout **messages.pot**, the word *check* is used with this meaning. You can
Operations
==========
Throughout **messages.pot**, the word *operation* has a fixed meaning. When Tartube is busy doing something, many buttons don't work (are greyed out).
Throughout **messages.pot**, the word *operation* has a fixed meaning. When Tartube is busy doing something, many buttons don't work (are greyed out).
For example, click the **Download all** button, and it is greyed out until the downloads are finished.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
# Tartube v2.3.358 installer script for MS Windows
# Tartube v2.3.367 installer script for MS Windows
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -249,7 +249,7 @@
;Name and file
Name "Tartube"
OutFile "install-tartube-2.3.358-32bit.exe"
OutFile "install-tartube-2.3.367-32bit.exe"
;Default installation folder
InstallDir "$LOCALAPPDATA\Tartube"
@ -352,7 +352,7 @@ Section "Tartube" SecClient
# "Publisher" "A S Lewis"
# WriteRegStr HKLM \
# "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube" \
# "DisplayVersion" "2.3.358"
# "DisplayVersion" "2.3.367"
# Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"

View File

@ -1,6 +1,6 @@
# Tartube v2.3.358 installer script for MS Windows
# Tartube v2.3.367 installer script for MS Windows
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -249,7 +249,7 @@
;Name and file
Name "Tartube"
OutFile "install-tartube-2.3.358-64bit.exe"
OutFile "install-tartube-2.3.367-64bit.exe"
;Default installation folder
InstallDir "$LOCALAPPDATA\Tartube"
@ -352,7 +352,7 @@ Section "Tartube" SecClient
# "Publisher" "A S Lewis"
# WriteRegStr HKLM \
# "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube" \
# "DisplayVersion" "2.3.358"
# "DisplayVersion" "2.3.367"
# Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -42,11 +42,11 @@ import mainapp
# 'Global' variables
__packagename__ = 'tartube'
__version__ = '2.3.358'
__date__ = '1 Dec 2021'
__copyright__ = 'Copyright \xa9 2019-2021 A S Lewis'
__version__ = '2.3.367'
__date__ = '12 Feb 2022'
__copyright__ = 'Copyright \xa9 2019-2022 A S Lewis'
__license__ = """
Copyright \xa9 2019-2021 A S Lewis.
Copyright \xa9 2019-2022 A S Lewis.
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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -42,11 +42,11 @@ import mainapp
# 'Global' variables
__packagename__ = 'tartube'
__version__ = '2.3.358'
__date__ = '1 Dec 2021'
__copyright__ = 'Copyright \xa9 2019-2021 A S Lewis'
__version__ = '2.3.367'
__date__ = '12 Feb 2022'
__copyright__ = 'Copyright \xa9 2019-2022 A S Lewis'
__license__ = """
Copyright \xa9 2019-2021 A S Lewis.
Copyright \xa9 2019-2022 A S Lewis.
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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -42,11 +42,11 @@ import mainapp
# 'Global' variables
__packagename__ = 'tartube'
__version__ = '2.3.358'
__date__ = '1 Dec 2021'
__copyright__ = 'Copyright \xa9 2019-2021 A S Lewis'
__version__ = '2.3.367'
__date__ = '12 Feb 2022'
__copyright__ = 'Copyright \xa9 2019-2022 A S Lewis'
__license__ = """
Copyright \xa9 2019-2021 A S Lewis.
Copyright \xa9 2019-2022 A S Lewis.
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

View File

@ -1,5 +1,5 @@
Files: tartube/*
Copyright: 2019-2021 A S Lewis
Copyright: 2019-2022 A S Lewis
License: GPL-3+
Files: icons/*

View File

@ -1,4 +1,4 @@
.TH man 1 "1 Dec 2021" "2.3.358" "tartube man page"
.TH man 1 "12 Feb 2022" "2.3.367" "tartube man page"
.SH NAME
tartube \- GUI front-end for youtube-dl
.SH SYNOPSIS

View File

@ -1,6 +1,6 @@
[Desktop Entry]
Name=Tartube
Version=2.3.358
Version=2.3.367
Exec=tartube
Icon=tartube
Type=Application

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -182,7 +182,7 @@ for path in glob.glob('sounds/*'):
# Setup
setuptools.setup(
name='tartube',
version='2.3.358',
version='2.3.367',
description='GUI front-end for youtube-dl',
long_description=long_description,
long_description_content_type='text/plain',

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -29570,6 +29570,7 @@ class SetDestinationDialogue(Gtk.Dialog):
entry = Gtk.Entry()
grid.attach(entry, 0, 8, grid_width, 1)
entry.set_editable(False)
entry.set_can_focus(False)
if media_data_obj.external_dir is not None:
entry.set_text(media_data_obj.external_dir)
elif prev_external_dir is not None:

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -42,11 +42,11 @@ import mainapp
# 'Global' variables
__packagename__ = 'tartube'
__version__ = '2.3.358'
__date__ = '1 Dec 2021'
__copyright__ = 'Copyright \xa9 2019-2021 A S Lewis'
__version__ = '2.3.367'
__date__ = '12 Feb 2022'
__copyright__ = 'Copyright \xa9 2019-2022 A S Lewis'
__license__ = """
Copyright \xa9 2019-2021 A S Lewis.
Copyright \xa9 2019-2022 A S Lewis.
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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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
@ -37,6 +37,7 @@ import shutil
import subprocess
import sys
import time
from urllib.parse import urlparse, urljoin
# Import our modules
@ -268,19 +269,23 @@ def check_url(url):
"""
prepared_request = requests.models.PreparedRequest()
try:
prepared_request.prepare_url(url, None)
# Based on various methods suggested by
# https://stackoverflow.com/questions/25259134/
# how-can-i-check-whether-a-url-is-valid-using-urlparse
try:
# Add a scheme, if the specified URL doesn't provide one
if not re.match(r'^[a-zA-Z]+://', url):
url = 'http://' + url
final_url = urlparse(urljoin(url, '/'))
is_valid = (
all([final_url.scheme, final_url.netloc, final_url.path])
and len(final_url.netloc.split(".")) > 1
)
return is_valid
# The requests module allows a lot of URLs that are definitely not of
# interest to us
# This filter seems to catch most of the gibberish (although it's not
# perfect)
if re.search('^\S+\.\S', url) \
or re.search('localhost', url):
return True
else:
return False
except:
return False

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2019-2021 A S Lewis
# Copyright (C) 2019-2022 A S Lewis
#
# 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