Code Monkey home page Code Monkey logo

pman's Introduction

PMan

Grab a Release


PMan is a desktop media player/manager, written in the Haxe language, running on Electron. PMan's goal is to be as complete as possible as a media player/viewer, but also to provide media management/networking/organizational utilities to the user, as well as basic editing features.

PMan is still very much a work in progress, but for standard media viewing, it's stable most of the time. If you're interested in giving it a go, you can download any one of the official releases (latest), or build and run from source. There's no mac support yet, as I have no mac on which to test or build, but I'm hoping to be able to add support soon.

If you're interested in the project, and would like to see it keep moving forward, please consider heading over to the SourceForge Page and maybe leaving a review/rating. The feedback is much appreciated. If you're very interested in the project, maybe check out PMan's patreon page. Even very small pledges help a lot; if not for funding, at least for motivation.


Features

  • view/play audio, video, and image files from your local filesystem as well as from the web
  • reasonable performance
  • save your playlists, restorable from the window menu under "Playlists"
  • open entire directory (always recursive, need to change that)
  • drag 'n drop files and/or folders onto window to open them
  • freely rearrange your playlist
  • shuffle, repeat
  • supports importing playlists in several popular formats (m3u, pls, and xspf)
  • export playlists in M3U or XSPF formats
  • several audio visualizations when playing music files
  • progress through media is saved, so that the user can resume to that position next time that media is opened
  • create bookmarks attached to a Track, allowing for quick navigation to one or more specific time offsets in the media
  • tracks can be favorited. Favorited tracks are highlighted in the playlist view
  • multiple tabs with distinct playlists
  • organize and categorize media by tags, actors (or actresses), creator of media, content rating, and more
  • capture snapshots of visual media
  • sort queue by a variety of attributes (e.g. title, duration, rating, views, date created, date modified, etc.)
  • search through current queue
  • create new queue by searching entire media library

Planned Features

  • display media library in a gallery-line interface for browsing
  • automatically convert media files that PMan cannot play into formats that PMan can play
  • polyfill unsupported codecs with the Media Source Extensions API
    • flv support (via flv.js)
    • probably more than can be polyfilled in pure-haxe with some effort
  • send online media to chromecast
  • stream local media to chromecast
  • stream media from one machine to another with pman
  • network machines with PMan installed over LAN, so that they can share media
  • scriptability, or support for extensions

Possible(?) Features

These are some features I'd love to see PMan have eventually, but that I either don't currently know how to implement, don't have time to implement, or am simply unconvinced are feasible.

  • using WebGL for the display, instead of 2D Canvas
  • polyfilling unsupported codecs that cannot be supported via MSE by implementing them directly in Haxe
  • stream media via AirPlay

pman's People

Contributors

davisdevelopment avatar jbw716 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pman's Issues

search results overwrite playlist (when searching entire filesystem)

keyword-searches performed on entire local media library replace playlist with new one built from search results. The new Playlist is supposed to have a backreference to the Playlist it replaced, but that's not working.
Besides that, unloading the user's queue and queuing up Tracks from a search that may yield 1,000s of results and may not have even been intentional is a terrible idea.


results should be displayed within their own discreet listview to preserve the playlist-view, and to allow the results-view to be dismissed or maximized, etc without affecting the user's playlist

Windows Installer Not Working

The Windows installer generated by:

# in <pman project root>/dist/
./pack preprocess package installer
# or, even just:
./pack installer

'packer' script: Fixes / General Updates and Improvements

(to whom it may concern, this issue description is incomplete, and will be completed soon)

The 'packer' script (located in dist/) is currently not very up-to-date with regards to project structure and resource files. Other than the recent breaking changes to structure, there were already a number of features that were either completely broken (wouldn't successfully execute) or resulted in a broken app at runtime.

Current feature set:

  • can handle compilation of haxe source
  • can perform post-compilation, pre-execution (postprocessing) tasks
  • automates application bundling to generate standalone executables (Windows & Linux)
  • automates creation of application installers (Linux only)(Windows issue)

Search on Current Queue Broken

Attempting a keyword-search on the current playback queue will fail and raise an exception

UPDATE

As of most recent release, this has been corrected.

Delete Unused Modules and "Compatibility" Type Aliases

There's really a lot of dead code floating about in this project, and it's cluttering the whole application. I need to prune as much of that away as possible, to make it more pleasant/less confusing to navigate the source code. Probably even some performance benefits.
So, goals are:

  • Delete source files...
    • for modules that aren't being used ever
    • for modules that have been since replaced, or moved to a different package-path

I should put together a list of paths to files to be removed sometime soon.

Fix / Optimize PlayerSession Restoration

The Goal

The end-goal here is to just generally improve session persistence and restoration, both computationally and visually. Visually, the experience of restoring a previous session is fairly jarring when there's visual media involved, and starts to approach frightening if multiple tabs are also involved. This tantrum will often last for as long as 20-30sec, and then everything normalizes.
I'm pretty confident that all of this weirdness can be fixed with a new algorithm for restoring a serialized session.

The Current Implementation

  1. (repeat for each serialized Tab)
    1. create empty Tab
    2. build a media-queue for it
    3. attach restored queue to the blank Tab
    4. find and focus the Tab's active Track
  2. shift focus to the active Tab
  3. mount 'now-playing' track for playback
  4. initiate loading of TrackDatas for all restored tracks, all at once, in alphabetical order

Specification for New Implementation

TrackView updating not scheduled when TrackData is ready (and sometimes skipped altogether?)

Details of Issue

TrackViews should update in order for aesthetic reasons, ideally. However, when loading the track data, view refreshing happens very sporadically and is sometimes skipped altogether. Will update with more information once I investigate a bit

Helpful Information about Code Surrounding Issue

I don't remember all of the exact details surrounding when/where
TrackView pman.ui.pl.TrackView gets updated, but it's in response to changes made to the Track instance's data field, which is defined in the TrackData2 class. The data fields are loaded onto Track instances by the Player when added to the playback queue, in the addItemList method

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.