OpenProducer / newspack-platform

Newspack is an open-source publishing platform built on WordPress for small to medium sized news organizations. It is an “opinionated” platform that stakes out clear, best-practice positions on technology, design, and business practice for news publishers.
Other
9 stars 3 forks source link

LibreTime / Radio Station plugin integration #9

Open gusaus opened 4 years ago

gusaus commented 4 years ago

Is your feature request related to a problem? Please describe. Per @tonyzeoli OpenProducer/newspack-platform#11, they are building an API into Radio Station plugin for products like LibreTime to connect and publish show and playlist content into WordPress. The goal is to help stations automate show info so no one has to login to WordPress if the data is coming from LibreTime. It eliminates duplicate efforts and ensures data accuracy.

The main problem, as pointed out by @Robbt in OpenProducer/newspack-platform#11 is LibreTime does not yet have a proper API

Describe the solution you'd like @tonyzeoli described the following needs in the LibreTime forum:

We are looking to pull the following from LibreTime into the Radio Station plugin -

  • Shows
  • Show Schedule
  • DJ (user)
  • Playlists
  • Live Stream URL

We would love to read/write though back into LibreTime, so once the show schedule is passed into WordPress on the first connection, the show schedule can be updated in WordPress the push up into LibreTime.

We’d want to create in WordPress new shows that are created and scheduled in LibreTime, so they publish into WordPress automatically and we’d want to pull the DJ user role into WordPress against the Show they are related to.

Also, we’d love to find a way to add our podcast fees in WordPress and have the API connect them up to shows created in LibreTime.

Assuming the solution will require new functionality for both Libretime and Radio Station, it would be ideal to collaborate with the maintainers of both projects on requirements and project scope.

Additional context

gusaus commented 4 years ago

I forgot AirTime PRO integration was in the Radio Station PRO queue https://github.com/netmix/radio-station-pro/issues/26

Considering LibreTime is a fork of AirTime, I'm assuming the process for integration would be similar (once there's a LibreTime API)?

gusaus commented 4 years ago

Quick side note - I came across this comment from @kmahelona https://gist.github.com/hairmare/8c03b69c9accc90cfe31fd7e77c3b07d#gistcomment-2808855

Airtime Pro doesn't have the features/back-end access that we need in order to use airtime for our terrestrial broadcasting.

The benefits of LibreTime vs AirTime/AirTime PRO might be something we could expand on and include in a beta pitch to terrestrial stations https://github.com/OpenProducer/community/issues/8

gusaus commented 4 years ago

With progress unblocking the next major release of LibreTime, we'd like to help direct resources towards the LibreTime API + WordPress/Radio Station integration.

Similar to AzuraCast integration OpenProducer/newspack-platform#8, I think we could upfront a good bit of development cost if we ran a crowdfunding campaign similar to CiviCRM's Make it Happen OpenProducer/community#13

gusaus commented 4 years ago

Just came across https://www.wrir.org/ as an example on https://libretime.org/

Pretty sure this is WordPress... and if so, this is a really cool example of audio player and playlist functionality.

@tonyzeoli @majick777 Is this powered by the Radio Station plugin? https://www.wrir.org/schedule/

Possibly there are some elements that could be incorporated into our projects?

majick777 commented 4 years ago

@gusaus They are using Radio Station for their Schedule, though not an update to date version, as that is showing the Legacy schedule view.

For the player, they seem to have their own custom styles, which is a good clean look. From what I can tell the player seems to also be custom javascript that pulls from Google Firebase storage. It is minified so it is pretty much unreadable code otherwise.

gusaus commented 4 years ago

They are using Radio Station for their Schedule, though not an update to date version

Very cool to know that we have most of the ingredients to replicate.

Knowing this is Radio Station plugin...how much of this is standard or customizations on top?

Show archives https://www.wrir.org/listen/show-archives/

Show page https://www.wrir.org/show/bebop-and-beyond-with-mr-jazz/

The playlist and 'now playing' links you see on the top nav - all really slick.

I'd like to incorporate as much of this functionality into this MVP as possible. Would be great to bring folks together for a sprint or two. https://discourse.libretime.org/t/custom-audio-players/140/33?u=gusaus

tonyzeoli commented 4 years ago

None of this is Radio Station functionality. The Show Archives is tied to that fixed player. There are standard off the shelf sticky players that have playlisting functionality. It seems as if this is one of them. We don't have any of those functions. But you can tie a blog post to a Show Page.

gusaus commented 4 years ago

Interesting - I think a lot of stations would value the full suite of functionality. Not sure if/what could be incorporated into Radio Station, LibreTime, Audio player, but it would certainly be worth scoping out, including in a paid beta https://github.com/OpenProducer/community/issues/8, and contributing back to those projects.

tonyzeoli commented 4 years ago

Most stations don't have what the example station has. They've gone above and beyond most of what I've seen out there so far. What I'd like to ask of you though, is to take baby steps. What you're doing is building a ship. In software development, we need to build boats and not ships. I'd rather have twenty boats over time that build on the success of the last than one ship that can get the corona virus and be docked for months.

majick777 commented 4 years ago

There is definitely some overlap in what they have done and what we are creating. But as this is the more advanced functionality, it will take time to develop and a lot of it will be Pro features:

We are hoping to get the Player in to the next release as a priority feature. It's coming a long rather fast but there is a bit of trickiness left to get the diffeerent player libraries to do a basically equivalent thing and I also need to do some design fixes on the player skins. We want to get this up and working on Netmix Directory also as soon as possible, so the first working version of that will likely happen even before it is in the plugin (which requires more option integration.)

gusaus commented 4 years ago

What you're doing is building a ship.

Actually our friends at Automattic, Google, and others built it, paid for it, and are releasing improvements pretty much every week. The only plugins not yet included are Radio Station and The Events Calendar. The latter is already being used by their customers, so we're really just talking about creating a few different flavors for stations and podcasters with specific needs (and a budget).

We already have the mechanism to channel funds to builders - the main need is a plan and someone who knows how to create the perfect mix for those with a need and budget.

gusaus commented 4 years ago

if using LibreTime or AzuraCast, the APIs for those can provide this information but will be part of separate Add-ons.

Yes - so for this specific issue, there would be a couple overlapping tasks/needs -

tonyzeoli commented 4 years ago

Yes, No, and Maybe. LOL.

We certainly can't pigeonhole ourselves into giving away something in PRO for free unless their was a considerable and ongoing investment. We'd be giving up revenue by moving a feature like the Sticky Player from PRO to FREE without consideration of the financial loss to our company. So, it really depends. We could throttle some feature so that it's free for a limited use case and they'd have to pay for an upgrade. But what that is, we don't know yet. We'd all have to discuss.

gusaus commented 4 years ago

What if we identified a common set of features and developed the player as a separate project OpenProducer/newspack-platform#22 - which could then be modified and included with LibreTime, AzuraCast, and even Radio Station PRO.

Instead of having one company responsible for developing and maintaining, we could pool resources (contributors, funds, and open source code).

zklosko commented 4 years ago

I should definitely clarify that WRIR is only using LibreTime as a playout engine. We broadcast on both FM and internet and have completely separate systems working for each that are completely independent from our LibreTime instance.

gusaus commented 4 years ago

Thanks for chiming in here @zklosko :wave:

FYI to folks conversing here, @zklosko has been making some major contributions to LibreTime and is also involved with https://www.wrir.org/

Tony & Tony are the current leads of the Radio Station plugin https://github.com/netmix/radio-station

LibreTime is just one element that's been providing a good bit of inspiration. OpenProducer/newspack-platform#9 As providing solutions to community media and LPFM stations is a primary goal, learning more about how you're using LibreTime (and the Radio Station plugin) is very relevant.

Maybe there's even something stations like yours and @robbt's will be able to use OpenProducer/newspack-platform#11

tonyzeoli commented 3 years ago

@gusaus As discussed today on our call, we have an API for Radio Station, but it's a push for now and not pull. We haven't built that aspect of the API yet and we're working on integrating with META RADIO so that plugin can pass data from a platform like LibreTime into WordPress until we build an add-on. I'm not sure that LibreTime even has an API yet that can pass data out of LibreTime and into WordPress through our API and only when our API can pull and not just push.

I noticed WRIR website is using Radio Station to some success, but there's a bunch of features missing. I see they need to have have two schedules as they have a Studio C link. We're going to work on having the ability to have multiple schedules, so that will help WRIR in the future.

@zklosko Let's keep discussing these issues and see where we can manage some form of integration.

gusaus commented 3 years ago

@tonyzeoli There's been progress https://github.com/LibreTime/libretime/issues/1056 but I'm not sure the API or the project itself is at a point to integrate. Maybe we can get LibreTime & Radio Station plugin enrolled in a future FundOSS (see https://discourse.libretime.org/t/apply-for-the-fundoss-matching-campaign/800) where funds could be raised and allocated towards the API and subsequent integration.

I'm active again in the Open Collective community, trying to direct resources to these projects.

zklosko commented 3 years ago

@tonyzeoli sounds good!

We do use a lot of different plugins and scripts for our very custom solution. Radio Station is just one of many. The Studio C link might use a different calendar mechanism, but I'm not sure (we do use a simpler "events" plugin as well).

As for the showlist API, the one developed for Airtime is still present in Libretime: https://help.sourcefabric.org/hc/en-us/articles/115000382243-Airtime-Pro-API#%E2%80%9Cweek_info_schedule%E2%80%9D. It only passes the upcoming seven days of programming though.

gusaus commented 3 years ago

@tonyzeoli Per our Monday marathon convo, I think we agreed this functionality would be nice to have in https://wordpress.org/plugins/radio-station/

If yes, possibly we can create a Make it Happen style fundraising campaign (see https://github.com/OpenProducer/community/issues/13) when the LibreTime API and y'all are at a point to finish the project scope and move forward.

Thoughts?

tonyzeoli commented 3 years ago

@zklosko I will ask @majick777 to take a look at the code for Airtime at this URL: https://help.sourcefabric.org/hc/en-us/articles/115000382243-Airtime-Pro-API#%E2%80%9Cweek_info_schedule%E2%80%9D and see if that provides a solution. As long as we can pull data from LibreTime using this method we can refresh the schedule every day for the future seven days or something like that. We are moving in PRO to a Calendar system for future show posts on the calendar for some time forward - not sure if it's a year out or more. We think stations want to schedule shows farther than just 7 days out.

@gusaus I can see a fundraising campaign through OpenCollective to create a LibreTime add-on that potentially uses what's out there for AirTime or forking that and making it talk to Radio Station. Right now, our API is push and not pull, so we have to work on that.

majick777 commented 3 years ago

@zklosko That's great to know that there is the Airtime API in Libretime already... I've been working pretty non-stop on Radio Station Pro in preparation for it's launch and haven't had time yet to familiarize myself with the structure of the LibreTime codebase, can you point me to the relevant code there? Would be curious to take a look at it.

So far we've discussed having a separate Add-on for Radio Station that handles integration with different broadcast services, and given the time API integration takes I think this is probably still the way we'd go.

gusaus commented 3 years ago

I can see a fundraising campaign through OpenCollective to create a LibreTime add-on that potentially uses what's out there for AirTime or forking that and making it talk to Radio Station. Right now, our API is push and not pull, so we have to work on that.

Pull, if I'm understanding correctly, would enable a station to schedule shows in LibreTime (https://libretime.org/docs/scheduling-shows) and pull that into their WordPress site via some component of Radio Station, right?

If yes, I think that would be valuable to many LibreTime folks already running their site on WordPress... ideally enough to fund development as noted above OpenProducer/newspack-platform#9

@majick777 The code resides here https://github.com/LibreTime/libretime. Reading over the recent comments, starting with @tonyzeoli's intro https://discourse.libretime.org/t/planning-out-an-api/341/7 might bring you up to speed with the API status/needs on the LibreTime side.

tonyzeoli commented 3 years ago

@gusaus Yes, PUSH into LibreTime, PULL from Libretime.

Right now, we want to create add-ons for each service. If LibreTime users want to use OpenCollective to fund the development of a WordPress/LibreTime add-on, we can do it that way instead of selling it as an add-on. But, we're not going to be able to do it for free if it's not funded. I would expect to raise between $5K and $10K for full development of that add-on to be able to release it for free. And, out of that, we may only set the features that are needed and create a paid add-on in the future with more advanced features. We have to think about the future. We can't just build stuff, pie in the sky, without thinking about the return on investment. Because remember that it's an ongoing development. It's not a one-off thing. Then you have to maintain and support the plugin, especially if LibreTime updates and changes the API.

gusaus commented 3 years ago

Right now, we want to create add-ons for each service. If LibreTime users want to use OpenCollective to fund the development of a WordPress/LibreTime add-on, we can do it that way instead of selling it as an add-on. But, we're not going to be able to do it for free if it's not funded. I would expect to raise between $5K and $10K for full development of that add-on to be able to release it for free.

@tonyzeoli So if I'm understanding correctly, we could do the following for the LibreTime add-on.

I'm currently talking with Open Collective...just to make sure these types of all or nothing campaigns are possible https://opencollective.slack.com/archives/C01NGE0N9U1/p1618607015007300

If yes, does the general idea to fund development seem like a sound idea?

I get there needs to be a budget for ongoing dev and maintenance. Think we can follow up in https://github.com/OpenProducer/internal/issues/7

gusaus commented 3 years ago

Circling back here to point out that @paddatrapper made a big push recently to get LibreTime's new API out the door LibreTime/libretime#958

paddatrapper commented 3 years ago

With LibreTime/libretime#958 merged, all the points listed at the top of the issue are now possible., both as pull and push

gusaus commented 3 years ago

@paddatrapper @zklosko @Robbt As the most active Libretimers (at least currently in this repo) I just wanted to say 1) Thank you!! Your contributions up to this point have been extremely helpful; 2) our participation in FundOSS (https://fundoss.org/collective/openproducerplatform) may provide an opportunity to at least begin scoping out this feature (granted I think this is more of a WordPress/Radio Station plugin @tonyzeoli @majick777 led task); 3) any donations made to https://fundoss.org/collective/openproducerplatform over the next couple days will be matched and could quite possibly (still an unknown at this point) provide enough budget to at minimum finalize the requirements.

Considering we're only two days in and have yet to begin actively promoting or fundraising... If you look at https://fundoss.org right now and sort by Funding... We're OpenProducer/newspack-platform#19, right behind AzuraCast. If everybody reading this made a $5-25 one-time donation, we'd probably jump into the top 10!!!

Thank you in advance if you can help bump this up on the integration roadmap!!!!!

gusaus commented 1 year ago

Referencing some related convo with on the maintainers of LibreTime after realizing he was working with the Radio Station plugin https://github.com/netmix/radio-station/issues/438 (for a friends radio site).

If any work should be put into this, I think it should consider using the messaging queue to hook into Libretime and build a "standalone" service that would make the interface between libretime and wordpress.

But libretime doesn't have this any event server yet, so this is a lot of work. And with regards to the API (the push/pull story), the libretime api is alpha quility and will break, poeple should not build anything for production unless they have time to fix unexpected breaking changes.

Based on that, we should keep the first focus on securing resources for AzuaCast integration https://github.com/netmix/radio-station/issues/438