v1.20.5 (2024.04.02.)
Bugfixes:
- Download speed calculation fell out of synchron for ~1 second, when the user switched back to a downloading tab.
v1.20.4 (2024.02.18.)
Bugfixes:
- Fixing a theoretical pointer bug caused by the refactoring done in the last version. (Apparently everything worked, but it does not matter: i forgot, that Pascal does not pass the pointers of arrays automatically, but clones the array for the caller, which does not really matter for object arrays (probably this is why were no visible errors), but it does for arrays of simple variable types.)
- Some obscure tab-overindexing bugs have been fixed. (Not likely anyone ran into them.)
Other new stuff:
- Some refactoring and optimizing.
v1.20.3 (2024.02.17.)
Bugfixes:
- Streams with sizes falling into the interval of 2-4 GB and the multiples of it were undownloadable due to HTTP error 416.
-
A bad index caused the Qt5 version of the program to throw up a boundary error message, if the external downloader was used. (Interestingly it did not do it with the merger, even if the bug was present there too.)
Note: This has only affected the Qt5 version of the program and it is not known if it happened with all libqt5 versions, or not.
Bugfixes:
-
Due to a bug in either Qt5 or the Qt5 interface of Lazarus, the textarea's lines in the download window do not extend "on the fly" (right before the writing), if empty strings are inserted. So, writing the status into the newly inserted (empty) lines caused boundary errors. This prevented the download. (And if player logging was enabled, it had thrown an error when the playing has started. Similar things would apply to the external downloader and the merger, but the bug mentioned above prevented this one.) Workarounded by adding spaces, instead of empty lines.
Note: This has only affected the Qt5 version of the program and it is not known if it happened with all libqt5 versions, or not.
Other new stuff:
v1.20.2 (2024.01.22.)
Bugfixes:
- In certain circumstances, if the browser was not running already when the manual was opened from the program, then the browser took the control from the program which did not respond until the browser stopped.
v1.20.1 (2024.01.21.)
Bugfixes:
- Blocking a user in the videolist now will immediately remove the videos of the blocked user from the tabs, you do not have to reload them.
v1.20.0 (2023.12.31.)
Most importantly:
- There is an update notifier, which - if turned on (by default it is not) - tells at start if there is a new version. (BTW, it does nothing else, just queries this plaintext file: http://oscomp.hu/depot/ytfe_direct/version.) Warning: Under OpenBSD the FreePascal HTTP client is still broken, this function cannot be used there. As a workaround, the mentioned link can be checked, as the program does not do anything else anyway. (Naturally, this can be done on other platforms either, but for what.)
Other new stuff:
- We can move with the up/down cursors in the videolists.
Bugfixes:
- F1 brought up the help even if Ctrl/Shift/Alt/Option/Meta/Command keys were pressed too.
v1.19.6 (2023.12.24.)
Bugfixes:
- The search of the currently opened entry in the playlists (for displaying it on the playlist tab) has became broken at one point. (I don't know when. Maybe in the last round. And at invalid links - in certain cases - it even crashed the program.)
v1.19.5 (2023.12.10.)
Bugfixes:
v1.19.4 (2023.11.26.)
Bugfixes:
- Until now, the program did not looked for the
BESENShell
interpreter. (I forgot to add it beside the qjs
. :P )
- Until now, the program did not looked for the
gjs
interpreter. (I had no idea, that there is such. :P )
Bugfixes:
- If there was a space in the media title, then the player only displayed the first word in it's window title. (At least MPV did this.)
v1.19.3 (2023.11.17.)
Bugfixes:
- YT does not give sizes at formats which contains both audio and video streams, however it was introduced in 1.19.1 that the zero-sized formats become ignored, so, if the filter ignored option was enabled, then the "best" format (which i have no idea why is the best, when it always has lower resolution/bitrate than the bulk of the formats) has been disappeared from among the formats.
Bugfixes:
- If we reloaded a page, which was not scrolled to the top, then occasionally the first visible entry description box contained another description.
- On particular systems, the tray icon could not be added to the tray at start and the program crashed. The cause remained unknown, but anyways, if it could not be added, that is now handled and the user will be informed.
v1.19.2 (2023.11.10.)
Bugfixes:
- The focus-fix introduced in 1.19.1 did throw an exception if we sent the live instance an URL and the program's window was not visible.
v1.19.1 (2023.10.30.)
Most importantly:
- There is support for Mac: old Core (32-bit) OSX, Core 2 (64-bit) OSX and M1 macOS; this latter one i can only compile, to run - as in to test and to debug - i cannot.
Bugfixes:
- In the macport path (
/opt/local/bin
) the program did not searched and it did not know the macport binaries (vlc3
, node
, etc.) either. (Of course...)
Bugfixes:
- If the stream was no longer available, because of removal, then play just silently returned. From now, it throws a message, that it is not available.
- The cycling of players (by clicking the label above) did not cycled the flags.
- From the default VLC commandline the subtitle's and window-title's placeholder was missing.
- The program did not know the video window-title-setter flag of VLC.
- If a particular format is not available for some reason (error 503, etc.) and YT marks the size of it as zero bytes due to this, then it will not be visible in the formatlist.
- If a download failed at a not two-streamed (as in: audio and video, separatedly) format, then the download button did not got re-enabled again.
- At downloading, it did not gave up to download the fragment (and the stream) after reaching 25 errors of 0 or 404.
- Until this point, the error 503 (Service unavailable) was handled as blocker too. (Actually this was intentional, but it was not appropriate.)
- In the Qt5 version we pressed Return and did not released it very fast, then - because Qt5 does not allow that there would not be any element in focus - the history back button got focused, then pressed, which killed the search.
v1.19.0 (2023.09.22.)
Most importantly:
Other new stuff:
- Now there is an option to display the pages' type (S = Search, P = Playlist, V = Video, H = Hybrid (Playlist + Video), C = Channel) on the tabs. (Disabled by default, as it was until now.)
- The number of characters displayed on tabs is now configurable. (From 16 to 256, 24 by default, as it was until now.)
Bugfixes:
- YT varied the search pages' place in the JSON, so only a
'<no title>'
were visible on the tabs of the search page panels.
v1.18.7 (2023.07.03.)
Bugfixes:
v1.18.6 (2023.05.07.)
Bugfixes:
- In-text URL handling in descriptions became totally absurd: there are hashtags and truncated URLs in the description, and another JSON node describes what they should be replaced to. By text. Yes, one has to iterate all the subnodes and replace the hashtags and strings starting with
https://
in the subnodes listing order...
v1.18.5 (2023.05.05.)
Most importantly:
- I have a separate OpenBSD 7.2 OpenBSD VM now; that version is updated to 1.18.5.
Bugfixes:
- The handling of the dual-way stored description introduced in 1.18.3 was buggy: branch two's JSON object was not reset to
nil
before processing and thus sometimes it had an invalid pointer.
v1.18.4 (2023.04.29.)
Caveat:
- I have updated my OpenBSD VM from 7.2 to 7.3, but there were ABI breakages in the new OpenBSD 7.3 and 1.18.4 is built on that, therefore it cannot run on older OpenBSD-s. 1.18.3 has been kept for 7.2- for now, until i make another VM for that.
Bugfixes:
- Two bugs were fixed which froze the tab or - in worse case - the program, if at the channels or videos the list did not exist.
v1.18.3 (2023.04.11.)
Bugfixes:
- The program did not know the
mujs
interpreter.
- The description on YT is stored in the JSON two ways and the new way was unknown to the program.
Bugfixes:
- An encapsulation glitch has been fixed. (Apostrophes were missing from the videoplayer's window's title.)
- A bug in the HTML parser was fixed.
v1.18.2 (2023.01.21.)
Bugfixes:
- YT introduced that the URLs of users and channels are presented in the
'youtube.com/@xy'
in the links instead of the old 'youtube.com/user/xy'
and 'youtube.com/channel/xy'
.
v1.18.1 (2022.12.24.)
Bugfixes:
- Three insignificant bugs were fixed, into which i doubt anyone would ran beside me. I do not even remember what they were... :P
v1.18.0 (2022.11.02.)
New stuff:
- Persistent connection is now available.
Bugfixes:
- Certain users' channels are given differently now than they were given before and the videos were not displayed.
Bugfixes:
- Some smaller bugs were fixed.
Under translation...
v1.4.0 (2020.12.21.)
New stuff:
- New hotkey for the play button on the actually viewed tab: Ctrl + Space
- Above the search field there is now a "search" label.
- Manual has got a button on the surface.
- From now on, the program will print out the sent and received IPC messages.
- There is an X on the tabs' close button.
Changes:
- From now on the
hide when minimized
option is disabled by default.
- From now on the default action of the window's close button is not minimizing, but asking.
v1.3.0 (2020.12.19.)
New stuff:
-
From now, the program handles the channels too, one can browse them. And bookmark them. We've got there, achievement unlocked, there are channels... (...and the band responsible for "designing" the slimescripted YT should rot.)
In the searchlists and in the related videos the uploader's channel can be reached in the menu, opened by right click on the image. Can be copied too. Same applies for tabs too.
In the cache files' format - among other reasons, for this too - some minor changes have been made; everybody should empty the cache, before the new version is installed. (This is simpler than clicking refresh at each page coming back from cache.)
-
Finally, there is paging again. In searches, videos and channels too. However, contrary to the "old" (buzzwords: obsolete, twentieth centurian, etc.) system which was able to jump to any specified page, the "new" (buzzword: modern, innovative, etc.) system only can page forward, one step at the time (more accurately appending the content of the next page to the previous when downscrolling the page), due to the "innovation" of YouTube, but at least instead of passing one
GET
parameter, a cubic metre of junk must be wheelbarrowed out in the POST
(except for the paging of channels, where it must be done in GET
, cuz fuck logic, but the junkmountain remained), which YT assembles together in JS for multiple times the resources in the browser... (This part applies to channels too.) The paged in hits are cached by the program: what was paged in once, that can be selected by a textfield, furthermore due to the cache, they can be paged backward too.
Naturally - by calculating with the experiences so far (SSL miseries and the crash of OpenBSD FreePascal internal HTTP client) - there is an option for an external pager, but care must be taken that paging - with the exception of channels - is done via POST
requests, so e.g. the by-default available in BSDs fetch
is according to the best of my knowledge - and the manual - is not suitable for this (curl
and wget
is). For paging the channels the HTML/IMG downloader is responsible, extended by that much, that it got an additional field, where the header flag can be set (e.g. in curl
's case it is '-H '
(Note the trailing space!), in wget
's case '--header='
, fetch according to the best of my knowledge - and the manual - is not suitable for this either, so with that nobody should want to page neither channel nor anything else). However care must be taken that the character which separates the flag from the header string must be given too, because as it is visible in the previous two examples, the separator can be not only a space, but also an equal sign for instance. Further details in the manual. (But one can see Prefs and see what to where.)
- From now, the available formats' list are cached too.
- The much less flexible and
youtube-dl
dependent Obtain params with youtube-dl
has removed and instead of it, the Obtain formats
dropdown is introduced, in which it can be selected that the program itself should select the formats from the downloaded page, use any kind of parametered external downloader for this (e.g. youtube-dl
), or use the params list. (Which is changed too, see one below.)
-
From now on the YT downloader's and the video player's command line supports the
{FORMAT}
template, to where the format ID selected from the pulldown box will be inserted (e.g.: --ytdl-format="{FORMAT}"
). This way, similarly to Obtain params with youtube-dl
the also much less flexible and also youtube-dl
dependent ytdl-format arg.'s separator char
became purposeless and has been removed.
And actually, with the introduction of this and the previously mentioned Obtain formats
, the program has once again became entirely tool-independent. (For the same reason, into the own parameters the argument marking the format (e.g. --ytdl-format=
) is not needed to be added anymore, it is enough to add the code marking the format. Granted, if this is used.)
To those who until this point downloaded the available formats with youtube-dl
and after the update, notice that "the program has speeded up much", i tell, no, the program was this fast before either, the "speedup" is due to that the previously mentioned two youtube-dl
dependent options have ceased to exist and the third one defaults to the internal, as in the program itself will mine out the available formats during download and does not instructs - the written in Python and thus grimly slow - youtube-dl
to do it.
One who wants to, can restore it to the external tool and give youtube-dl
to it for this purpose if preferred, because for instance the format list spat out by youtube-dl
is more readable, than the program's, or because after X days, YT varied again and i did not pulled the program after it yet, while youtube-dl
is almost daily updated... Since now the formats' list is too cached, so the program avoids calling youtube-dl
here too (except for the first opening or reloading per se). MOAR FEATURES!
- The actually generated command line of the youtube downloader and the video player can be copied to the clipboard in the tab's menu with the
Copy Download Command
, or Copy Play Command
entries.
- Since
youtube-dl
does not overwrite already existing files, so the program from now will ask if it should overwrite it and if yes, it will delete the file for the downloader, whatever it is (though nothing else is in the "market" than youtube-dl
).
Bugfixes:
- Images on search tabs were "zoomed in", if the program pulled something from cache. (YT provided differently sized images earlier.)
- The copied URL at the bookmarks were erroneous if the list was filtered.
v1.2.2 (2020.11.25.)
Bugfixes:
- YT varied it's code again, so searches were killed off.
v1.2.1 (2020.11.18.)
Bugfixes:
- Fortunately it turned out, that unlike the socket error, the signals crashing the program was not OpenBSD's, but the program's fault. This is now fixed. The change affected the other systems too, but if someone did not experience this (like me), then it does not matter.
v1.2.0 (2020.11.11.)
Most importantly:
- OpenBSD support has added, but there are two problems with it. One is the socket problem mentioned in my blogpost, however this can be workarounded with the external downloader, just as the SSL misery could be before the arriving of FreePascal 3.2.0. When this will be fixed, i do not know, as they did not even answered my report on the Lazarus forum. The other is, if we send a signal to the task, then under OpenBSD it only yields in a beautiful crash instead of shutting down (
SIGHUP
, SIGINT
, SIGQUIT
, SIGTERM
) or bringing up the main window (SIGUSR1
). The program can be stopped from the GUI and the main window can be bringed up with the second instance, so one can live with this too, if someone uses OpenBSD for desktop and would want to YT with this program. (Weird, that the same code works under Linux, FreeBSD and Solaris too and actually without Lazarus, under OpenBSD too...) I'll make a simplified PoE and send it in to the FreePascal/Lazarus Team and we'll see.
Other new stuff:
- Lifetime of cached pages can be given (in seconds).
- Bookmarks can be filtered by type.
- Quitting became more sophisticated; at the closing of the main window there is a fourth option now, which asks whether the user wants to quit and from now Ctrl + Q and the tray menu quit can ask this too, if set.
- If the program is started with argument
'-fwm'
, then the main window will be shown, even if we did quit that way, that it was minimized to the tray.
- If an instance is already running and we run another one withour arguments or with the
'-fwm'
argument, then it will bring up the first instance's main window.
- By sending
SIGUSR1
(Linux: 10, FreeBSD/OpenBSD: 30, Solaris: 16) to the program, the main window will show up. (Not yet on OpenBSD, see above.)
- The manual now contains a new section called
Troubleshooting
, where are some somethingdoesnotwork
situation's solution/workaround is written down.
Bugfixes:
- If the last tab was closed and it did not contain any related videos, then the label telling this was not disappeared.
- When sending
SIGHUP
to the program it did not halted properly.
- If it weren't given in the config, the
youtube-dl
separator remained empty.
v1.1.0 (2020.10.21.)
New stuff:
- The more foolproof version of bolond's idea is implemented, from now Ctrl + U will do the same as one would paste the URLs into the URL-opener and press open, in short: open URLs from clipboard, instantly.
- The timeout of HTTP querys now can be set.
- The +/- values of videos will be obtained elsewhere from now (so good, that it is stored in three sepatated places; go find it...), so they will be not shortened that thousands, millions, etc.
Bugfixes:
- YT yet again started to vary the structure of incoming data, so - until this point only at search results, but - started to entertain the user with
no results found
messages, because until this point the window["ytInitialData"]
was the main JSON object, but now it is the ytInitialData
. What is beautiful, that the servers are ad-hoc updated to the new code, so it is sometimes the new, sometimes the old. Handled, the program now eats both.
- Out of the same reasons - currently also only in searches - the images did not came in, or totally unrelated images were in their place (local influencers and similar), because until now
thumbnail.thumbnails[].thumbnails.url
was the JSON path, but now it is thumbnail.thumbnails[].url
and naturally this is also alternates, as it comes from a server with the old or new code. This too is now handled.
- And again from out of the same reasons, the titles were disappeared in playlists, because instead of
title.simpleText
it is now title.runs[].text
. This too is now handled.
v1.0.1 (2020.07.11.)
Bugfixes:
- The node
'compactRadioRenderer'
only contained the playlists generated by YT, but not the related ones, therefore those were missing from the view.
v1.0.0 (2020.07.11.)
Most importantly:
- Now compiled with FreePascal 3.2.0 and Lazarus 2.0.10 and with the new internal SSL library, so SSL problems should be fixed.
- Recently YT started render on client-side, with the data now provided in JSON, instead of HTML. Program is now able to parse and process the JSON too.
Other new stuff:
- "Quick" blocking in the menu of the tabs.
- Option for saving only the URLs in history, bookmarks, playlist and global playlist.
- Playlist, history and bookmarks now has an URL field where the selected entry's URL is visible.
- Global playlist now allows the deletion or movement of several elements.
- Global playlist now alerts the user at quit, if the list is not saved.
- All around, the searching in lists is now looping both forward and backward.
- Description now contains how many related videos are there and how many's were blocked.
- Trayicon now prints out the actually opened tab's title.
- Bookmarks now can be imported/exported.
- The
ytdl-format
argument's separator is now can be set.
- Option for the tabbar scrolling to the newly opened tab, or not.
- New hotkey: Ctrl + Q will make the program quit. (And it will do it - contrary to the combo of window-closing (Alt + F4, Cmd + W) - even it is set, that closing the window will minimize it to the tray.)
Bugfixes:
- Fixed four bugs in the handling of the players' list.
- Fixed four bugs in the players' tab handling.
- Fixed an index glitch in history, closed tabs and bookmarks.
- Fixed a typo in the command-line templates' encapsulation.
v1.0.0-beta5 (2019.08.04.)
Most importantly:
- Since the built-in FP SSL still cannot connect to YT and FP 3.2 still not out, program now supports to do the HTTP queries via external programs which can be set in the prefs.
v1.0.0-beta4 (2019.07.28.)
Most importantly:
- Playlists can be exported now and the global playlist can append lists to itself, can delete and randomize the list.
Other new stuff:
- Quality selector now knows after closing what was assigned to a video.
- Quality selector can now select the default quality by a string (e.g.: "best").
- Clear buttons asks for confirmation.
- Hotkey (Ctrl + P) for player cycling has been added.
Bugfixes:
- Assembly of related videos had a "bug". (Rather it was the vileness of google.)
Bugfixes:
- UTF-8 HTML entity handling had a bug.
- Signal handling had a bug.
- Image handling had a bug.
- Loading tabs and their threads had at least four bugs.
v1.0.0-beta3 (2019.05.05.)
Most importantly:
- Program now can fill up the parameter list with
youtube-dl -F
and pass it to the player with the --ytdl-format
argument.
Other new stuff:
- The program stores the sizes of the main window too.
- The search box and the stream selector is now resizes along the window.
- Program can be instructed what to do if the main window is closed: minimize it, close it for real, or ask what to do.
Bugfixes:
- Trayicon play crashed the program if no tabs were open.
- The program now terminates itself properly and saves the session if it gets a SIGTERM, SIGINT, SIGQUIT (Update 2019.05.20.: and SIGTERM) signal.
v1.0.0-beta2 (2019.02.24.)
Most importantly:
- The program now has a trayicon with hide/show and play/stop controls.
- Logfile can be turned on from the prefs and can be redirected to anywhere.
- Lists are prefixed by type. (S=search, V=video, P=playlist, B=both)
- Users can be blocked in the search/video list.
- Quality can be set now; other parameters are introduced where anything can be passed to the player and on the main surface it can be selected from the list (e.g. what quality we want).
Other new stuff:
- All YT values are pre-filled with <no ***> strings, so it can be seen that it is not filled, but not an empty string will be there.
- Whitespaces are trimmed from the edges of video titles.
- XDG recommendation-compliant config directory as an option: by hand the config dir can be moved from
~/.ytfe
to ~/.config/ytfe
; it will be found there either.
- Linux i686 support introduced.
Bugfixes:
- A scrollbar glitch has been fixed.
v1.0.0-beta1 (2019.01.27.)
Summary:
- First public beta. Initial OS support: Linux, FreeBSD and Solaris on AMD64.