Libretime: Integrate community hacks

Created on 17 Mar 2017  路  15Comments  路  Source: LibreTime/libretime

Hi all.
There are some hack already created in the AirTime community and in My opinion are very interesting and useful.

The Most important is: Jingles or Spots every xx items
https://forum.sourcefabric.org/discussion/17792/playlists-jingles-or-spots-every-xx-items-updated-new-functionality

And additional good hacks here
https://forum.sourcefabric.org/discussion/17017/several-hacksmods-for-live-metadata-auto-dj-force-deletion-charting-etc-against-2-5-1-ga

This is just a suggestion, fell free to delete if you do not like it.

feature-request

Most helpful comment

Thanks for sharing the links. We are definitely interested in introducing additional functionality but and could look at these for ideas. One of our goals with LibreTime is to make it far easier for people to share their code directly in the project vs. the need to have a bunch of hacks that users need to apply themselves. If you wanted to contact the original creators of these hacks perhaps they'd be interested in porting the feature to LibreTime, or you or someone else could work on this.

The proper way to implement a feature is to open up a issue with the specific problem the hack is designed to fix and then develop it on a forked repo and then commit it as a PR.

All 15 comments

Thanks for sharing the links. We are definitely interested in introducing additional functionality but and could look at these for ideas. One of our goals with LibreTime is to make it far easier for people to share their code directly in the project vs. the need to have a bunch of hacks that users need to apply themselves. If you wanted to contact the original creators of these hacks perhaps they'd be interested in porting the feature to LibreTime, or you or someone else could work on this.

The proper way to implement a feature is to open up a issue with the specific problem the hack is designed to fix and then develop it on a forked repo and then commit it as a PR.

For the most part suchhacks should apply without much refactoring. Maybe you could contact the original authors asking them to port them? Now that we have a nice place where their code will get merged they might consider contributing!

Also, this part of the C4 probably applies here (and IMO makes sense).

A patch SHALL NOT include non-trivial code from other projects unless the Contributor is the original author of that code.

The second one is already on github and I pinged him here: https://github.com/kenrestivo/Airtime/commit/aeaafa32ef9d3c5f9fd536ade77d5283f32966e3#commitcomment-21383531

Hack is not really needed for Jingles or Spots every xx items. You can do as follows:

  1. Create a smart playlist and limit it to X tracks. Lets call it XRandomTrackList
  2. Create a smart playlists that gets X Jingles or Spots (you may have already identified them using an id3tag), lets call it XRandomJingleList
  3. Finally, create a playlists and drop XRandomTrackList, XRandomJingleList, XRandomTrackList,XRandomJingleList until fulfilling the playlists duration.

You can now drop the playlist created on step 3 in your shows. This will play X random tracks, then it will jump to the random jingle list and will play X files, then back to the random track list , and so on ..

Yes you can do this way but what about "repeating tracks" if you use different smart groups?

Well, if you have many tracks there should not be many repeating tracks. For some reason Airtime handled this very nice. Nevertheless, there is an option I missed in Airtime and is the possibility to use the "last played" criteria with smaller and bigger than X days instead of the actual comparison with a full date (i.e: 0000-00-00). The current last played criteria is useless, it would be much better to compare dates against 1 day, 1 month rather than a full date.

I've been working on the relative date in #13 . I wasn't aware that it worked previously for Airtime 2.5.x
I have been working on writing tests for the smartblock code in Blocks.php so that when I change it to work with relative dates I can try to make sure it doesn't affect the existing codebase.

Sorry to push that up with a new comment after two months. I'm an admin for a webradio a freind operates and we're using Airtime at the moment with the jingles hack installed. I believe this is an important feature and should not be dismissed because, as @xabispacebiker suggested, you can do it another way.

The way he suggested is very unintuitive IMHO, the current hack on airtime makes this easier because you just have a checkbox to tick when you need a smartblock with jingles, or ads enabled in your smartblock.

Feel free to describe exactly the functionality that is desired. If we are going to integrate "ads" or underwriting spots or whatever I think it would also make sense to give them first-class functionality and provide reports for specific spots etc. I am not familiar with how the hack works but we welcome a PR, if you want to take a shot at implementing the functionality yourself. Thanks for posting, and welcome to the community. We won't be pulling code from people without their consent but we will take code from the community for sure.

The problem being that the code isn't mine : it was taken from the forum here : https://forum.sourcefabric.org/discussion/17792/playlists-jingles-or-spots-every-xx-items-updated-new-functionality

The screenshot in this post highlights exactly what the feature is supposed to do : setup how many jingles or spots you want in a smart block.

Should I make a new issue to request for this feature ? I don't think I can help with implementing and testing via a PR (not really a PHP dev and am on another (NodeJS) project at the moment) but I can try to explain exactly what this feature is about and how it should (possibly) be written, if that's okay?

Well yeah it would make sense to create a new feature and probably close this one if our standard response is just going to be that we don't want to integrate code without the original contributors.

I've been thinking a lot about how the Smartblocks could be refactored from a UI and human design factor. This example is helpful because it suggests a useful pattern that is easy for people to understand.

The basic notion embedded in here is interweaving a selection of music with tracks from certain collections defined via matching on the Genre name exclusively, ie Spots have the genre set to Spots. I think it does make sense to create collections based upon Genre. I think it would make sense to have these as defaults. But I also think it would make more sense for the collections to be user generated and available as a view filter for the Tracks table.

Definitely food for thought. I'm willing to work with you to develop this concept further but I am leaning towards a more customizable user defined experience with smart defaults. The next thing I think I'm going to work on for LibreTime beyond bug fixes is a way to predefine and select filters based upon criteria for the Library. What I have been calling collections. Using the Genre tag seems like a logical choice but I wonder if it might be limiting if one were to try to include music tracks in a collection for some reason.

Yep, let's discuss that in another issue. I'll create one tomorrow morning, it's late right now and I need to think about it more clearly.

My friend running the radio will also post a feature request about smartblock later too, I asked him what he'd like when time will come for us to migrate to LibreTime.

Since we have decided that we won't integrate code from other people without their submission we will not be integrating community hacks at this point. I'm going to close this. For the discussion related to a jingles feature see the issue above.

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Please chat to us on discourse or ask for help on our chat if you have any questions or need further assistance with this issue.

Was this page helpful?
0 / 5 - 0 ratings