Update to v2.3.447

master
A S Lewis 2022-03-20 15:40:31 +00:00
parent bf2df53846
commit af0712b81f
49 changed files with 16797 additions and 15877 deletions

136
CHANGES
View File

@ -1,3 +1,139 @@
v2.3.447 (20 Mar 2022)
-------------------------------------------------------------------------------
INSTALLERS
- The installer for 32bit Windows has been retired. See the README for more
details
MAJOR NEW FEATURES
- Gtk stability issues have been resolved (hopefully). This means that, when
checking or download videos, the Videos tab is updated in real time
(without the need to switch between channels/playlists/folders to update
them). This was actually Tartube's oldest unresolved issue
- Tartube can now scan a YouTube channel for its playlists, and optionally
add some or all of those playlists to Tartube's database. See the README
for details of how it works (Git #102)
- In the toolbar at the bottom of the Videos tab, you can now search for
comments and video descriptions, as well as video names. (Don't forget to
click the 'Show more settings' button, so that the full toolbar is
visible). You can also search for comments within a specific video by
right-clicking it, and selecting Show video > Properties... > Comments.
Also improved the layout of that tab a little
- In the Video tab's list, users will now see an icon for any channel/playlist/
folder for which checking/downloading has been disabled. This replaces the
old system of names with italics and underlines, and it should be much
clearer. The old system still applies when small icons are used (Git #385
and others)
- When the user fetches a video's list of formats (by right-clicking the video
and selecting Fetch > Available formats), they will now see a new dialogue
window inviting them to set download options, so the video can be
downloaded in one of the available formats. There is also a new dialogue
window when fetching a video's list of subtitles (Git #369)
- Custom downloads now have the ability to download only videos with subtitles.
In the Videos tab, you can see a new icon next to videos for which
subtitles are available. (The new icon does not mean that subtitles have
been downloaded.) Live chat replay on YouTube videos are treated the same
way as subtitles, and can be downloaded
- Users with a YouTube account can now import their subscriptions directly into
Tartube's database. Click Media > Import YouTube subscriptions..., and then
follow the window's instructions
- There are several situations in which a channel/playlist may be added to
Tartube's database with a generic name (for example, after clicking
Media > Add many channels/playlists...). Tartube can now reset channel/
playlist names automatically, as long as one video in each has been
checked/downloaded: click Media > Reset channel/playlist names...
MINOR NEW FEATURES
- The download options window has been reorganised to clarify, especially to
new users, how to download and then convert videos from one media format to
another. The Classic Mode tab's layout has also been updated with the same
aim in mind (Git #383)
- In the download options window, Formats tab, you can now click the new small
button next to the Add format button, in which you can type a media format
number (e.g. 397) instead of scrolling through the list to find it
- In the download options window, added the '--no-cookies' option and other
related options to the new yt-dlp > Cookies tab (Git #378)
- On MS Windows, advanced users who wish to tweak the environment in which
Tartube runs can now open the MSYS2 terminal window directly from
Tartube's main menu. Tartube's installation folders can also be opened for
inspection. Open the new System menu column to use them
- In the Classic Mode tab, the buttons at the bottom of the tab have been
rearranged. A new 'open destination' button has been added. The popup menu
displayed by right-clicking items in the progress list has been expanded to
duplicate the actions of those buttons
- On MS Windows, when using yt-dlp, the download option '--windows-filenames'
is now automatically applied if '--restrict-filenames' has not been applied
- Updates to the MS Windows installer to improve various issues
- The location of the archive file used by youtube-dl can now be fully
customised. See Edit > System preferences... > Operations > Archive. When
re-downloading a video, Tartube no longer renames the archive file
temporarily, just ignores it (Git #299)
- The annoying 'Unable to download video thumbnail: HTTP Error 404: Not found'
messages generated by yt-dlp are now filtered out by default; they can be
re-enabled in Edit > System preferences... > Windows > Errors/Warnings
- On systems that permit it, the main window's icon in the taskbar is now a
different colour to the icon used by other Tartube windows
- During a custom download, if videos are checked before being downloaded
individually, you can now right-click any video in the Progress tab to
skip the checking phase
- The standard error and warning icons have been tweaked to make it easier to
tell them apart
- On MS Windows, the setup wizard window now warns users about the size of the
youtube-dl/FFmpeg downloads (in case they are installing Tartube on a small
device, such as a pen drive)
- When Tartube loads a database file, it performs various checks. If the checks
fail, the file cannot be loaded. There is a new option to extract a list
of channels/playlists from a database file that cannot be loaded, as long
as the file is not actually corrupted. Click File > Database
preferences... > Dump database to JSON. The JSON file can be re-imported
into any other database in the normal way. Note that, due to python issues,
it is not possible to load or dump any database from Tartube v1.1.0 or
earlier (Git #356)
- Dialogue windows can cause Tartube to freeze, when running on an MS Windows
host in Virtualbox. In that case, dialogue windows can now be disabled
altogether in Edit > System preferences... > Windows > Dialogues
MAJOR FIXES
- Deleting a channel, playlist or folder containing hundreds of videos is now
much faster (orders of magnitude faster, in fact)
- In the Video Catalogue, when a 2-dimensional grid is visible, when using the
cursor (or page down) keys to scroll down the list of videos, the user
would never reach the final row if is was only partially full. Fixed
- Fixed yt-dlp download options '--prefer-insecure' and '--abort-on-error',
which could not be used because of a typo in the code (Git #364)
- On Linux, improved auto-detection of a PyPI install of youtube-dl/yt-dlp; it
is now selected as the default, even if another installation is present
- Fixed an error in the 'Set download destination' window for channels/
playlists, which showed (in the 'Use a different location' box) the most
recent change for any channel/playlist, not the actual location assigned
to this channel/playlist
- In the Progress tab, fixed Python errors when right-clicking a video and
selecting 'Stop after these videos'
- In the Videos tab, when some system folders are open (for example, 'New
Videos'), a deleted video does not disappear from view straight away. Fixed
MINOR FIXES
- After checking videos finishes, the dialogue window now shows the number of
new checked videos, not the total number of videos checked
- The media format selection in the Classic Mode tab was stored with useless
leading zeroes. Fixed
- In the download options window, fixed a typo in the media format #571
- When installing yt-dlp in the setup wizard window, user would see
'Update operation complete, youtube-dl version XXX'. Fixed
- When updating yt-dlp, but the user already has the latest version, the
dialogue window displayed 'yt-dlp version: (unknown)'. Fixed
- Fixed typos in translation files (Git #334)
- The Add Channel dialogue window was not resized correctly when the warning
about correct URLs was removed. Fixed
- In the preferences window, Operations > Livestreams, added a note to explain
that disabling YTSC option does not necessarily prevent all current
livestreams from being downloaded (Git #361)
- In the toolbar at the bottom of the Videos tab, the 'Show icons' button was
not set correctly. Fixed
- In the 'Add videos' dialogue window, when there were too many duplicate
URLs, the window was bigger than the available desktop. Added a scrolling
window to fix the problem (Git #351)
v2.3.367 (12 Feb 2022)
-------------------------------------------------------------------------------

View File

@ -24,7 +24,7 @@ Works with YouTube, Odysee, and hundreds of other websites
**Tartube** is a GUI front-end for `youtube-dl <https://youtube-dl.org/>`__, `yt-dlp <https://github.com/yt-dlp/yt-dlp/>`__ and other compatible video downloaders.
It is partly based on `youtube-dl-gui <https://mrs0m30n3.github.io/youtube-dl-gui/>`__ and is written in Python 3 / Gtk 3. Tartube runs on MS Windows, Linux, BSD and MacOS.
It is written in Python 3 / Gtk 3 and runs on MS Windows, Linux, BSD and MacOS.
Problems can be reported at `our GitHub page <https://github.com/axcore/tartube/issues>`__.
@ -59,21 +59,27 @@ 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.447 (20 Mar 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.447/install-tartube-2.3.447-64bit.exe/download>`__ and `portable edition <https://sourceforge.net/projects/tartube/files/v2.3.447/tartube-2.3.447-64bit-portable.zip/download>`__ from Sourceforge
- Tartube is no longer supported on MS Windows (32-bit) - see `7.22 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.447/python3-tartube_2.3.447.deb/download>`__ from Sourceforge
- `RPM package (for RHEL-based distros, e.g. Fedora) <https://sourceforge.net/projects/tartube/files/v2.3.447/tartube-2.3.447.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.
Official 'Strict' packages:
Semi-official packages:
Alternative DEB/RPM packages are 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.
Semi-official packages (MS Windows):
- `Chocolatey package <https://community.chocolatey.org/packages/tartube>`__
Semi-official packages (Linux):
- `Gentoo ebuild (available in src_prepare-overlay) <https://gitlab.com/src_prepare/src_prepare-overlay/>`__ from Gitlab
- `Arch AUR package <https://aur.archlinux.org/packages/tartube/>`__
- `Gentoo ebuild (available in src_prepare-overlay) <https://gitlab.com/src_prepare/src_prepare-overlay/>`__ from Gitlab
Source code:
@ -117,7 +123,7 @@ If you just want to download videos with a minimum of fuss, do this:
MS Windows users should use the installer `available at the Tartube website <https://tartube.sourceforge.io/>`__. The installer contains everything you need to run **Tartube**. You must be using Windows Vista or above; the installer will not work on Windows XP.
There is also a portable edition; use this if you want to install **Tartube** onto removable media, such as a USB drive. Download the ZIP file, extract it, and run the file **tartube_portable_64bit.bat** or **tartube_portable_32bit.bat**.
There is also a portable edition; use this if you want to install **Tartube** onto removable media, such as a USB drive. Download the ZIP file, extract it, and run the file **tartube_portable_64bit.bat**.
Both the installer and the portable edition include a copy of `AtomicParsley <https://bitbucket.org/jonhedgerows/atomicparsley/wiki/Home>`__, so there is no need to install it yourself.
@ -393,14 +399,16 @@ The procedure used to create the MS Windows installers is described in full in t
* `6.7 Adding channels and playlists`_
* `6.8 Adding videos, channels and playlists together`_
* `6.8.1 Bulk-adding channels and playlists`_
* `6.8.2 Updating adding channels and playlists`_
* `6.8.2 Replacing generic channel/playlist names`_
* `6.8.3 Replacing channel/playlist URLs in bulk`_
* `6.9 Adding folders`_
* `6.10 Things you can do`_
* `6.11 Download options`_
* `6.11.1 Advanced download options`_
* `6.11.2 Other download options`_
* `6.11.3 Managing download options`_
* `6.11.4 Download options for yt-dlp`_
* `6.11.4 Setting download options`_
* `6.11.5 Download options for yt-dlp`_
* `6.12 Scheduled downloads`_
* `6.13 Custom downloads`_
* `6.13.1 Creating custom downloads`_
@ -408,7 +416,8 @@ The procedure used to create the MS Windows installers is described in full in t
* `6.13.3 Diverting to HookTube / Invidious`_
* `6.13.4 Delays between downloads`_
* `6.13.5 Splitting and slicing videos`_
* `6.13.6 Launching custom downloads`_
* `6.13.6 Ignoring videos without subtitles`_
* `6.13.7 Launching custom downloads`_
* `6.14 Watching videos`_
* `6.15 Filtering and finding videos`_
* `6.16 Marking videos`_
@ -428,6 +437,8 @@ The procedure used to create the MS Windows installers is described in full in t
* `6.20.2 Multiple databases`_
* `6.20.3 Multiple Tartubes`_
* `6.20.4 Exporting/importing the database`_
* `6.20.5 Importing from YouTube`_
* `6.20.6 Old Export formats`_
* `6.21 Converting to audio`_
* `6.22 Classic Mode`_
* `6.22.1 Customising Classic Mode`_
@ -638,10 +649,28 @@ Secondly, you could import a text file contaiing a list of channels/playlists. Y
When you're ready, click **Media > Import into database > Plain text export file...**
6.8.2 Updating adding channels and playlists
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6.8.2 Replacing generic channel/playlist names
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you need to update *existing* channels and playlists, you can do so by clicking **Edit > System preferences... > Files > URLs**.
There are several situations in which **Tartube** might create a channel with a generic name like **channel_1**, or a playlist with a generic name like **playlist_2**.
* Click **Add video**, and enter a URL which is actually a channel or a playlist
* Add several channels/playlists together by clicking **Media > Add many channels/playlists...**
In this situation, you can either rename all the new channels and playlists yourself, one at a time, or you can let **Tartube** try to do it automatically. (This works fine on **YouTube** and many other sites, but not necessarily on all of them.)
* For each channel/playlist you want to rename, download or check at least one video
* Tartube will extract the channel/playlist name from each videos' metadata
* In the main menu, click **Media > Reset channel/playlist names...**
* Select everything you want to rename
* When you're ready, click the **OK** button to perform the renaming
Don't forget, you can limit the number of videos checked downloaded in **Edit > System preferences... > Operations > Stop**. This should make the first step much quicker.
6.8.3 Replacing channel/playlist URLs in bulk
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you need to update the URLs of many channels and playlists, you can do so by clicking **Edit > System preferences... > Files > URLs**.
6.9 Adding folders
------------------
@ -721,7 +750,7 @@ A new window opens. Any changes you make in this window aren't actually applied
6.11.1 Advanced download options
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Some of the options are intended for advanced users, so they're hidden by default. To revel them, click the button **Show advanced download options**.
Some of the options are intended for advanced users, so they're hidden by default. To reveal them, click the button **Show advanced download options**.
.. image:: screenshots/example13.png
:alt: Showing advanced download options
@ -773,7 +802,57 @@ The first item in the list, **general**, is the default set of download options.
Download options are saved in the Tartube database, so if you switch databases (see `6.20.2 Multiple databases`_), a different selection of download options will apply. If you want to move a set of download options from one database to another, you can **Export** them, then switch databases, then **Import** them.
6.11.4 Download options for yt-dlp
6.11.4 Setting download options
-------------------------------
Here is a quick summary of the download options that are most useful, assuming that advanced download options are hidden (see `6.11.1 Advanced download options`_).
You can change the format of the filename for the downloaded video, so it includes useful information such as the playlist number or the video resolution.
- Click **Files > File names**
- In the drop-down box marked **Format for video file names**, select one of the options
- If you select the **Custom** option, the drop-down boxes and buttons below become useable
When you download a video, a thumbnail and a metadata file are usually downloaded too. This can be customised.
- Click **Files > Write/move files** to select which files are downloaded
- Click **Files > Keep files** to select which files are not deleted at the end of the download operation
If you want to specify which video and audio formats should be downloaded, at which resolution and at which bitrate, do this:
- Click **Files > Formats**
- From the list on the left, select one of the video/audio formats
- Click the **Add format** button
**youtube-dl** downloads very high-resolution videos as two separate files, video and audio. If **Ffmpeg** is installed, the two separate files are automatically merged into one output file.
If you want to specify the format of the output file, for example to create an **.mp4** file, do this:
- Click **Files > Formats**
- From the list on the left, select **mp4**
- Click the **Add format** button
- In the drop-down box marked **If a merge is required after post-processing, output to this format**, select **mp4**
Most videos cannot be downloaded in every media format. For example, **YouTube** does not offer **mp3** downloads. If you want files in a particular video/audio format, often it's necessary to use **Ffmpeg** to convert the downloaded video.
- Click **Files > Convert**
- Select a video and/or audio format
**youtube-dl** can download subtitles for a video, if they exist. The chat replay of **YouTube** livestreams can also be downloaded, and is handled as if it were another set of subtitles.
- Click **Subtitles > Options**
- Select **Download all available subtitles**
If you want to download subtiles only in particular languages:
- Select **Download subtitles file for these languages**
- Select a language from the list on the left
- Click the **Add language** button
- Repeat for as many languages as you want
See also `6.13.6 Ignoring videos without subtitles`_.
6.11.5 Download options for yt-dlp
----------------------------------
The **yt-dlp** tab contains download options that only work with `yt-dlp <https://github.com/yt-dlp/yt-dlp/>`__ (or any fork based on it). If you try to use them with `youtube-dl <https://youtube-dl.org/>`__ you'll get an error.
@ -815,9 +894,9 @@ You can create as many scheduled downloads as you like. Scheduled downloads are
6.13 Custom downloads
---------------------
By default, **Tartube** downloads videos as quickly as possible, one link (URL) at a time. A link might point to an individual video, or it might point to a whole channel or playlist. **Tartube** will try to download the whole video from its original link.
By default, **Tartube** downloads videos as quickly as possible, one link (URL) at a time. A link might point to an individual video, or it might point to a whole channel or playlist. **Tartube** will try to download every video associated with the link.
A **Custom download** enables you to modify this behaviour, if desired. You can use it to fetch videos from a mirror, add random delays, download video clips, or to download videos with the adverts removed.
A **Custom download** enables you to modify this behaviour, if desired. You can use it to fetch videos from a mirror, add random delays, download video clips, ignore videos without subtitles, or to download videos with the adverts removed.
It's important to note that a custom download behaves exactly like a regular download until you specify the new behaviour.
@ -849,15 +928,12 @@ By default, **Tartube** instructs **youtube-dl** to download a channel or a play
If you need to download each individual video directly, for any reason, you can do this:
- Open the window for your preferred custom download. For example, click **Edit > System preferences... > Operations > Custom**, click **general** to select it, and click the **Edit** button
- In the new window, click the **Downloads** tab
- Click **Download each video independently of its channel or playlist** to select it
- In the new window, click **Download each video independently of its channel or playlist** to select it
- Click **Check channels/playlists/folders before each custom download** to select it
- Click **OK** to close the window
Many custom download settings only work when Tartube is downloading videos one at a time. If you enable this setting, you will be able to enable several other settings (including some in the other tabs).
Note that, in earlier verions of **Tartube**, it was necessary to check the channels and playlists yourself, before starting a custom download. If you have selected both buttons, this will no longer be necessary.
6.13.3 Diverting to HookTube / Invidious
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -897,7 +973,28 @@ You can also remove slices from a video *while it is being downloaded*. This is
Both of these features require **FFmpeg**.
6.13.6 Launching custom downloads
6.13.6 Ignoring videos without subtitles
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can ask Tartube not to download videos without subtitles.
- Open the window for your preferred custom download. For example, click **Edit > System preferences... > Operations > Custom**, click **general** to select it, and click the **Edit** button
- In the new window, click the **Subtitles** tab
- Click **Only download videos with available subtitles** to select it
- Click **OK** to close the window
- You can now start the custom download
Note that this setting *reduces the number of videos downloaded*. It isn't responsible for downloading the subtitles themselves. Here is how to do that:
- In Tartube's main menu, click **Edit > General download options > Subtitles > Options**
- Select **Download all available subtitles files**
- Alternatively, select **Download subtitles files for these languages**, and then add one or more languages below
- Click **OK** to close the window
- You can now start the custom download
**youtube-dl** handles YouTube live chat in the same way as subtitles, so you can select that instead of (or as well as) the languages.
6.13.7 Launching custom downloads
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Besides the optional button described above, there are several ways to start a custom download.
@ -1028,7 +1125,7 @@ The solution is to tell **Tartube** to store all the videos from the channel and
As described above, a creator might have a single channel, and several playlists. If there are a *lot* of playlists, it might take a long time to add them all to Tartube's database. However, there is a shortcut for YouTube channels.
- On the channel's webpage, click the **Playlists** tab
- Add a new channel to Tartube's database, using this URL (which should end in **../playlists**)
- Add a new channel to Tartube's database, using this URL (which should end in **../playlists**)
YouTube does not always send us the list of playlists; that's why it's necessary to click the **Playlists** tab, rather than the **Videos** tab, as we normally would.
@ -1167,7 +1264,7 @@ It's fine to add new videos to the database, or to remove them. Just be careful
- In **Tartube**'s main window, add each channel and playlist in the normal way
- When you're ready, click the **Check all** button. This adds a list of videos to **Tartube**'s database, without actually downloading the videos themselves
- Copy the video files into **Tartube**'s data directory (folder). For example, copy all your **PewDiePie** videos into **../tartube-data/downloads/PewDiePie**
- Copy the video files into **Tartube**'s data directory (folder). For example, copy all your **PewDiePie** videos into **../tartube-data/PewDiePie**
- In the **Tartube** menu, click **Operations > Refresh database...**. **Tartube** will search for video files, and try to match them with the list of videos you just compiled
- The whole process might some time, so be patient
@ -1219,8 +1316,25 @@ This is how to import the data into a different **Tartube** database.
- Select the export file you created earlier
- A dialogue window will appear. You can choose how much of the database you want to import
6.20.5 Export formats
---------------------
6.20.5 Importing from YouTube
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can also import your YouTube subscriptions directly.
- Click **Media > Import YouTube subscriptions**
- A wizard window opens, showing you how to export your YouTube subscriptions as a single **.zip** file
- When you have the export file, click the **Next** button
- Click **Select file**, and choose the export file
- If the file is valid, click the **Next** button again
- Select the channels you want to import, then click **OK** to update Tartube's database
If you have a lot of channels to import, you might want to import them into a folder.
- In the **Videos** tab, create a new folder, or select an existing folder
- Click **Media > Import YouTube subscriptions**, and continue as above
6.20.6 Old Export formats
~~~~~~~~~~~~~~~~~~~~~~~~~
The format of exported plain text/CSV files changed in v2.3.208, and again in v2.3.307. If you try to import files from earlier versions, you may not get everything you were expecting.
@ -1286,7 +1400,7 @@ Some websites, such as **YouTube**, allow you to download the audio (in **.m4a**
**Tartube** compiles a database of the videos, channels and playlists it has downloaded.
If you want something simpler, then click the **Classic Mode** tab, which has an interface that looks just like `youtube-dl-gui <https://mrs0m30n3.github.io/youtube-dl-gui/>`__.
If you want something simpler, then click the **Classic Mode** tab, which has an interface that looks just like older GUIs.
.. image:: screenshots/example25.png
:alt: The Classic Mode tab
@ -1332,7 +1446,7 @@ In the bottom half of the window, you can select one or more URLs by clicking th
**Tartube** can detect livestreams, and to notify you when they start.
At the moment, this feature only works on **YouTube**, and it doesn't work at all on 32-bit MS Windows.
At the moment, this feature only works on **YouTube**.
6.23.1 Detecting livestreams
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -1739,40 +1853,38 @@ Alternatively, you can update the entire database at once. (This may take a long
============================
* `7.1 Tartube won't install/won't run/doesn't work`_
* `7.2 Tartube crashes a lot`_
* `7.3 "Download did not start" error`_
* `7.4 Can't download a video`_
* `7.5 Downloads never finish`_
* `7.6 Videos are missing after a crash`_
* `7.7 Tartube database is broken`_
* `7.8 'Check all' button takes too long`_
* `7.9 'Download all' button takes too long`_
* `7.10 Videos downloaded to inconvenient location`_
* `7.11 Tartube database file is getting in the way`_
* `7.12 Duplicate video names`_
* `7.13 Convert video to audio`_
* `7.14 Video is downloaded as separate video/audio files`_
* `7.15 Too many folders in the main window`_
* `7.16 Not enough videos in the main window`_
* `7.17 Toolbar is too small`_
* `7.18 Toolbar is too big`_
* `7.19 YouTube name/password not accepted`_
* `7.20 Georestriction workarounds don't work`_
* `7.21 Video website blocks me`_
* `7.22 MS Windows installer is too big`_
* `7.23 Doesn't work on 32-bit Windows`_
* `7.24 Tartube can't detect livestreams`_
* `7.25 Livestream is already finished`_
* `7.26 Can't hear livestream alarms`_
* `7.27 Some icons not visible`_
* `7.28 Video thumbnails not visible`_
* `7.29 Video text not visible`_
* `7.30 Graphs not visible`_
* `7.31 Tartube is not visible in the system tray`_
* `7.32 Tartube is not portable`_
* `7.33 Run out of disk space`_
* `7.34 British spelling`_
* `7.35 No puedo hablar inglés`_
* `7.2 "Download did not start" error`_
* `7.3 Can't download a video`_
* `7.4 Downloads never finish`_
* `7.5 Videos are missing after a crash`_
* `7.6 Tartube database is broken`_
* `7.7 'Check all' button takes too long`_
* `7.8 'Download all' button takes too long`_
* `7.9 Channel downloads one video at a time`_
* `7.10 Tartube database file is getting in the way`_
* `7.11 Duplicate video names`_
* `7.12 Convert video to audio`_
* `7.13 Video is downloaded as separate video/audio files`_
* `7.14 Too many folders in the main window`_
* `7.15 Not enough videos in the main window`_
* `7.16 Toolbar is too small`_
* `7.17 Toolbar is too big`_
* `7.18 YouTube name/password not accepted`_
* `7.19 Georestriction workarounds don't work`_
* `7.20 Video website blocks me`_
* `7.21 MS Windows installer is too big`_
* `7.22 Doesn't work on 32-bit Windows`_
* `7.23 Tartube can't detect livestreams`_
* `7.24 Livestream is already finished`_
* `7.25 Can't hear livestream alarms`_
* `7.26 Some icons not visible`_
* `7.27 Video thumbnails not visible`_
* `7.28 Video text not visible`_
* `7.29 Graphs not visible`_
* `7.30 Tartube is not visible in the system tray`_
* `7.31 Tartube is not portable`_
* `7.32 Run out of disk space`_
* `7.33 No puedo hablar inglés`_
7.1 Tartube won't install/won't run/doesn't work
------------------------------------------------
@ -1793,50 +1905,26 @@ A: On Linux, if the DEB or RPM package doesn't work, try installing via PyPI.
A: Please report any problems to the authors at our `Github page <https://github.com/axcore/tartube/issues>`__.
It may be helpful to turn on debug messages (which are visible in a terminal window). There are several ways to enable debug messages:
- Click **Edit > System preferences... > General > Debugging**, and click the checkboxes to enable them. (These settings are reset when Tartube restarts)
- Place an (empty) file called **debug.txt** in the same folder/directory as the **Tartube** executable. If you're not sure where that is, click **Edit > System preferences... > General > Debugging**
- Edit the source code files **mainapp.py**, **mainwin.py** and **downloads.py**. In each file, change the value of **DEBUG_FUNC_FLAG** to **True** (note the capitalisation)
On MS Windows, this is how to run **Tartube** from inside a terminal window:
- In Tartube's main menu, select **System > Show Tartube install folder**
- After the folder window opens, shut down Tartube
- In the folder window, click the **msys64** or **msys32** folder to open it
- Open the terminal by double-clicking **mingw64.exe** or **mingw32.exe**
- In the folder window, click the **msys64** folder to open it
- Open the terminal by double-clicking **mingw64.exe**
- In this window, type these commands to start **Tartube** (paying attention to the *forward* slashes):
**cd /home/user/tartube**
**python3 tartube/tartube**
7.2 Tartube crashes a lot
-------------------------
*Q: I can install and run Tartube, but it keeps crashing!*
A: Tartube uses the Gtk graphics library. Regrettably, this library is notoriously unstable.
If stability is a problem, you can disable some minor cosmetic features. **Tartube**'s functionality is not affected. You can do anything, even when the cosmetic features are disabled.
- Click **Edit > System preferences... > General > Stability**
- Click **Disable some cosmetic features to prevent crashes and other issues** to select it
Another option is to reduce the number of simultaneous downloads. (On crash-prone systems, two simultaneous downloads seems to be safe, but four is rather less safe.)
- In the main window, click the **Progress** tab
- At the bottom of the tab, click the **Max downloads** checkbutton to select it, and reduce the number of simultaneous downloads to 1 or 2
- (It's not necessary to reduce the download speed; this has no effect on stability)
7.3 "Download did not start" error
7.2 "Download did not start" error
----------------------------------
*Q: When I try to download videos, nothing happens! In the Errors/Warnings tab, I can see "Download did not start"!*
A: See `6.3 Setting the downloader's location`_
7.4 Can't download a video
7.3 Can't download a video
--------------------------
*Q: I can't download my favourite video!*
@ -1858,19 +1946,14 @@ Because most people don't like typing, **Tartube** offers a shortcut.
- Click the **Output** tab to watch the test as it progresses
- When the test is finished, a temporary directory (folder) opens, containing anything that **youtube-dl** was able to download
7.5 Downloads never finish
7.4 Downloads never finish
--------------------------
*Q: I clicked the 'Download all' button and it starts, but never finishes!*
A: This generally indicates an error in the Python, Gtk and/or **Tartube** code. If you're running **Tartube** from a terminal window (see `7.1 Tartube won't install/won't run/doesn't work`_), you should be able to see the error, which you can report on `our GitHub page <https://github.com/axcore/tartube/issues>`__.
There are two things you can try in the meantime:
- Click **Edit > System preferences... > General > Modules**, and select the **Disable some cosmetic features to prevent crashes and other issues** button
- Click **File > Check database integrity**
7.6 Videos are missing after a crash
7.5 Videos are missing after a crash
------------------------------------
*Q: After I downloaded some videos, Tartube crashed, and now all my videos are missing!*
@ -1891,16 +1974,22 @@ A: **Tartube** creates a backup copy of its database, before trying to save a ne
Note that **Tartube** does not create backup copies of the videos you've downloaded. That is your responsibility!
7.7 Tartube database is broken
7.6 Tartube database is broken
------------------------------
*Q: The Tartube database is totally broken! How do I rebuild it? I don't want to download everything again!*
A: There is a built-in database repair tool. Click **File > Check database integrity**
A: If **Tartube** is able to load the database at all, then there is a built-in database repair tool. Click **File > Check database integrity**
A: Try using one of the database backups - see `7.6 Videos are missing after a crash`_
A: Try loading one of the database backups - see `7.5 Videos are missing after a crash`_
A: Earlier versions of **Tartube** did in fact introduce occasional blips into the database. It's possible (though unlikely) that some blips still exist, despite the best efforts of tha uthors. If you really want to rebuild the database from scratch, this is how to do it.
A: If the database file (**tartube.db**) is not actually corrupted, you can extract a list of channels and playlists from it. The list is exported as a JSON file.
To create the export, click **File > Database preferences > Dump database to JSON**.
The export can then be re-imported into your current database in the normal way (see `6.20.4 Exporting/importing the database`_).
A: Earlier versions of **Tartube** did in fact introduce occasional blips into the database. It's possible (though unlikely) that some blips still exist, despite the best efforts of the authors. If you really want to rebuild the database from scratch, this is how to do it.
Firstly, click **Media > Export from database...**. In the dialogue window, it's not necessary to select the button **Include lists of videos**. Click the **OK** button. Let Tartube create the backup file. You now have a backup of the names and URLs for every channel/playlist you've added.
@ -1916,7 +2005,9 @@ All the channels/playlists should now be visible in the main window. Click the *
Your new database now contains information about all the videos, but it doesn't know that most of those videos have been downloaded already. Click **Operations > Refresh database...** to take care of that.
7.8 'Check all' button takes too long
A: Database files created by **Tartube** v1.1.0 and earlier cannot be loaded due to serialisation issues. There is possibly no way to fix this.
7.7 'Check all' button takes too long
-------------------------------------
*Q: I clicked the 'Check all' button, but the operation takes so long! It only found two new videos!*
@ -1933,32 +2024,39 @@ This works well on sites like YouTube, which send information about videos in th
- In the **Stop after this many videos (when downloading)** box, enter the value 3
- Click **OK** to close the window
7.9 'Download all' button takes too long
7.8 'Download all' button takes too long
----------------------------------------
*Q: I clicked the 'Download all' button, but the operation takes so long! It only downloaded two new videos!*
*Q: I clicked the 'Download all' button. The whole operation took so long, even though Tartube only downloaded two new videos!*
A: **youtube-dl** can create an archive file especially for this purpose (namely that some channels have no new videos to download, but others have many new videos).
A: **youtube-dl** can create an archive file. The archive file remembers which videos have been downloaded, so that **youtube-dl** can skip them (which saves a lot of time).
To enable this functionality, click **Edit > System preferences... > Operations > Downloads** and click **Allow downloader to create its own archive file...** to select it.
To enable this functionality, click **Edit > System preferences... > Operations > Archive** and select **Allow downloader to create its own archive file**.
7.10 Videos downloaded to inconvenient location
-----------------------------------------------
By default, the archive file is stored in the same folder as the video, but you can change this behaviour, if you like.
*Q: Tartube always downloads its channels and playlists into ../tartube-data/downloads. Why doesn't it just download directly into ../tartube-data?*
- Click **Store the archive file in Tartube's data directory** to create a single archive file that applies to every video, channel and playlist in Tartube's database
- Click **Store the archive file at this location** to create an archive file somewhere else, then click **Set** to choose a folder
A: This was implemented in v1.4.0. If you installed an earlier version of **Tartube**, you don't need to take any action; **Tartube** can cope with both the old and new file structures.
7.9 Channel downloads one video at a time
-----------------------------------------
If you installed an earlier version of **Tartube**, and if you want to move your channels and playlists out of **../tartube-data/downloads**, this is how to do it:
*Q: In the Progress tab, 'Max downloads' is set to 2. But when I download my favourite channel, it downloads only one video at a time!*
- Open the data directory (folder). If you're not sure where to find **Tartube**'s data directory, you can click **Edit > System preferences... > Files > Database**.
- Make sure **Tartube** is not running. The **Tartube** window is sometimes minimised, and sometimes only visible in the system tray
- Now open the **../downloads** directory
- Move everything inside that directory into the directory above, e.g. move everything from **../tartube-data/downloads** into **../tartube-data**
- Delete the empty **../downloads** directory
- You can now restart **Tartube**
**Tartube** passes a list of URLs to **youtube-dl**. Each URL may represent a single video, or multiple videos. **youtube-dl** downloads videos from each URL, one at a time.
7.11 Tartube database file is getting in the way
When you add a channel (or a playlist), **Tartube** knows the URL of the channel, but it doesn't know anything about the videos inside it. Therefore it passes the URL of the channel to **youtube-dl**. Therefore the channel is downloaded, one video at a time.
You can download multiple videos from the same channel simultaneously, if you want (but it probably won't speed up your overall download).
- Right-click the channel and select **Check channel**
- When the operation finishes, Tartube will know the URL of each video
- In the list of videos, select every video (press **CTRL + A**)
- Right-click one of the videos, and select **Download videos**
Alternatively, you can use custom downloads (see `6.13 Custom downloads`_).
7.10 Tartube database file is getting in the way
------------------------------------------------
*Q: Tartube stores its database file in the same place as its videos. Why can't I store them in different places?*
@ -1973,7 +2071,7 @@ At the moment, the answer is '**Tartube** is working fine, fix your own computer
- If you want to move your videos from one location to another, it's easy - just move a single directory (folder) and everything it contains. There is no need to reconfigure anything; just tell **Tartube** where to find the new directory (folder)
- Splitting up the data folder and the database file would require a lot of code to be rewritten, and this would probably introduce lots of new bugs
7.12 Duplicate video names
7.11 Duplicate video names
--------------------------
*Q: I downloaded a channel, but some of the videos in the channel have the same name. Tartube only downloads one of them!*
@ -1984,14 +2082,14 @@ A: Tartube can create files with names in different formats. The name of two vid
- In the box **Format for video file names**, select **Title + ID**
- Click **OK** to close the window
7.13 Convert video to audio
7.12 Convert video to audio
---------------------------
*Q: I want to convert the video files to audio files!*
A: See `6.21 Converting to audio`_
7.14 Video is downloaded as separate video/audio files
7.13 Video is downloaded as separate video/audio files
------------------------------------------------------
*Q: I downloaded a video and expected a single video file, instead Tartube downloaded several files, none of which are playable!*
@ -2002,7 +2100,7 @@ A: The solution to both problems is to install FFmpeg, and to set the output for
Firstly, make sure FFmpeg is installed on your system - see `6.4 Installing FFmpeg / AVConv`_.
Secondly, set your desired output format. Open the Download options window (for example, click **Edit > General download options... > Formats > Preferred**). Add a format like **mp4** to the **List of preferred formats**, then add the same format to **If a merge is required after post-processing, output to this format**.
Secondly, set your desired output format. Open the Download options window (for example, click **Edit > General download options... > Formats**). Add a format like **mp4** to the **List of preferred formats**, then add the same format to **If a merge is required after post-processing, output to this format**.
For some reason, youtube-dl ignores the download option unless the format is specified in both places. (You will see a warning if you forget.)
@ -2011,7 +2109,7 @@ For some reason, youtube-dl ignores the download option unless the format is spe
Tartube can merge a video and audio file together, long after they have been downloaded - see `6.25 More information about FFmpeg and AVConv`_.
7.15 Too many folders in the main window
7.14 Too many folders in the main window
----------------------------------------
*Q: The main window is full of folders I never use! I can't see my own channels, playlists and folders!*
@ -2026,14 +2124,14 @@ A: In the main menu, click **Edit > System preferences... > Windows > Videos**,
A: If you have many channels and playlists, create a folder, and then drag-and-drop some channels/playlists into it
7.16 Not enough videos in the main window
7.15 Not enough videos in the main window
-----------------------------------------
*Q: I want to see all the videos on a single page, not spread over several pages!*
A: At the bottom of the **Tartube** window, set the page size to zero, and press **ENTER**.
7.17 Toolbar is too small
7.16 Toolbar is too small
-------------------------
*Q: The toolbar is too small! There isn't enough room for all the buttons!*
@ -2042,14 +2140,14 @@ A: Click **Edit > System preferences... > Windows > Main window** and then click
MS Windows users can already see a toolbar without labels.
7.18 Toolbar is too big
7.17 Toolbar is too big
-----------------------
*Q: The toolbar is too big! Make it go away!*
A: Click **Edit > System preferences... > Windows > Main window**, and then click **Don't show the main window toolbar**. The new setting is applied when you restart **Tartube**.
7.19 YouTube name/password not accepted
7.18 YouTube name/password not accepted
---------------------------------------
*Q: I added my YouTube username and password, but I am still seeing authentification errors!*
@ -2066,7 +2164,7 @@ Having created the file, in the same edit window, click the **General** tab. In
See also the **Tartube** thread `here <https://github.com/axcore/tartube/issues/68>`__.
7.20 Georestriction workarounds don't work
7.19 Georestriction workarounds don't work
------------------------------------------
*Q: I want to download a video, but it's blocked in my region. I set the geostriction workarounds, but I still can't download the video!*
@ -2077,7 +2175,7 @@ Unfortunately, although these options exist, websites are not compelled to respe
In many cases, the only remedy is to buy a subscription to a `VPN <https://en.wikipedia.org/wiki/Virtual_private_network>`__.
7.21 Video website blocks me
7.20 Video website blocks me
----------------------------
*Q: I downloaded some videos from a channel, but then YouTube blocked me, and I can't download the rest of them!*
@ -2090,7 +2188,7 @@ A: You can specify a list of proxies (**Edit > System preferences... > Operation
Unfortunately, it is not possible to switch between proxies while downloading a channel (youtube-dl does not offer that functionality). But the proxy list will work well if you're trying to download ten different channels.
7.22 MS Windows installer is too big
7.21 MS Windows installer is too big
------------------------------------
*Q: Why is the Windows installer so big?*
@ -2112,14 +2210,16 @@ The NSIS scripts used to create the installers can be found here:
The scripts contain full instructions, so you should be able to create your own installer and then compare it to the official one.
7.23 Doesn't work on 32-bit Windows
7.22 Doesn't work on 32-bit Windows
-----------------------------------
*Q: Tartube does not install/work on 32-bit Windows*
A: Cygwin and MSYS2 have `dropped support for 32-bit Windows <https://www.msys2.org/news/#2020-05-17-32-bit-msys2-no-longer-actively-supported>`__. This means that some Tartube features do not work on 32-bit systems and, at some point, Tartube will no longer be supported on 32-bit systems as well.
A: Cygwin and MSYS2 have `dropped support for 32-bit Windows <https://www.msys2.org/news/#2020-05-17-32-bit-msys2-no-longer-actively-supported>`__.
7.24 Tartube can't detect livestreams
Therefore there will be no further releases of Tartube for 32-bit Windows. Old installers will still work, and for a time it will still be possible to use them to install Tartube and youtube-dl. However, as of March 2022 it is already not possible to install FFmpeg.
7.23 Tartube can't detect livestreams
-------------------------------------
*Q: Tartube can't detect upcoming livestreams at all!*
@ -2130,16 +2230,16 @@ If the `Python feedparser module <https://pypi.org/project/feedparser/>`__ is no
**pip3 install feedparser**
The Tartube installer for 64-bit MS Windows already contains a copy of **feedparser**, so there is no need to install it again. At the time of writing, **Tartube** cannot detect livestreams on 32-bit MS Windows.
The Tartube installer for 64-bit MS Windows already contains a copy of **feedparser**, so there is no need to install it again.
7.25 Livestream is already finished
7.24 Livestream is already finished
-----------------------------------
*Q: Tartube is showing a livestream that finished hours/days/centuries ago!*
A: Right-click the video and select **Livestream > Not a livestream**.
7.26 Can't hear livestream alarms
7.25 Can't hear livestream alarms
---------------------------------
*Q: I set an alarm for an upcoming livestream, but I didn't hear anything!*
@ -2150,9 +2250,9 @@ If the `Python playsound module <https://pypi.org/project/playsound/>`__ is not
**pip3 install playsound**
The Tartube installer for 64-bit MS Windows already contains a copy of **playsound**, so there is no need to install it again. At the time of writing, **playsound** cannot ne installed on 32-bit MS Windows.
The Tartube installer for 64-bit MS Windows already contains a copy of **playsound**, so there is no need to install it again.
7.27 Some icons not visible
7.26 Some icons not visible
---------------------------
*Q: Icons in the Videos tab are broken! They all look the same!*
@ -2163,7 +2263,7 @@ A: Since v2.4, **Tartube** uses a set of custom icons, replacing system (stock)
If you want to restore stock icons, click **Edit > System preferences... > Windows > Main window** and then click **Replace stock icons with custom icons (in case stock icons are not visible)** to deselect it. Click the **OK** button to close the window, then restart **Tartube**.
7.28 Video thumbnails not visible
7.27 Video thumbnails not visible
---------------------------------
*Q: Tartube doesn't download video thumbnails any more! It used to work fine!*
@ -2177,14 +2277,14 @@ If you have already downloaded a lot of **.webp** images, you can ask **Tartube*
* Click **Operations > Tidy up files...**
* In the dialogue window, click **Convert .webp files to .jpg using FFmpeg** to select it, then click the **OK** button
7.29 Video text not visible
7.28 Video text not visible
---------------------------
*Q: I can't see the text below each video!*
A: If the background colours in the Video Catalogue are getting in the way, you can change them: click **Edit > Sysem preferences... > Windows > Colours**.
7.30 Graphs not visible
7.29 Graphs not visible
-----------------------
*Q: My buddy installed Tartube, and he showed me some download history graphs. But when I looked for that on my computer, I couldn't find them!*
@ -2200,7 +2300,7 @@ On MS Windows, do this:
- In Tartube's main menu, select **System > Open MSYS2 terminal...**
- In the terminal window, type **pacman -S mingw-w64-x86_64-python-matplotlib**.
7.31 Tartube is not visible in the system tray
7.30 Tartube is not visible in the system tray
----------------------------------------------
*Q: Tartube is not visible in the system tray! There is just an empty space where the Tartube icon should be!*
@ -2209,7 +2309,7 @@ A: This problem exists on certain Linux desktop environments (e.g. `Cinnamon <ht
Other desktop environments (e.g. `MATE <https://mate-desktop.org/>`__) display the **Tartube** icon correctly.
7.32 Tartube is not portable
7.31 Tartube is not portable
----------------------------
*Q: I want to install Tartube on a USB stick. How do I make Tartube portable?*
@ -2226,7 +2326,7 @@ However, you can create an empty **settings.json** file in the source code direc
You can see both locations by clicking **Edit > System preferences... > Files > Config**.
7.33 Run out of disk space
7.32 Run out of disk space
--------------------------
*Q: When I try to download videos, Tartube refuses, complaining "You have only X / Y Mb remaining on your device". But I'm using an external hard drive with over a trillion terabytes of empty space!*
@ -2237,14 +2337,7 @@ This seems to be an issue with the virtualisation software itself (we have confi
The only thing that can be done is to disable the checks and warnings altogether. Click **Edit > System preferences > Files > Device**, and deselect both **Warn user if disk space is less than** and **Halt downloads if disk space is less than**.
7.34 British spelling
---------------------
*Q: These British spellings are getting on my nerves!*
A: Click **Edit > System preferences... > General > Language**, then click the drop-down box to select American English, and then restart **Tartube**
7.35 No puedo hablar inglés
7.33 No puedo hablar inglés
---------------------------
*Q: ¡No puedo usar YouTube porque no hablo inglés!*

View File

@ -1 +1 @@
2.3.393
2.3.447

View File

@ -17,7 +17,7 @@ Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
All files in the ../large sub-directory
All files in the ../msg sub-directory
All files in the ../overlays sub-directory
All files in the ../small sub-directory
Most files in the ../small sub-directory
All files in the ../stock sub-directory
All files in the ../toolbar sub-directory
@ -29,6 +29,12 @@ License. To view a copy of this license, visit
http://creativecommons.org/licenses/by/3.0/ or send a letter to Creative
Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
../small/subs.png
Author: WGBH
Source: https://en.wikipedia.org/wiki/Closed_captioning
This file is in the public domain.
All files in the ../locale directory
These files are in the public domain.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
icons/small/subs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 927 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,379 +0,0 @@
# Tartube v2.3.393 installer script for MS Windows
#
# 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
# Foundation, either version 3 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, see <http://www.gnu.org/licenses/>.
#
#
# Build instructions:
# - These instructions describe how to create an installer for Tartube on a
# 32-bit MS Windows machine, Windows Vista or higher. For 64-bit machines
# see the tartube_install_64bit.nsi file
#
# - Download and install NSIS from
#
# http://nsis.sourceforge.io/Download/
#
# - Download the 32-bit version of MSYS2. The downloadable file should look
# something like 'msys2-i686-yyyymmdd.exe'
#
# http://www.msys2.org/
#
# - Run the file to install MSYS2. We suggest that you create a directory
# called C:\testme, and then let MSYS2 install itself inside that
# directory, i.e. C:\testme\msys32
#
# - Run the mingw32 terminal, i.e.
#
# C:\testme\msys32\mingw32.exe
#
# - We need to install various dependencies. In the terminal window, type
# this command
#
# pacman -Syu
#
# - Usually, the terminal window tells you to close it. Do that, and then
# open a new mingw32 terminal window
#
# - In the new window, type these commands
#
# pacman -Su
# pacman -S mingw-w64-i686-python3
# pacman -S mingw-w64-i686-python3-pip
# pacman -S mingw-w64-i686-python3-gobject
# pacman -S mingw-w64-i686-python3-requests
# pacman -S mingw-w64-i686-gtk3
# pacman -S mingw-w64-i686-gsettings-desktop-schemas
#
# - Optional step: you can check that the dependencies are working by typing
# this command (if you like):
#
# gtk3-demo
#
# - The C:\testme folder now contains about 2GB of data. If you like, you can
# use all of it (which would create an installer of about 600MB). In most
# cases, though, you will probably want to remove everything that's not
# necessary. This table shows which files and folders are in the official
# Tartube installer (which is about 90MB). Everything else can be
# deleted:
#
# C:\testme\msys32\dev
# C:\testme\msys32\etc
# C:\testme\msys32\home
# C:\testme\msys32\mingw32.exe
# C:\testme\msys32\minwg32\bin
# C:\testme\msys32\minwg32\bin\gdbus*
# C:\testme\msys32\minwg32\bin\gdk*
# C:\testme\msys32\minwg32\bin\gettext*
# C:\testme\msys32\minwg32\bin\gio*
# C:\testme\msys32\minwg32\bin\glib*
# C:\testme\msys32\minwg32\bin\gobject*
# C:\testme\msys32\minwg32\bin\gtk*
# C:\testme\msys32\minwg32\bin\json*
# C:\testme\msys32\minwg32\bin\lib*
# C:\testme\msys32\minwg32\bin\openssl
# C:\testme\msys32\minwg32\bin\pip*
# C:\testme\msys32\minwg32\bin\python*
# C:\testme\msys32\minwg32\bin\pyenv*
# C:\testme\msys32\minwg32\bin\sqlite*
# C:\testme\msys32\minwg32\bin\zlib1.dll
# C:\testme\msys32\minwg32\include\gdk-pixbuf-2.0
# C:\testme\msys32\minwg32\include\gio-win32-2.0
# C:\testme\msys32\minwg32\include\glib-2.0
# C:\testme\msys32\minwg32\include\gsettings-desktop-schemas
# C:\testme\msys32\minwg32\include\gtk-3.0
# C:\testme\msys32\minwg32\include\json-glib-1.0
# C:\testme\msys32\minwg32\include\ncurses
# C:\testme\msys32\minwg32\include\ncursesw
# C:\testme\msys32\minwg32\include\openssl
# C:\testme\msys32\minwg32\include\pycairo
# C:\testme\msys32\minwg32\include\pygobject-3.0
# C:\testme\msys32\minwg32\include\python3.7
# C:\testme\msys32\minwg32\include\readline
# C:\testme\msys32\minwg32\include\tk8.6
# C:\testme\msys32\minwg32\lib\gdk-pixbuf-2.0
# C:\testme\msys32\minwg32\lib\gettext
# C:\testme\msys32\minwg32\lib\girepository-1.0
# C:\testme\msys32\minwg32\lib\glib-2.0
# C:\testme\msys32\minwg32\lib\gtk-3.0
# C:\testme\msys32\minwg32\lib\python3.8\collections
# C:\testme\msys32\minwg32\lib\python3.8\ctypes
# C:\testme\msys32\minwg32\lib\python3.8\distutils
# C:\testme\msys32\minwg32\lib\python3.8\email
# C:\testme\msys32\minwg32\lib\python3.8\encodings
# C:\testme\msys32\minwg32\lib\python3.8\ensurepip
# C:\testme\msys32\minwg32\lib\python3.8\html
# C:\testme\msys32\minwg32\lib\python3.8\http
# C:\testme\msys32\minwg32\lib\python3.8\importlib
# C:\testme\msys32\minwg32\lib\python3.8\json
# C:\testme\msys32\minwg32\lib\python3.8\lib2to3
# C:\testme\msys32\minwg32\lib\python3.8\lib-dynload
# C:\testme\msys32\minwg32\lib\python3.8\logging
# C:\testme\msys32\minwg32\lib\python3.8\msilib
# C:\testme\msys32\minwg32\lib\python3.8\multiprocessing
# C:\testme\msys32\minwg32\lib\python3.8\site-packages
# C:\testme\msys32\minwg32\lib\python3.8\sqlite3
# C:\testme\msys32\minwg32\lib\python3.8\urllib
# C:\testme\msys32\minwg32\lib\python3.8\xml
# C:\testme\msys32\minwg32\lib\python3.8\xmlrpc
# C:\testme\msys32\minwg32\lib\python3.8\*.py
# C:\testme\msys32\minwg32\lib\thread2.8.4
# C:\testme\msys32\minwg32\lib\tk8.6
# C:\testme\msys32\minwg32\share\gettext
# C:\testme\msys32\minwg32\share\gir-1.0
# C:\testme\msys32\minwg32\share\glib-2.0
# C:\testme\msys32\minwg32\share\gtk-3.0
# C:\testme\msys32\minwg32\share\icons
# C:\testme\msys32\minwg32\share\locale\en*
# C:\testme\msys32\minwg32\share\locale\locale.alias
# C:\testme\msys32\minwg32\share\themes
# C:\testme\msys32\minwg32\share\thumbnailers
# C:\testme\msys32\minwg32\ssl
# C:\testme\msys32\tmp
# C:\testme\msys32\usr\bin\bash
# C:\testme\msys32\usr\bin\chmod
# C:\testme\msys32\usr\bin\cut
# C:\testme\msys32\usr\bin\cygpath
# C:\testme\msys32\usr\bin\cygwin-console-helper
# C:\testme\msys32\usr\bin\dir
# C:\testme\msys32\usr\bin\env
# C:\testme\msys32\usr\bin\find
# C:\testme\msys32\usr\bin\findfs
# C:\testme\msys32\usr\bin\gpg*
# C:\testme\msys32\usr\bin\hostid
# C:\testme\msys32\usr\bin\hostname
# C:\testme\msys32\usr\bin\iconv
# C:\testme\msys32\usr\bin\id
# C:\testme\msys32\usr\bin\ln
# C:\testme\msys32\usr\bin\lndir
# C:\testme\msys32\usr\bin\locale
# C:\testme\msys32\usr\bin\ls
# C:\testme\msys32\usr\bin\mintty
# C:\testme\msys32\usr\bin\mkdir
# C:\testme\msys32\usr\bin\msys-2.0.dll
# C:\testme\msys32\usr\bin\msys-assuan-0.dll
# C:\testme\msys32\usr\bin\msys-bz2-1.dll
# C:\testme\msys32\usr\bin\msys-gcc_s-1.dll
# C:\testme\msys32\usr\bin\msys-gcrypt-20.dll
# C:\testme\msys32\usr\bin\msys-gio-2.0-0.dll
# C:\testme\msys32\usr\bin\msys-glib-2.0-0.dll
# C:\testme\msys32\usr\bin\msys-gobject-2.0-0.dll
# C:\testme\msys32\usr\bin\msys-gpg-error-0.dll
# C:\testme\msys32\usr\bin\msys-gpgme-11.dll
# C:\testme\msys32\usr\bin\msys-gpgmepp-6.dll
# C:\testme\msys32\usr\bin\msys-gthread-2.0-0.dll
# C:\testme\msys32\usr\bin\msys-iconv-2.dll
# C:\testme\msys32\usr\bin\msys-intl-8.dll
# C:\testme\msys32\usr\bin\msys-ncurses++w6.dll
# C:\testme\msys32\usr\bin\msys-ncursesw6.dll
# C:\testme\msys32\usr\bin\msys-readline8.dll
# C:\testme\msys32\usr\bin\msys-sqlite3-0.dll
# C:\testme\msys32\usr\bin\msys-stdc++06.dll
# C:\testme\msys32\usr\bin\msys-z.dll
# C:\testme\msys32\usr\bin\pac*
# C:\testme\msys32\usr\bin\test
# C:\testme\msys32\usr\bin\tzset
# C:\testme\msys32\usr\lib\gettext
# C:\testme\msys32\usr\lib\gio
# C:\testme\msys32\usr\lib\openssl
# C:\testme\msys32\usr\lib\python3.8
# C:\testme\msys32\usr\share\cygwin
# C:\testme\msys32\usr\share\glib-2.0
# C:\testme\msys32\usr\share\mintty
# C:\testme\msys32\usr\share\Msys
# C:\testme\msys32\usr\share\pacman
# C:\testme\msys32\usr\share\pactoys
# C:\testme\msys32\usr\ssl
# C:\testme\msys32\var\lib\pacman
#
# - The followng optional dependencies are required for fetching livestreams.
# If you decide to install them (it's recommended that you do), run the
# mingw32 terminal again, if it's not still open
#
# C:\testme\msys32\mingw32.exe
#
# - In the terminal window, type
#
# pip3 install feedparser
# pip3 install playsound
#
# - In the terminal window, you could add the following optional packages:
#
# pacman -S mingw-w64-i686-aria2
# pacman -S mingw-w64-i686-python-matplotlib
#
# - AtomicParsley, if you want it, can be copied to this location:
#
# C:\testme\msys32\usr\bin
#
# - Now download the Tartube source code from
#
# https://sourceforge.net/projects/tartube/
#
# - Extract it, and copy the whole 'tartube' folder to
#
# C:\testme\msys32\home\YOURNAME
#
# - Note that YOURNAME should be substituted for your actual Windows
# username. For example, the copied folder might be
#
# C:\testme\msys32\home\alice\tartube
#
# - Next, COPY all the remaining files in
# C:\testme\msys32\home\YOURNAME\tartube\nsis to C:\testme
#
# - Create the installer by compiling the NSIS script,
# C:\testme\tartube_install_32bit.nsi (the quickest way to do this is
# by right-clicking the file and selecting 'Compile NSIS script file')
#
# - When NSIS is finished, the installer appears in C:\testme
# Header files
# -------------------------------
!include "MUI2.nsh"
!include "Sections.nsh"
# General
# -------------------------------
;Name and file
Name "Tartube"
OutFile "install-tartube-2.3.393-32bit.exe"
;Default installation folder
InstallDir "$LOCALAPPDATA\Tartube"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\Tartube" ""
;Request application privileges for Windows Vista
RequestExecutionLevel user
; Extra stuff here
BrandingText " "
# Variables
# -------------------------------
### Var StartMenuFolder
# Interface settings
# -------------------------------
!define MUI_ABORTWARNING
!define MUI_ICON "tartube_icon.ico"
!define MUI_UNICON "tartube_icon.ico"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "tartube_header.bmp"
!define MUI_HEADERIMAGE_UNBITMAP "tartube_header.bmp"
!define MUI_WELCOMEFINISHPAGE_BITMAP "tartube_wizard.bmp"
# Pages
# -------------------------------
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "license.txt"
!insertmacro MUI_PAGE_DIRECTORY
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Tartube"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Startmenu"
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Tartube"
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\msys32\home\user\tartube\tartube_32bit.bat"
!define MUI_FINISHPAGE_RUN_TEXT "Run Tartube"
!define MUI_FINISHPAGE_RUN_NOTCHECKED
!define MUI_FINISHPAGE_LINK "Visit the Tartube website for the latest news \
and support"
!define MUI_FINISHPAGE_LINK_LOCATION "http://tartube.sourceforge.io/"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
# Languages
# -------------------------------
!insertmacro MUI_LANGUAGE "English"
# Installer sections
# -------------------------------
Section "Tartube" SecClient
SectionIn RO
SetOutPath "$INSTDIR"
File "tartube_icon.ico"
File /r msys32
SetOutPath "$INSTDIR\msys32\home\user\tartube"
# Start Menu
CreateDirectory "$SMPROGRAMS\Tartube"
CreateShortCut "$SMPROGRAMS\Tartube\Tartube.lnk" \
"$INSTDIR\msys32\home\user\tartube\tartube_32bit.bat" \
"" "$INSTDIR\tartube_icon.ico" "" SW_SHOWMINIMIZED
CreateShortCut "$SMPROGRAMS\Tartube\Uninstall Tartube.lnk" \
"$INSTDIR\Uninstall.exe" \
"" "$INSTDIR\tartube_icon.ico"
# Desktop icon
CreateShortcut "$DESKTOP\Tartube.lnk" \
"$INSTDIR\msys32\home\user\tartube\tartube_32bit.bat" \
"" "$INSTDIR\tartube_icon.ico" "" SW_SHOWMINIMIZED
# Store installation folder
# Commented out from v1.5.0; these instructions don't work, and probably
# aren't necessary anyway
# WriteRegStr HKLM \
# "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube" \
# "DisplayName" "Tartube"
# WriteRegStr HKLM \
# "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube" \
# "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
# WriteRegStr HKLM \
# "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube" \
# "Publisher" "A S Lewis"
# WriteRegStr HKLM \
# "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube" \
# "DisplayVersion" "2.3.393"
# Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
SectionEnd
# Uninstaller sections
# -------------------------------
Section "Uninstall"
Delete "$SMPROGRAMS\Tartube\Tartube.lnk"
Delete "$SMPROGRAMS\Tartube\Uninstall Tartube.lnk"
Delete "$SMPROGRAMS\Tartube\Gtk graphics test.lnk"
RMDir /r "$SMPROGRAMS\Tartube"
Delete "$DESKTOP\Tartube.lnk"
RMDir /r "$INSTDIR"
Delete "$INSTDIR\Uninstall.exe"
DeleteRegKey HKLM \
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube"
SectionEnd

View File

@ -1,4 +1,4 @@
# Tartube v2.3.393 installer script for MS Windows
# Tartube v2.3.447 installer script for MS Windows
#
# Copyright (C) 2019-2022 A S Lewis
#
@ -17,8 +17,7 @@
#
# Build instructions:
# - These instructions describe how to create an installer for Tartube on a
# 64-bit MS Windows machine, Windows Vista or higher. For 32-bit machines
# see the tartube_install_32bit.nsi file
# 64-bit MS Windows machine, Windows Vista or higher
#
# - Download and install NSIS from
#
@ -29,9 +28,9 @@
#
# http://www.msys2.org/
#
# - Run the file to install MSYS2. We suggest that you create a directory
# called C:\testme, and then let MSYS2 install itself inside that
# directory, i.e. C:\testme\msys64
# - Run the file to install MSYS2. We suggest that you create a top-level
# folder. Here, we call it C:\testme. Let MSYS2 install itself inside
# that directory, i.e. C:\testme\msys64
#
# - Run the mingw64 terminal, i.e.
#
@ -63,13 +62,22 @@
# - The C:\testme folder now contains about 2GB of data. If you like, you can
# use all of it (which would create an installer of about 600MB). In most
# cases, though, you will probably want to remove everything that's not
# necessary. This table shows which files and folders are in the official
# Tartube installer (which is about 90MB). Everything else can be
# deleted:
# necessary
#
# - This table shows which files and folders are in the official Tartube
# installer (which is about 120MB). Files/folders ending in * represent
# multiple files/folders which must be retained. Everything else can be
# deleted
#
# - Note that version numbers will change over time; retain which version of
# the file/folder is available
#
# C:\testme\msys64\clang64
# C:\testme\msys64\clangarm64
# C:\testme\msys64\dev
# C:\testme\msys64\etc
# C:\testme\msys64\home
# C:\testme\msys64\installerResources
# C:\testme\msys64\mingw64.exe
# C:\testme\msys64\mingw64\bin
# C:\testme\msys64\mingw64\bin\gdbus*
@ -78,14 +86,17 @@
# C:\testme\msys64\mingw64\bin\gio*
# C:\testme\msys64\mingw64\bin\glib*
# C:\testme\msys64\mingw64\bin\gobject*
# C:\testme\msys64\mingw64\bin\gsettings
# C:\testme\msys64\mingw64\bin\gtk*
# C:\testme\msys64\mingw64\bin\img2webp
# C:\testme\msys64\mingw64\bin\json*
# C:\testme\msys64\mingw64\bin\lib*
# C:\testme\msys64\mingw64\bin\msvcr*
# C:\testme\msys64\mingw64\bin\openssl
# C:\testme\msys64\mingw64\bin\pip*
# C:\testme\msys64\mingw64\bin\python*
# C:\testme\msys64\mingw64\bin\pyenv*
# C:\testme\msys64\mingw64\bin\sqlite*
# C:\testme\msys64\mingw64\bin\xml*
# C:\testme\msys64\mingw64\bin\zlib1.dll
# C:\testme\msys64\mingw64\include\gdk-pixbuf-2.0
# C:\testme\msys64\mingw64\include\gio-win32-2.0
@ -93,12 +104,13 @@
# C:\testme\msys64\mingw64\include\gsettings-desktop-schemas
# C:\testme\msys64\mingw64\include\gtk-3.0
# C:\testme\msys64\mingw64\include\json-glib-1.0
# C:\testme\msys64\mingw64\include\libxml2
# C:\testme\msys64\mingw64\include\ncurses
# C:\testme\msys64\mingw64\include\ncursesw
# C:\testme\msys64\mingw64\include\openssl
# C:\testme\msys64\mingw64\include\pycairo
# C:\testme\msys64\mingw64\include\pygobject-3.0
# C:\testme\msys64\mingw64\include\python3.8
# C:\testme\msys64\mingw64\include\python3.9
# C:\testme\msys64\mingw64\include\readline
# C:\testme\msys64\mingw64\include\tk8.6
# C:\testme\msys64\mingw64\lib\gdk-pixbuf-2.0
@ -106,40 +118,53 @@
# C:\testme\msys64\mingw64\lib\girepository-1.0
# C:\testme\msys64\mingw64\lib\glib-2.0
# C:\testme\msys64\mingw64\lib\gtk-3.0
# C:\testme\msys64\mingw64\lib\python3.8\collections
# C:\testme\msys64\mingw64\lib\python3.8\ctypes
# C:\testme\msys64\mingw64\lib\python3.8\distutils
# C:\testme\msys64\mingw64\lib\python3.8\email
# C:\testme\msys64\mingw64\lib\python3.8\encodings
# C:\testme\msys64\mingw64\lib\python3.8\ensurepip
# C:\testme\msys64\mingw64\lib\python3.8\html
# C:\testme\msys64\mingw64\lib\python3.8\http
# C:\testme\msys64\mingw64\lib\python3.8\importlib
# C:\testme\msys64\mingw64\lib\python3.8\json
# C:\testme\msys64\mingw64\lib\python3.8\lib2to3
# C:\testme\msys64\mingw64\lib\python3.8\lib-dynload
# C:\testme\msys64\mingw64\lib\python3.8\logging
# C:\testme\msys64\mingw64\lib\python3.8\msilib
# C:\testme\msys64\mingw64\lib\python3.8\multiprocessing
# C:\testme\msys64\mingw64\lib\python3.8\site-packages
# C:\testme\msys64\mingw64\lib\python3.8\sqlite3
# C:\testme\msys64\mingw64\lib\python3.8\urllib
# C:\testme\msys64\mingw64\lib\python3.8\xml
# C:\testme\msys64\mingw64\lib\python3.8\xmlrpc
# C:\testme\msys64\mingw64\lib\python3.8\*.py
# C:\testme\msys64\mingw64\lib\python3.9\asyncio
# C:\testme\msys64\mingw64\lib\python3.9\collections
# C:\testme\msys64\mingw64\lib\python3.9\concurrent
# C:\testme\msys64\mingw64\lib\python3.9\ctypes
# C:\testme\msys64\mingw64\lib\python3.9\distutils
# C:\testme\msys64\mingw64\lib\python3.9\email
# C:\testme\msys64\mingw64\lib\python3.9\encodings
# C:\testme\msys64\mingw64\lib\python3.9\ensurepip
# C:\testme\msys64\mingw64\lib\python3.9\html
# C:\testme\msys64\mingw64\lib\python3.9\http
# C:\testme\msys64\mingw64\lib\python3.9\importlib
# C:\testme\msys64\mingw64\lib\python3.9\json
# C:\testme\msys64\mingw64\lib\python3.9\lib2to3
# C:\testme\msys64\mingw64\lib\python3.9\lib-dynload
# C:\testme\msys64\mingw64\lib\python3.9\logging
# C:\testme\msys64\mingw64\lib\python3.9\msilib
# C:\testme\msys64\mingw64\lib\python3.9\multiprocessing
# C:\testme\msys64\mingw64\lib\python3.9\site-packages
# C:\testme\msys64\mingw64\lib\python3.9\sqlite3
# C:\testme\msys64\mingw64\lib\python3.9\urllib
# C:\testme\msys64\mingw64\lib\python3.9\xml
# C:\testme\msys64\mingw64\lib\python3.9\xmlrpc
# C:\testme\msys64\mingw64\lib\python3.9\*.py
# C:\testme\msys64\mingw64\lib\thread2.8.4
# C:\testme\msys64\mingw64\lib\sqlite3.36.0
# C:\testme\msys64\mingw64\lib\terminfo
# C:\testme\msys64\mingw64\lib\thread2.8.4
# C:\testme\msys64\mingw64\lib\tk8.6
# C:\testme\msys64\mingw64\share\gettext
# C:\testme\msys64\mingw64\share\gettext*
# C:\testme\msys64\mingw64\share\gir-1.0
# C:\testme\msys64\mingw64\share\glib-2.0
# C:\testme\msys64\mingw64\share\gtk-3.0
# C:\testme\msys64\mingw64\share\icons
# C:\testme\msys64\mingw64\share\locale\en*
# C:\testme\msys64\mingw64\share\locale\locale.alias
# C:\testme\msys64\mingw64\share\sqlite
# C:\testme\msys64\mingw64\share\terminfo
# C:\testme\msys64\mingw64\share\themes
# C:\testme\msys64\mingw64\share\thumbnailers
# C:\testme\msys64\mingw64\share\xml
# C:\testme\msys64\mingw64\ssl
# C:\testme\msys64\tmp
# C:\testme\msys64\ucrt64
# C:\testme\msys64\usr\bin\core_perl
# C:\testme\msys64\usr\bin\site_perl
# C:\testme\msys64\usr\bin\vendor_perl
# C:\testme\msys64\usr\bin\AtomicParsley
# C:\testme\msys64\usr\bin\bash
# C:\testme\msys64\usr\bin\chmod
# C:\testme\msys64\usr\bin\cut
@ -149,19 +174,26 @@
# C:\testme\msys64\usr\bin\env
# C:\testme\msys64\usr\bin\find
# C:\testme\msys64\usr\bin\findfs
# C:\testme\msys64\usr\bin\getent
# C:\testme\msys64\usr\bin\gettext*
# C:\testme\msys64\usr\bin\gio-querymodules
# C:\testme\msys64\usr\bin\glib-compile-schemas
# C:\testme\msys64\usr\bin\gobject-query
# C:\testme\msys64\usr\bin\gpg*
# C:\testme\msys64\usr\bin\grep
# C:\testme\msys64\usr\bin\hostid
# C:\testme\msys64\usr\bin\hostname
# C:\testme\msys64\usr\bin\iconv
# C:\testme\msys64\usr\bin\id
# C:\testme\msys64\usr\bin\ln
# C:\testme\msys64\usr\bin\lndir
# C:\testme\msys64\usr\bin\locale
# C:\testme\msys64\usr\bin\ls
# C:\testme\msys64\usr\bin\mintty
# C:\testme\msys64\usr\bin\mkdir
# C:\testme\msys64\usr\bin\msys-2.0.dll
# C:\testme\msys64\usr\bin\msys-argp-0.dll
# C:\testme\msys64\usr\bin\msys-assuan-0.dll
# C:\testme\msys64\usr\bin\msys-atomic-1.dll
# C:\testme\msys64\usr\bin\msys-bz2-1.dll
# C:\testme\msys64\usr\bin\msys-gcc_s-1.dll
# C:\testme\msys64\usr\bin\msys-gcrypt-20.dll
@ -176,27 +208,39 @@
# C:\testme\msys64\usr\bin\msys-intl-8.dll
# C:\testme\msys64\usr\bin\msys-ncurses++w6.dll
# C:\testme\msys64\usr\bin\msys-ncursesw6.dll
# C:\testme\msys64\usr\bin\msys-pcre-1.dll
# C:\testme\msys64\usr\bin\msys-pcre2-8-0.dll
# C:\testme\msys64\usr\bin\msys-readline8.dll
# C:\testme\msys64\usr\bin\msys-sqlite3-0.dll
# C:\testme\msys64\usr\bin\msys-stdc++06.dll
# C:\testme\msys64\usr\bin\msys-z.dll
# C:\testme\msys64\usr\bin\mv
# C:\testme\msys64\usr\bin\pac*
# C:\testme\msys64\usr\bin\rm
# C:\testme\msys64\usr\bin\rmdir
# C:\testme\msys64\usr\bin\sed
# C:\testme\msys64\usr\bin\test
# C:\testme\msys64\usr\bin\tzset
# C:\testme\msys64\usr\bin\uname
# C:\testme\msys64\usr\bin\vercmp
# C:\testme\msys64\usr\bin\which
# C:\testme\msys64\usr\bin\xml*
# C:\testme\msys64\usr\lib\gettext
# C:\testme\msys64\usr\lib\gio
# C:\testme\msys64\usr\lib\openssl
# C:\testme\msys64\usr\lib\python3.8
# C:\testme\msys64\usr\lib\python3.9
# C:\testme\msys64\usr\lib\terminfo
# C:\testme\msys64\usr\lib\thread2.8.5
# C:\testme\msys64\usr\share\cygwin
# C:\testme\msys64\usr\share\glib-2.0
# C:\testme\msys64\usr\share\mintty
# C:\testme\msys64\usr\share\Msys
# C:\testme\msys64\usr\share\pacman
# C:\testme\msys64\usr\share\pactoys
# C:\testme\msys64\usr\share\terminfo
# C:\testme\msys64\usr\ssl
# C:\testme\msys64\var\lib\pacman
#
# - The followng optional dependencies are required for fetching livestreams.
# - The following optional dependencies are required for fetching livestreams.
# If you decide to install them (it's recommended that you do), run the
# mingw64 terminal again, if it's not still open
#
@ -204,6 +248,7 @@
#
# - In the terminal window, type
#
# pip3 install wheel
# pip3 install feedparser
# pip3 install playsound
#
@ -249,7 +294,7 @@
;Name and file
Name "Tartube"
OutFile "install-tartube-2.3.393-64bit.exe"
OutFile "install-tartube-2.3.447-64bit.exe"
;Default installation folder
InstallDir "$LOCALAPPDATA\Tartube"
@ -352,7 +397,7 @@ Section "Tartube" SecClient
# "Publisher" "A S Lewis"
# WriteRegStr HKLM \
# "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tartube" \
# "DisplayVersion" "2.3.393"
# "DisplayVersion" "2.3.447"
# Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"

View File

@ -42,8 +42,8 @@ import mainapp
# 'Global' variables
__packagename__ = 'tartube'
__version__ = '2.3.393'
__date__ = '8 Mar 2022'
__version__ = '2.3.447'
__date__ = '20 Mar 2022'
__copyright__ = 'Copyright \xa9 2019-2022 A S Lewis'
__license__ = """
Copyright \xa9 2019-2022 A S Lewis.
@ -64,7 +64,7 @@ __author_list__ = [
'A S Lewis',
]
__credit_list__ = [
# (This list is formmated to suit Gtk.AboutDialog)
# (This list is formatted to suit Gtk.AboutDialog)
'Partially based on youtube-dl-gui by MrS0m30n3',
'https://github.com/MrS0m30n3/youtube-dl-gui',
'FFmpeg thumbnail code adapted from youtube-dl',
@ -78,8 +78,7 @@ __credit_list__ = [
'https://github.com/mrwnwttk',
]
__description__ = 'A front-end GUI for youtube-dl,\n' \
+ 'partly based on youtube-dl-gui\n' \
+ 'and written in Python 3 / Gtk 3'
+ 'written in Python 3 / Gtk 3'
__website__ = 'http://tartube.sourceforge.io'
__app_id__ = 'io.sourceforge.tartube'
__website_bugs__ = 'https://github.com/axcore/tartube'

View File

@ -42,8 +42,8 @@ import mainapp
# 'Global' variables
__packagename__ = 'tartube'
__version__ = '2.3.393'
__date__ = '8 Mar 2022'
__version__ = '2.3.447'
__date__ = '20 Mar 2022'
__copyright__ = 'Copyright \xa9 2019-2022 A S Lewis'
__license__ = """
Copyright \xa9 2019-2022 A S Lewis.
@ -64,7 +64,7 @@ __author_list__ = [
'A S Lewis',
]
__credit_list__ = [
# (This list is formmated to suit Gtk.AboutDialog)
# (This list is formatted to suit Gtk.AboutDialog)
'Partially based on youtube-dl-gui by MrS0m30n3',
'https://github.com/MrS0m30n3/youtube-dl-gui',
'FFmpeg thumbnail code adapted from youtube-dl',
@ -78,8 +78,7 @@ __credit_list__ = [
'https://github.com/mrwnwttk',
]
__description__ = 'A front-end GUI for youtube-dl,\n' \
+ 'partly based on youtube-dl-gui\n' \
+ 'and written in Python 3 / Gtk 3'
+ 'written in Python 3 / Gtk 3'
__website__ = 'http://tartube.sourceforge.io'
__app_id__ = 'io.sourceforge.tartube'
__website_bugs__ = 'https://github.com/axcore/tartube'

View File

@ -42,8 +42,8 @@ import mainapp
# 'Global' variables
__packagename__ = 'tartube'
__version__ = '2.3.393'
__date__ = '8 Mar 2022'
__version__ = '2.3.447'
__date__ = '20 Mar 2022'
__copyright__ = 'Copyright \xa9 2019-2022 A S Lewis'
__license__ = """
Copyright \xa9 2019-2022 A S Lewis.
@ -64,7 +64,7 @@ __author_list__ = [
'A S Lewis',
]
__credit_list__ = [
# (This list is formmated to suit Gtk.AboutDialog)
# (This list is formatted to suit Gtk.AboutDialog)
'Partially based on youtube-dl-gui by MrS0m30n3',
'https://github.com/MrS0m30n3/youtube-dl-gui',
'FFmpeg thumbnail code adapted from youtube-dl',
@ -78,8 +78,7 @@ __credit_list__ = [
'https://github.com/mrwnwttk',
]
__description__ = 'A front-end GUI for youtube-dl,\n' \
+ 'partly based on youtube-dl-gui\n' \
+ 'and written in Python 3 / Gtk 3'
+ 'written in Python 3 / Gtk 3'
__website__ = 'http://tartube.sourceforge.io'
__app_id__ = 'io.sourceforge.tartube'
__website_bugs__ = 'https://github.com/axcore/tartube'

View File

@ -1 +0,0 @@
usr\bin\mintty.exe -w hide /bin/env MSYSTEM=MINGW32 /bin/bash -lc /home/user/tartube/tartube_mswin.sh

View File

@ -1,13 +1,12 @@
.TH man 1 "8 Mar 2022" "2.3.393" "tartube man page"
.TH man 1 "20 Mar 2022" "2.3.447" "tartube man page"
.SH NAME
tartube \- GUI front-end for youtube-dl
.SH SYNOPSIS
tartube
.SH DESCRIPTION
Tartube is a GUI front-end for youtube-dl, partly based on youtube-dl-gui and
written in Python 3 / Gtk 3. It's a convenient way to download videos from
YouTube and hundreds of other sites (or just to fetch a list of those videos,
if you prefer).
Tartube is a GUI front-end for youtube-dl, written in Python 3 / Gtk 3. It's a
convenient way to download videos from YouTube and hundreds of other sites (or
just to fetch a list of those videos, if you prefer).
.SH OPTIONS
The tartube executable does not take any options.
.SH SEE ALSO

View File

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

View File

@ -31,8 +31,7 @@ long_description="""
Tartube is a GUI front-end for youtube-dl, yt-dlp and other compatible video
downloaders.
It is partly based on youtube-dl-gui and is written in Python 3 / Gtk 3.
Tartube runs on MS Windows, Linux, BSD and MacOS.
It is written in Python 3 / Gtk 3 and runs on MS Windows, Linux, BSD and MacOS.
- You can fetch a list of videos from your favourite channels and playlists on
YouTube, BitChute, and hundreds of other websites
@ -63,8 +62,7 @@ Note for PyPI users: Tartube should be installed with: pip3 install tartube
"""
alt_description = """
Tartube is a GUI front-end for youtube-dl, partly based on youtube-dl-gui
and written in Python 3 / Gtk 3.
Tartube is a GUI front-end for youtube-dl, written in Python 3 / Gtk 3.
"""
# data_files for setuptools.setup are added here
@ -182,7 +180,7 @@ for path in glob.glob('sounds/*'):
# Setup
setuptools.setup(
name='tartube',
version='2.3.333',
version='2.3.447',
description='GUI front-end for youtube-dl',
long_description=long_description,
long_description_content_type='text/plain',

File diff suppressed because it is too large Load Diff

View File

@ -473,7 +473,7 @@ class MessageDialogue(Gtk.MessageDialog):
class FileChooserDialogue(Gtk.FileChooserDialog):
"""Called by dialogue.DialogueManager.show_file_chooser_dialogue().
"""Called by dialogue.DialogueManager.show_file_chooser().
Sub-class for the standard Gtk file chooser dialogue, with a callback to
reduce its size below the the size of the observable universe.

File diff suppressed because it is too large Load Diff

View File

@ -417,10 +417,13 @@ FILE_SIZE_UNIT_LIST = [
]
language_setup_list = [
# ISO 639-1 Language Codes
# ISO 639-1 Language Codes (with one extra key-value pair to handle live
# chat)
# English is top of the list, because it's the default setting in
# options.OptionsManager
'English', 'en',
# NB These values must not contain square brackets [...]
_('English'), 'en',
'YouTube live chat', 'live_chat',
'Abkhazian', 'ab',
'Afar', 'aa',
'Afrikaans', 'af',
@ -461,7 +464,7 @@ language_setup_list = [
'Czech', 'cs',
'Danish', 'da',
'Divehi, Dhivehi, Maldivian', 'dv',
'Dutch', 'nl',
_('Dutch'), 'nl',
'Dzongkha', 'dz',
'Esperanto', 'eo',
'Estonian', 'et',
@ -511,7 +514,7 @@ language_setup_list = [
'Kyrgyz', 'ky',
'Komi', 'kv',
'Kongo', 'kg',
'Korean', 'ko',
_('Korean'), 'ko',
'Kurdish', 'ku',
'Kwanyama', 'kj',
'Lao', 'lo',
@ -626,6 +629,7 @@ DIALOGUE_ICON_DICT = {
'ready_icon': 'ready_icon_64.png',
'setup_classic_icon': 'setup_classic_icon.png',
'system_icon': 'system_icon_64.png',
'yt_icon': 'yt_icon_32.png',
'yt_remind_icon_en': 'yt_remind_icon_en.png',
'yt_remind_icon_kr': 'yt_remind_icon_kr.png',
'yt_remind_icon_nl': 'yt_remind_icon_nl.png',
@ -766,6 +770,7 @@ SMALL_ICON_DICT = {
'slice_small': 'slice.png',
'split_file_small': 'split_file.png',
'stamp_small': 'stamp.png',
'subs_small': 'subs.png',
'system_error_small': 'system_error.png',
'system_warning_small': 'system_warning.png',
'unavailable_small': 'unavailable.png',
@ -869,6 +874,17 @@ else:
'system_icon_512.png',
]
CONFIG_WIN_ICON_LIST = [
'config_icon_16.png',
'config_icon_24.png',
'config_icon_32.png',
'config_icon_48.png',
'config_icon_64.png',
'config_icon_128.png',
'config_icon_256.png',
'config_icon_512.png',
]
def do_translate(config_flag=False):
"""Function called for the first time below, setting various values.

View File

@ -329,7 +329,7 @@ class InfoManager(threading.Thread):
# makes the info operation fail
elif self.info_type == 'subs':
if not re.match('WARNING\:', stderr):
if not re.search('^WARNING\:', stderr):
self.stderr_list.append(stderr)
# When fetching formats, recognise all warnings as errors
@ -376,10 +376,7 @@ class InfoManager(threading.Thread):
# Let the timer run for a few more seconds to prevent Gtk errors (for
# systems with Gtk < 3.24)
GObject.timeout_add(
0,
self.app_obj.info_manager_halt_timer,
)
self.app_obj.info_manager_halt_timer()
def run_check_version(self):
@ -495,10 +492,7 @@ class InfoManager(threading.Thread):
# Let the timer run for a few more seconds to prevent Gtk errors (for
# systems with Gtk < 3.24)
GObject.timeout_add(
0,
self.app_obj.info_manager_halt_timer,
)
self.app_obj.info_manager_halt_timer()
def create_child_process(self, cmd_list):

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1853,6 +1853,10 @@ class Video(GenericMedia):
# playlist)
# For videos whose parent is a media.Folder, the value remains as None
self.index = None
# List of subtitles available for this video. Items in the list are
# language codes gathered from the video's metadata file (e.g.
# 'en_US', 'live_chat')
self.subs_list = []
# Video description. A string of any length, containing newline
# characters if necessary. (Set to None if the video description is
@ -2195,7 +2199,7 @@ class Video(GenericMedia):
# highest number of digits found
# 15:52 Title
result = re.match(regex, line)
result = re.search(regex, line)
if result:
@ -2207,7 +2211,7 @@ class Video(GenericMedia):
else:
# Title 15:52
result = re.match(rev_regex, line)
result = re.search(rev_regex, line)
if result:
title = result.groups()[0]
@ -2495,6 +2499,61 @@ class Video(GenericMedia):
self.comment_list = []
def contains_comment(self, search_text, regex_flag):
"""Called by mainwin.MainWin.video_catalogue_apply_filter().
Returns True if any comment contains the specified 'search_text', or
False if none of them do (of if there are no comments to search).
Args:
search_text(str): The text/pattern for which to search
regex_flag (bool): True if 'search_text' is a regex, False
otherwise
"""
if not regex_flag:
lower_text = search_text.lower()
for mini_dict in self.comment_list:
if mini_dict['text'].find(lower_text) > -1:
return True
else:
for mini_dict in self.comment_list:
if re.search(search_text, mini_dict['text'], re.IGNORECASE):
return True
# No matching comments
return False
def extract_subs_list(self, subs_dict):
"""Called by mainapp.TartubeApp.update_video_from_json() and
downloads.VideoDownloader.confirm_sim_video().
The calling code has extracted a dictionary of subtitles from this
video's metadata. Each key in the dictionary should be a language
code, e.g. 'en_us', 'live_chat'
Use this dictionary to update the IV.
Args:
subs_dict (dict): The dictionary described above
"""
self.subs_list = []
for key in subs_dict.keys():
self.subs_list.append(key)
# Set accessors
@ -2737,6 +2796,11 @@ class Video(GenericMedia):
self.split_flag = False
def reset_subs_list(self):
self.subs_list = []
def set_upload_time(self, unix_time=None):
self.upload_time = int(unix_time)

View File

@ -876,7 +876,8 @@ class OptionsManager(object):
def set_classic_mode_options(self):
"""Called by mainapp.TartubeApp.apply_classic_download_options().
"""Called by mainapp.TartubeApp.start() and
.apply_classic_download_options().
When the user applies download options in the Classic Mode tab, a few
options should have different default values; this function sets them.

File diff suppressed because it is too large Load Diff

View File

@ -217,10 +217,7 @@ class ProcessManager(threading.Thread):
# Let the timer run for a few more seconds to prevent Gtk errors (for
# systems with Gtk < 3.24)
GObject.timeout_add(
0,
self.app_obj.process_manager_halt_timer,
)
self.app_obj.process_manager_halt_timer()
# Open the destination directories, if required
if self.options_obj.options_dict['output_mode'] == 'split' \
@ -408,9 +405,7 @@ class ProcessManager(threading.Thread):
return False
# Update the main window's progress bar
GObject.timeout_add(
0,
self.app_obj.main_win_obj.update_progress_bar,
self.app_obj.main_win_obj.update_progress_bar(
orig_video_obj.name,
self.job_count,
self.job_total,

View File

@ -212,10 +212,7 @@ class RefreshManager(threading.Thread):
# Let the timer run for a few more seconds to prevent Gtk errors (for
# systems with Gtk < 3.24)
GObject.timeout_add(
0,
self.app_obj.refresh_manager_halt_timer,
)
self.app_obj.refresh_manager_halt_timer()
def refresh_from_default_destination(self, media_data_obj):
@ -240,9 +237,7 @@ class RefreshManager(threading.Thread):
# Update the main window's progress bar
self.job_count += 1
GObject.timeout_add(
0,
self.app_obj.main_win_obj.update_progress_bar,
self.app_obj.main_win_obj.update_progress_bar(
media_data_obj.name,
self.job_count,
self.job_total,
@ -509,9 +504,7 @@ class RefreshManager(threading.Thread):
# Update the main window's progress bar
self.job_count += 1
GObject.timeout_add(
0,
self.app_obj.main_win_obj.update_progress_bar,
self.app_obj.main_win_obj.update_progress_bar(
media_data_obj.name,
self.job_count,
self.job_total,

View File

@ -42,8 +42,8 @@ import mainapp
# 'Global' variables
__packagename__ = 'tartube'
__version__ = '2.3.393'
__date__ = '8 Mar 2022'
__version__ = '2.3.447'
__date__ = '20 Mar 2022'
__copyright__ = 'Copyright \xa9 2019-2022 A S Lewis'
__license__ = """
Copyright \xa9 2019-2022 A S Lewis.
@ -64,7 +64,7 @@ __author_list__ = [
'A S Lewis',
]
__credit_list__ = [
# (This list is formmated to suit Gtk.AboutDialog)
# (This list is formatted to suit Gtk.AboutDialog)
'Partially based on youtube-dl-gui by MrS0m30n3',
'https://github.com/MrS0m30n3/youtube-dl-gui',
'FFmpeg thumbnail code adapted from youtube-dl',
@ -78,8 +78,7 @@ __credit_list__ = [
'https://github.com/mrwnwttk',
]
__description__ = 'A front-end GUI for youtube-dl,\n' \
+ 'partly based on youtube-dl-gui\n' \
+ 'and written in Python 3 / Gtk 3'
+ 'written in Python 3 / Gtk 3'
__website__ = 'http://tartube.sourceforge.io'
__app_id__ = 'io.sourceforge.tartube'
__website_bugs__ = 'https://github.com/axcore/tartube'

View File

@ -520,10 +520,7 @@ class TidyManager(threading.Thread):
# Let the timer run for a few more seconds to prevent Gtk errors (for
# systems with Gtk < 3.24)
GObject.timeout_add(
0,
self.app_obj.tidy_manager_halt_timer,
)
self.app_obj.tidy_manager_halt_timer()
def tidy_directory(self, media_data_obj):
@ -541,9 +538,7 @@ class TidyManager(threading.Thread):
# Update the main window's progress bar
self.job_count += 1
GObject.timeout_add(
0,
self.app_obj.main_win_obj.update_progress_bar,
self.app_obj.main_win_obj.update_progress_bar(
media_data_obj.name,
self.job_count,
self.job_total,
@ -844,7 +839,7 @@ class TidyManager(threading.Thread):
archive_path = os.path.abspath(
os.path.join(
media_data_obj.get_default_dir(self.app_obj),
'ytdl-archive.txt',
self.app_obj.ytdl_archive_name,
),
)

View File

@ -260,7 +260,7 @@ class UpdateManager(threading.Thread):
# Ignore pacman warning messages, e.g. 'warning: dependency cycle
# detected:'
if stderr and not re.match('warning\:', stderr):
if stderr and not re.search('^warning\:', stderr):
self.stderr_list.append(stderr)
@ -290,10 +290,7 @@ class UpdateManager(threading.Thread):
# Let the timer run for a few more seconds to prevent Gtk errors (for
# systems with Gtk < 3.24)
GObject.timeout_add(
0,
self.app_obj.update_manager_halt_timer,
)
self.app_obj.update_manager_halt_timer()
def install_ffmpeg_write_output(self, msg, system_cmd_flag=False):
@ -322,8 +319,6 @@ class UpdateManager(threading.Thread):
else:
# Gtk does not like updating the textview from within a Python
# thread. Avoid a crash by using a timer
GObject.timeout_add(
0,
self.wiz_win_obj.ffmpeg_page_write,
@ -520,10 +515,7 @@ class UpdateManager(threading.Thread):
# Let the timer run for a few more seconds to prevent Gtk errors (for
# systems with Gtk < 3.24)
GObject.timeout_add(
0,
self.app_obj.update_manager_halt_timer,
)
self.app_obj.update_manager_halt_timer()
def install_ytdl_write_output(self, msg, system_cmd_flag=False):
@ -552,8 +544,6 @@ class UpdateManager(threading.Thread):
else:
# Gtk does not like updating the textview from within a Python
# thread. Avoid a crash by using a timer
GObject.timeout_add(
0,
self.wiz_win_obj.downloader_page_write,

View File

@ -275,7 +275,7 @@ def check_url(url):
try:
# Add a scheme, if the specified URL doesn't provide one
if not re.match(r'^[a-zA-Z]+://', url):
if not re.search(r'^[a-zA-Z]+://', url):
url = 'http://' + url
final_url = urlparse(urljoin(url, '/'))
@ -396,7 +396,11 @@ clip_path=None):
# If the clips' parent media data object (a channel, playlist or
# folder) is selected in the Video Index, update the Video Catalogue
# for the clip
app_obj.main_win_obj.video_catalogue_update_video(new_video_obj)
GObject.timeout_add(
0,
app_obj.main_win_obj.video_catalogue_update_video,
new_video_obj,
)
return new_video_obj
@ -1112,34 +1116,6 @@ def convert_youtube_to_other(app_obj, url, custom_dl_obj=None):
return url
def debug_time(msg):
"""Called by all functions in downloads.py, info.py, mainapp.py,
mainwin.py, refresh.py, tidy.py and updates.py.
Writes the current time, and the name of the calling function to STDOUT,
e.g. '2020-01-16 08:55:06 ap 91 __init__'.
Args:
msg (str): The message to write
"""
# Uncomment this code to display the time with microseconds
# print(str(datetime.datetime.now().time()) + ' ' + msg)
# Uncomment this code to display the time without microseconds
dt = datetime.datetime.now()
print(str(dt.replace(microsecond=0)) + ' ' + msg)
# Uncomment this code to display the message, without a timestamp
# print(msg)
# This line makes my IDE collapse functions nicely
return
def disk_get_free_space(path, bytes_flag=False):
"""Can be called by anything.
@ -1951,19 +1927,25 @@ custom_dl_obj=None, divert_mode=None):
# If actually downloading videos, use (or create) an archive file so that,
# if the user deletes the videos, youtube-dl won't try to download them
# again
# We don't use an archive file when downloading into a system folder
# We don't use an archive file when downloading into a system folder,
# unless a non-default location for the file has been specified
if (
not dl_classic_flag and app_obj.allow_ytdl_archive_flag \
or dl_classic_flag and app_obj.classic_ytdl_archive_flag
not app_obj.block_ytdl_archive_flag \
and (
not dl_classic_flag and app_obj.allow_ytdl_archive_flag \
or dl_classic_flag and app_obj.classic_ytdl_archive_flag
)
):
if not dl_classic_flag \
and (
not isinstance(media_data_obj, media.Folder)
or not media_data_obj.fixed_flag
or app_obj.allow_ytdl_archive_mode != 'default'
) and (
not isinstance(media_data_obj, media.Video)
or not isinstance(media_data_obj.parent_obj, media.Folder)
or not media_data_obj.parent_obj.fixed_flag
or app_obj.allow_ytdl_archive_mode != 'default'
):
# (Create the archive file in the media data object's default
# sub-directory, not the alternative download destination, as
@ -1973,9 +1955,24 @@ custom_dl_obj=None, divert_mode=None):
else:
dl_path = media_data_obj.get_default_dir(app_obj)
if app_obj.allow_ytdl_archive_mode == 'top':
archive_dir = app_obj.data_dir
elif app_obj.allow_ytdl_archive_mode == 'custom':
if app_obj.allow_ytdl_archive_path is not None \
and app_obj.allow_ytdl_archive_path != '':
archive_dir = app_obj.allow_ytdl_archive_path
else:
# Failsafe
archive_dir = dl_path
else:
# app_obj.allow_ytdl_archive_mode == 'default'
archive_dir = dl_path
options_list.append('--download-archive')
options_list.append(
os.path.abspath(os.path.join(dl_path, 'ytdl-archive.txt')),
os.path.abspath(
os.path.join(archive_dir, app_obj.ytdl_archive_name),
),
)
elif dl_classic_flag:
@ -1985,7 +1982,9 @@ custom_dl_obj=None, divert_mode=None):
options_list.append('--download-archive')
options_list.append(
os.path.abspath(os.path.join(dl_path, 'ytdl-archive.txt')),
os.path.abspath(
os.path.join(dl_path, app_obj.ytdl_archive_name),
),
)
# yt-dlp options
@ -2695,6 +2694,44 @@ dummy_obj=None):
move_thumbnail_to_subdir(app_obj, dummy_obj)
def match_subs(custom_dl_obj, subs_list):
"""Called by downloads.DownloadList.create_item() and
downloads.VideoDownloader.confirm_sim_video().
The CustomDLManager object may specify one or more languages; compare
that list to a video's list of available subtitles, to see if there are any
matches.
Args:
custom_dl_obj (downloads.CustomDLManager): The custom download
mager which specifies a list of languages
subs_list (list): A list of language codes extracted from the video's
metadata, one for each set of subtitles
Return values:
True if any language matches an available subtitle, False if none
of them match
"""
# 'short_code' is a value in formats.LANGUAGE_CODE_DICT, e.g. 'en',
# 'live_chat'
for short_code in custom_dl_obj.dl_if_subs_list:
# media.VideoObj.subs_list contains the language code specified by
# the metadata file, e.g. 'en_US'. Ignore everything but the
# first two letters
for long_code in subs_list:
if long_code.lower().startswith(short_code):
return True
return False
def move_metadata_to_subdir(app_obj, video_obj, ext):
"""Can be called by anything.

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +0,0 @@
set PYTHONHOME=
..\..\..\usr\bin\mintty.exe -w hide /bin/env MSYSTEM=MINGW32 /bin/bash -lc /home/user/tartube/tartube_mswin.sh