Coder Social home page Coder Social logo

af-1 / lms-alternativeplaycount Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 514 KB

Alternative Play Count - a plugin for Lyrion Music Server that provides alternative play counts and skip counts to reflect your true listening history.

License: GNU General Public License v3.0

Perl 85.43% HTML 14.57%
dynamic-playlists last-played lms logitech-media-server play-count skip-count slimserver squeezebox-server last-skipped lyrion-music-server

lms-alternativeplaycount's Introduction

Alternative Play Count

Alternative Play Count1 provides alternative play counts and skip counts that aim to reflect your true listening history.

If you skip tracks in a playlist, LMS still increases their play counts. With Alternative Play Count you set a time after which a song counts as played. If you skip the song before, it counts as skipped, not played.

You can use APC data in any SQLite query or with other plugins to create/play smart playlists (dynamic playlists), virtual libraries or to skip specific tracks. See features section for details.

💡 As LMS and APC play counts diverge in the long term, you will benefit from the more accurate quality of the data (e.g. in smart playlists & statistics).

⬅️ Back to the list of all plugins

Screenshots2




Features

  • Set a time3 after which a song counts as played. If you skip the song before, it counts as skipped, not played.

  • The dynamic played/skipped value (DPSV) reflects your listening history/decisions of the recent past and is independent of the absolute play count and skip count values. A track's DPSV increases if played and decreases if skipped (see FAQ for details). You can use it to create smart playlists (dynamic playlists), virtual libraries or skip filter rules.

  • Let APC automatically change the rating of a track when it's marked as played or skipped (disabled by default).

  • Separate database table for APC values (play count, date last played, skip count, date last skipped, dynamic played/skipped value)

  • Create (scheduled) backups of your APC data and restore values from backup files.

  • Automatically undo a track's last (accidental) skip count increment if the track is played within a certain time span afterwards (see plugin settings).

  • Reset play count, skip count or dynamic played/skipped value (DPSV) for individual or all tracks (see FAQ).

  • These plugins already make use of APC data: Dynamic Playlists, Dynamic Playlist Creator, Virtual Library Creator, Custom Skip, Context Stats and Visual Statistics.

Some features are not enabled by default. Please go to the plugin's settings page to enable them.




Requirements

  • LMS version >= 8.0
  • LMS database = SQLite


Installation

Alternative Play Count is available from the LMS plugin library: LMS > Settings > Manage Plugins.

If you want to test a new patch that hasn't made it into a release version yet, you'll have to install the plugin manually.

Initial values to start with

The plugin uses the current LMS play counts as a starting point.
If you want to start from scratch (no play counts) or use only higher LMS play count values to start your APC database, then you should change this in the APC settings right after installation.
APC play count and skip count values are used once to populate the DPSV column of the APC database when you first install the plugin. These are just initial values which you can reset at any time on this page: LMS Settings > Advanced > Alternative Play Count > Reset.


Reporting a new issue

If you want to report a new issue, please fill out this issue report template.

If you use this plugin and like it, perhaps you could give it a ⭐ so that other users can discover it (in their News Feed). Thank you.


FAQ

»What's a dynamic played/skipped value? How does it work?«

The dynamic played/skipped value (DPSV) is supposed to reflect your recent listening habits/decisions and ranges between -100 (skipped very often recently) and 100 (played very often recently). When a track has been played long enough to count as played, the DPSV increases, just as it decreases if the track is skipped. The closer the current DPSV is to the middle of the scale (0), the greater the increase/decrease. Conversely, DPSV close to 100 or -100, i.e. tracks that have been played or skipped very often recently, change less and will therefore have to be played or skipped more often to move away from the end of the scale. Also, skipping a track decreases its DPSV twice as much as playing it increases it (this is hard-coded and not a user setting).

Example: You've been listening to a great track (rated 5 stars) too many times and you started skipping it when it came up in a mix. It's still a great track, therefore the rating shouldn't change. If you create a dynamic playlist or a CustomSkip filter that exclude tracks with a DPSV of -80 or lower, eventually this track will no longer be played, either skipped by CustomSkip or filtered out in a dynamic playlist - without changing its rating.
A quick way to get the track back into the mix would be to reset the track's DPSV to zero by clicking on the DPSV value in the track's context menu.


»Can I reset play count, skip count or DPSV for individual or all tracks?«

You can reset play counts, skip counts or DPSV for individual tracks by clicking on the corresponding item in a track's context menu (AKA song details page). Some web skins and controllers will list APC values in the More info submenu.
If you want to reset all skip counts, DPSV or the complete database, you can do so on this page: LMS Settings > Advanced > Alternative Play Count > Reset.


»When I create a backup, APC does not write a backup file.«

The AlternativePlayCount folder is where APC stores its backup files. On every LMS (re)start, APC checks if there's a folder called AlternativePlayCount in the parent folder. The default parent folder is the LMS preferences folder but you can change that in APC's preferences. If it doesn't find the folder AlternativePlayCount inside the specified parent folder, it will try to create it.

The most likely cause is that APC can't create the folder because LMS doesn't have read/write permissions for the parent folder (or the AlternativePlayCount folder). There may be matching error messages in the server log.

So please make sure that LMS has read/write permissions (755) for the parent folder - and the AlternativePlayCount folder (if it exists but cannot be accessed).


»How does automatic rating work?«

If you have the Ratings Light plugin installed, APC can change the rating value of a track when it's marked as played or skipped. When a track has been played long enough to count as played, the rating value increases, just as it decreases if the track is skipped.

Dynamic rating
The closer the current track rating is to the middle of the scale (50), the greater the increase/decrease. Conversely, ratings close to 100 or 0, i.e. tracks that have been played or skipped very often, change less and will therefore have to be played or skipped more often to move away from the end of the scale. Also, skipping a track decreases its rating up to twice as much as playing it increases it (this is hard-coded and not a user setting). There's a setting that gives you some control over how the dynamic rating algorithm changes ratings and an optional baseline rating for tracks never played before according to the APC database.

Linear rating
Enable this if you prefer constant/linear rating changes. If a track is then marked as played or skipped, the rating value is always increased or decreased by a constant value that you can set in the plugin settings.





Footnotes

  1. If you want localized strings in your language, please read this.

  2. The screenshots might not correspond to the UI of the latest release in every detail.

  3. i.e. percentage of the total song duration

lms-alternativeplaycount's People

Contributors

af-1 avatar werdeil avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

werdeil

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.