Skip to content

Releases: thisismy-github/pyplayer

0.5.0

18 Jun 21:34
Compare
Choose a tag to compare

NOTE: 0.6.0 is coming (August 9th or 10th 16th 2023 eventually lol) with many, MANY improvements (over 200 commits since 0.5.0!!!)

3/29/24 - I'm taking a break from this for a couple weeks. I'll likely pick work back up in May, maybe June. PyPlayer will notify you about the update when it's ready and let you auto-update.

If you'd like to try 0.6.0 right now, compiling is very easy (you might need Python 3.9):

  1. Download/clone the source code (click the green "Code" button in the top-right corner on the main GitHub page)
  2. Install Python (make sure it gets added to your PATH system variable)
  3. Run pip install -r requirements.txt in the source code's folder
  4. Double-click build.py in the "executable" folder

It's a bit unstable and some features are currently unfinished, but it is overall 1000x better than 0.5.0.
Note: This compiled version will not auto-update unless you change constants.VERSION to something lower than 0.6.0.


0.5.0 Changelog:

(Smooth) Zooming and panning support

The biggest focus in this update was adding zooming/panning support for images and GIFs (not cover art, and videos will come in the future). An optional smoothing effect (enabled by default) is included, along with a multitude of settings controlling many aspects of zooming, such as the zooming factor, the speed of smooth zooms, the minimum zoom, etc. Zoomed images (not GIFs, yet) can be panned by dragging them. Clicking (double-clicking if its a GIF) will reset the zoom and position. GIFs reset to their first frame while zooming, so that the cached frames can be cleared, and GIFs may lag when zooming too far in (max zoom is limited to 20x native size, 100x for regular images). Holding Ctrl or Shift while zooming will zoom at different rates (changeable in the settings), and by default, Ctrl will zoom 2x faster, Shift will zoom 4x slower.

FFmpeg update (again)

The lgpl version broke a number of edits, so the included FFmpeg files have been updated to ffmpeg-n5.0-latest-win64-gpl-shared-5.0. This is unfortunately another ~31mb being added, but this version is especially up to date, which will be useful for an upcoming release (I may still downgrade FFmpeg in the future if necessary).

Snapshot changes & expanded support

  • Snapshot actions (including the ones previously exclusive to the context menu) are now contained within their own submenu, which itself has been moved to the Edit menu
  • The last snapshot path can now be copied to the clipboard
  • Snapshots now support ?frame and ?framecount variables
    • The ?video variable has been renamed to ?name
      • This will be automatically corrected for anyone auto-updating
  • Images, GIFs, and cover art now support snapshots
    • Images that aren't in crop-mode automatically open the resize snapshot dialog
    • GIF snapshots use FFmpeg to extract the current frame
    • Cover art can be cropped
    • A checkbox for preferring PNG format over your default format when snapshotting GIFs and images has been added (checked by default)
    • GIFs and cover art now have their own snapshot name formats
      • If their formats are blank, they fallback to the default snapshot name format
      • GIFs default to ?name_frame?frame_?framecount
      • Cover art defaults to ?name_art
  • Resize dialog improvements
    • The native resolution is now plainly shown
    • JPEG quality can now be tweaked from this dialog (the default value is whatever your actual JPEG quality setting is set to)

Other major changes

  • Bilinear filtering can be toggled on/off (defaults to on)
    • This toggle also appears in the context menu whenever you have an image/GIF/cover art open
  • Auto-resize improvements
    • Auto-resize only triggers once left-click is released
    • Auto-resize modifiers (Shift to shrink, Ctrl to invert behavior) now only apply if they're being held down at the moment the auto-resize occurs
    • Several properties have been added to avoid unwanted behavior with maximizing, fullscreening, and aero-snapping
      • Aero-snap currently still triggers auto-resize (rarely)
    • Manual triggers for the auto-resize settings have been added to the Window menu
  • Recent files changes
    • The number of recent files to track is now a setting (0-1000, defaults to 25)
      • Tracking more than 25 recent files will no longer validate the files on launch (checking for duplicates, invalid files, etc.) to optimize startup
        • This also moves the clear button to the top of the recent files' submenu, for easier access
    • A checkbox for whether or not to update the order of your recent files when playing one has been added (unchecked by default)
  • Number keys now have dedicated behavior
    • You can choose between YouTube-style progress jumping (5 jumps to 50% through the media) or playing recent files
      • Behavior is split between primary (no hotkeys) and secondary (Ctrl being held down) behavior
      • Defaults to progress-jumping as primary behavior, and playing recent files as secondary behavior
    • Several settings specifically for playing recent files with the number keys have been added as well
      • By default, pressing a number key immediately after launch plays that number recent file
  • Precise-trimming is now used by default in the following situations:
    a. Trims on media under 10 seconds
    b. Trims under 5 seconds on media under 30 seconds
    • This helps against corrupted edits, which are more common on shorter videos/trims
    • These values may be tweaked in the future
  • Significant reorganization of settings dialog
    • Several settings have been moved or reordered
    • Hotkey-related settings are now in the Hotkeys tab
    • Group boxes are now spaced much further apart
  • Added forward/backward hotkeys (defaults to Alt + ←/→, similar to most browsers)
  • Lowered VLC volume gain from 6.0 to 2.0
  • For contributors: If needed, review the recent commits for a lot of refactoring. Lots of things have been renamed, self.parent calls in widgets.py have been removed, aliases have been turned into global variables, simplified interfaces for qthelpers.py methods have been added, qthelpers file dialogs now accept a lineEdit parameter, FFmpeg usage has been revamped significantly, etc.

Minor changes

  • Saving an edit now displays a "busy" cursor
  • Cover art can be disabled
  • EXIF orientation data is now supported for JPEGs
  • Alt presses are now ignored if other keys are being pressed, avoiding accidental menubar toggling
  • Added ability to pass arguments directly to VLC
    • -v or --vlc followed by arguments surrounded by quotes will pass those arguments to the VLC instance that is created on startup (including --gain)
  • Default marquee offset has been changed from 1.6% to 2.9%
  • Fixed several instances of keyboard focus being lost after performing certain actions
  • Window clamping now properly works with multiple monitors
  • Improved the way the minute spin-box behaves on media > 1 hour
  • Fixed "hiccup" while manually updating the hour/minute/second spin-boxes in certain scenarios
  • Fixed white background that appears behind transparent images while crop mode is enabled persisting after crop mode is disabled
  • Fixed crash on close if the window was never moved or resized
  • Update checks no longer log error messages if you have no internet connection
  • Other logging improvements
  • Optimized startup, delayed the actual showing of the window until after config is loaded to fix visual oddity
  • General, more mild optimizations to media opening/parsing
  • Lots of other crashes and general bug fixes

0.4.0

16 May 04:39
Compare
Choose a tag to compare

Experimental GIF and cover art support

The biggest focus in this update has been adding experimental support for animated GIFs and audio files with cover art. VLC cannot play animated GIFs, and there doesn't appear to be any simple way to display cover art (at least through the Python bindings for libvlc), even though VLC does have this functionality, so this addition is a pretty big one. This ended up working so well that I extended the functionality to all images (more details below). Not all features are fully functional for GIFs and images/art besides opening, renaming, and deleting yet. This will be expanded on further in the future. More details on the implementation can be found on the initial commit. Auto-resize settings work with the new media types, and individual scaling options have been added for each type.

  • See this commit (and ones beyond that) for implementation details

FFprobe support and FFmpeg update

The second biggest focus in this update was completely rewriting the system for parsing media files. The new system support FFprobe, but doesn't require it. Both FFprobe and VLC will parse media files at the same time, and whichever one finishes first will be used. Even if FFprobe doesn't finish first, it will save its results to a .txt file in your temp folder, which can be reused when replaying the same files (checks are done to ensure the file hasn't been edited). Using FFprobe not only massively increases compatibility, stability, and accuracy of parsing files (fixing many previous crashes/hangs), but it also parses certain files faster than VLC (especially large ones). FFprobe can be disabled in the settings so only VLC is used, but this is not recommended.

Adding a second large executable to PyPlayer seemed pretty excessive, so instead FFmpeg (on Windows) has been updated from I-have-no-idea-what-version-it-was to n4.4-latest-win64-lgpl-shared-4.4. This is not the most featureful or up-to-date version, but it's far better than whatever I was using before and since it's the shared version, it's only double the size of the original executable. A fair compromise. These files are now located within plugins/ffmpeg, and if you're updating from an older version, the original ffmpeg.exe file will be deleted automatically.

Other major changes

  • Images are now implemented the same way GIFs and cover art are
    • The new implementation loads images almost instantly, with no flickering
    • Currently, no marquees (on-screen text) can appear. However, most of the other features that images previously supported still work
    • When an image is being viewed, navigating (<-/-> and J/L by default) will cycle forwards and backwards
    • Images are immediately cached and unloaded, which means their actual files can be altered freely without having to "stop" the player
      • A setting for what to do with missing image files while renaming has been added. By default, the cached image will be saved as a new file with your desired name
  • Large improvements to auto-resizing
    • Auto-resizing now clamps the window to your current screen
    • The "Window behavior" section in the settings dialog has been thoroughly reorganized
    • Added checkboxes determining which types of media trigger the auto-resize settings
    • Added setting for resetting what counts as the "first media file" when minimizing to tray
    • Added actions in the Window menu for instantly resizing the window in a variety of ways, regardless of your settings
  • Added ability to copy the current media file's path to your clipboard
    • This can be accessed both through the File menu and through the media location's quick-button context menu
    • Added setting for slightly customizing how the path is formatted when copied
  • Recent files enhancements
    • Recent files now show a number in front of their name, which can be opened by pressing Alt plus that number
    • Recent files can now be removed from the recent file list by right clicking
    • Opening and copying a recent file's path without opening the file can also be done by right clicking
    • Changed the delimiter for recent files from a comma to <|> in config files to fix issues with files that had commas in them
  • The system for restoring/focusing windows has been redone and improved significantly, fixing many inconsistencies with the way window states were tracked and remembered during and after a session (especially with maximized/fullscreen windows)

Minor changes

  • The base context menu has been simplified
  • Added the beefier music-tag library as a backup for TinyTag with audio files as part of the parsing-rework. It is only imported when TinyTag fails
  • FFmpeg no longer flashes a console window while being used
  • Cycling media's performance in folders with many non-media files has been improved significantly
  • More alt-shortcuts have been added. The menubar and certain other menus can now be fully navigated by holding alt and pressing the underlined characters
    • Similarly, the tab order for the settings dialog has been redone and is now actually usable
  • The config file is now encoded in utf-16, resolving most unicode-related errors. Non-encoded configs will be automatically converted.
  • Using back-button now works immediately on startup
  • Cleaner log messages, especially when opening files
  • Added setting for where to center dialogs (window/screen/mouse). Defaults to window.
  • Warning dialogs now beep when appearing
  • Added setting for remembering the folders of dropped media
  • Concatenating now correctly uses your default path setting when necessary
  • As always, a number of other less notable quality-of-life changes and bug fixes

0.3.0

21 Apr 08:43
Compare
Choose a tag to compare

Total file structure rework

A huge focus for this update was completely changing the file structure of the project, reducing the root folder from 108 items to just 6 items. Many obsolete or otherwise useless files have been deleted entirely as well, reducing PyPlayer (with FFmpeg and VLC plugins) from 312mb to 180mb (a 42% decrease).

Part of this rework involved the merging of pyplayer.exe and main.exe through the use of a runtime hook to reimplement and optimize the launching behavior. Additionally, temp and updater.exe have been moved to the PyQt5 folder, along with the rest of PyPlayer's core files, and non-required files (ffmpeg and VLC plugins) are now neatly contained within the plugins folder.

If you're updating from an older version, you will need to reinstall manually to see the full benefits of this change.

Cross-platform and Windows Vista/7 support

Another focus of this update was massively increasing cross-platform support/stability, going from essentially unusable to very acceptable on Linux, and runnable on macOS Monterey. Additionally, PyPlayer is now compiled with Python 3.8 instead of 3.9, which adds support for Windows 7 (confirmed) and Vista (unconfirmed).

For contributors, the build-windows.bat and convert_ui_to_py.bat batch scripts have been replaced with cross-platform Python scripts, and the include folder can now specify platform-specific files and folders.

Other major changes

  • Audio files no longer end prematurely (absolutely did NOT think I would figure out a fix for this one)
  • Added 0-day update check (checks for updates on every launch), which is now the default
  • Greatly improved ffmpeg detection
  • More OS-compliant/cross-platform window focusing
    • "Raise window" settings have been removed (not possible under new system)
    • Focusing now obeys OS's rules
      • Windows will block PyPlayer from gaining focus if it asks for it too frequently
        • While this is intentional Windows behavior, it leads to inconsistencies and may be partially rolled back in a future update
    • Settings dialog has been reorganized accordingly
  • Deleting files is far more consistent and robust
    • Several crashes have been fixed
    • Media is now cycled after deletion in a consistent manner, and stopped when necessary
    • Certain deletion actions have been reworded, and tooltips have been added
    • Added action for clearing marked list
  • Cycling media is far more consistent and robust
    • Several crashes/bugs have been fixed
    • Cycling is far more efficient/optimized now
    • Several edge-cases are now accounted for

Minor changes

  • Added Alt+Q shortcut for full-exiting PyPlayer
  • Added context (right-click) menu to progress bar for quick access to high-precision setting
    • Improved the existing menus for several UI elements/buttons
  • Next and Previous buttons text changed from <</>> to «/»
  • Removed two unsightly, unintentional borders from default themes (themes should look a lot sleeker now)
  • Toolbar buttons are now a minimum of 22 pixels wide, ensuring more consistent sizing across platforms
  • Concatenation dialog generates thumbnails much faster
  • Settings/About dialogs now more consistently display their full contents without getting cut off
  • Default window size now neatly fits a 16:9 video
  • Fixed occasionally corrupted output when restoring from the system tray
  • updater.exe improvements
    • Added icon as well as a help message if clicked on randomly
    • Changed some command-line arguments to make updater.exe more accessible
    • Increased robustness
  • Lots and lots and lots of other bug fixes, optimizations, quality of life improvements, and under-the-hood stuff

0.2.0

03 Apr 02:07
Compare
Choose a tag to compare

Major changes

  • UI spacing optimized significantly and resize events compact the UI in a more efficient/pleasing manner
  • Cropping has been polished and is far less erratic
  • Folders can be dropped onto the player (opens the first valid file in the folder and enables Autoplay)
  • The forward/backward mouse buttons now navigate through your recent files (currently only works when used directly over the player)
  • Holding Shift and/or Ctrl while resizing the window has different effects:
    • Shift shrinks the window to match the player's size, as opposed to enlarging
    • Ctrl reverses your current snap-on-resize setting
      • If snap-on-resize is enabled, holding Ctrl will disable it temporarily and vice versa
  • Added a setting to use the original path of a file when cycling through a folder, even if its name has changed
    • This allows you to quickly cycle through and rename/edit several files in a folder without losing your position
  • The precise-trim setting is now on by default and has been moved to the Trim/Fade menu
  • Trim/Fade buttons now have context menus (right-click) that provide extra functionality and display detailed trim information

Minor changes

  • New icons for Loop and Autoplay
  • Snapshots can now open the last snapshot directly in PyPlayer, assuming PyPlayer isn't the default image viewer.
    • Shift-clicking the snapshot button opens in PyPlayer, alt-clicking opens in your default program (both options available on right-click)
  • Trim/Fade buttons stay at a more consistent size with slightly more padding
  • Trim/Fade mode menu now saves the exact mode you were using to the config
  • Output text box's focus can be cleared with Esc like the other widgets, and no longer keeps focus after saving
  • Dragging the window from the controls now only works on left-click
  • Improved consistency of trim/fade marker handles
  • UI now adjusts spacing based on theme (currently only applies to the size of the progress bar/handle)
  • Autoplay is no longer a checkbox
  • Fullscreen UI is more consistent in staying open and un-compacting the UI
  • Lots of bug fixes and other quality of life improvements

0.1.2

26 Mar 05:55
Compare
Choose a tag to compare

Release 0.1.1 has been removed due to a crash-inducing typo.

  • Massively improved update handling
    • Auto-updater now works and is far more robust
    • Updater-utility is now a standalone executable (--onefile)
    • Updater-utility has a visible console window while unpacking
    • Updates now display a progress bar with text while downloading

0.1.0

25 Mar 19:58
Compare
Choose a tag to compare

First line of code: 10/31/21
First official release: 3/25/22