[GH-ISSUE #589] Distributing locally cached Last.fm scrobbled song info/data. #418

Closed
opened 2026-02-26 02:33:09 +03:00 by kerem · 15 comments
Owner

Originally created by @nikohd12 on GitHub (May 4, 2017).
Original GitHub issue: https://github.com/koel/koel/issues/589

Hello,

First of all, thank you @phanan for developing Koel, we're using it as our internal streaming server in our small office.

We have strict blocking configured in our firewall, so we are blocking all websites except for the one's whitelisted. Ofc, one of those websites that are included is last.fm and akamaized.

When they view the artist/album tab in the Info bar, it's white blank, but if they got lucky and it's being delivered via local server = "koel-radio/img/artist/.png", the images appear but appears as blank when served with https://lastfmimg2.akamaized.net/i/u/300x300/xxxxxxxxxxxxx.png (because of firewall blocking). Koel is caching it successfully in storage/img/artists (almost all artists images are there).

How can I enforce koel to deliver cached content rather than the one's from last.fm.

I was able to catch one error, but tried refreshing the page and catching it again, but was not able to.

Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH

http://koel-radio/api/492b98cb0ab5b132eefbf699dc728822/play?jwt-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjIsImlzcyI6Imh0dHA6XC9cL2Rhbi1yYWRpb1wvYXBpXC9tZSIsImlhdCI6MTQ5Mzc5MTUxOSwiZXhwIjoxNDk0Mzk2MzE5LCJuYmYiOjE0OTM3OTE1MTksImp0aSI6ImU3ZjQ5OTQ5ZWIyMWE4YTYyYWY3NGJjOGE5NjMyMWU0In0.CFpEG6LwE1KtTttKsjM4mFVj7YvWBEWpHMOHYeKBXxI

Originally created by @nikohd12 on GitHub (May 4, 2017). Original GitHub issue: https://github.com/koel/koel/issues/589 Hello, First of all, thank you @phanan for developing Koel, we're using it as our internal streaming server in our small office. We have strict blocking configured in our firewall, so we are blocking all websites except for the one's whitelisted. Ofc, one of those websites that are included is last.fm and akamaized. When they view the artist/album tab in the Info bar, it's white blank, but if they got lucky and it's being delivered via local server = "koel-radio/img/artist/.png", the images appear but appears as blank when served with https://lastfmimg2.akamaized.net/i/u/300x300/xxxxxxxxxxxxx.png (because of firewall blocking). Koel is caching it successfully in storage/img/artists (almost all artists images are there). How can I enforce koel to deliver cached content rather than the one's from last.fm. I was able to catch one error, but tried refreshing the page and catching it again, but was not able to. **Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH** `http://koel-radio/api/492b98cb0ab5b132eefbf699dc728822/play?jwt-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjIsImlzcyI6Imh0dHA6XC9cL2Rhbi1yYWRpb1wvYXBpXC9tZSIsImlhdCI6MTQ5Mzc5MTUxOSwiZXhwIjoxNDk0Mzk2MzE5LCJuYmYiOjE0OTM3OTE1MTksImp0aSI6ImU3ZjQ5OTQ5ZWIyMWE4YTYyYWY3NGJjOGE5NjMyMWU0In0.CFpEG6LwE1KtTttKsjM4mFVj7YvWBEWpHMOHYeKBXxI`
kerem closed this issue 2026-02-26 02:33:09 +03:00
Author
Owner

@phanan commented on GitHub (May 4, 2017):

I'm not very sure what you mean by "local_doman:xxxx" (and the whole
description tbh), but the error isn't related to the cache but from song
streaming instead.

On Thu, May 4, 2017 at 12:22 PM, nikojaro notifications@github.com wrote:

Hello,

First of all, thank you @phanan https://github.com/phanan for
developing Koel, we're using it as our internal streaming server in our
small office.

We have strict blocking configured in our firewall, so we are blocking all
websites except for the one's whitelisted. Ofc, one of those websites that
are included is last.fm and akamaized.

When they view the artist/album tab in the Info bar, it's white blank, but
if they got lucky and it's being delivered via "local_domain:xxxx", the
images appear, Koel is caching it successfully in storage/img/artists.

I just need to enforce koel to use the cached. I was able to get the error
from the browser console.

Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH

http://dan-radio/api/492b98cb0ab5b132eefbf699dc728822/play?jwt-token=
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjIsImlzcyI6Imh0dHA6XC
9cL2Rhbi1yYWRpb1wvYXBpXC9tZSIsImlhdCI6MTQ5Mzc5MTUxOSwiZXhwIj
oxNDk0Mzk2MzE5LCJuYmYiOjE0OTM3OTE1MTksImp0aSI6ImU3ZjQ5OTQ5ZW
IyMWE4YTYyYWY3NGJjOGE5NjMyMWU0In0.CFpEG6LwE1KtTttKsjM4mFVj7YvWBE
WpHMOHYeKBXxI


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phanan/koel/issues/589, or mute the thread
https://github.com/notifications/unsubscribe-auth/AHrt0mOPM__rjzaEbV7FZ3VKmhg9AJGTks5r2WB_gaJpZM4NQPKx
.

<!-- gh-comment-id:299118886 --> @phanan commented on GitHub (May 4, 2017): I'm not very sure what you mean by "local_doman:xxxx" (and the whole description tbh), but the error isn't related to the cache but from song streaming instead. On Thu, May 4, 2017 at 12:22 PM, nikojaro <notifications@github.com> wrote: > Hello, > > First of all, thank you @phanan <https://github.com/phanan> for > developing Koel, we're using it as our internal streaming server in our > small office. > > We have strict blocking configured in our firewall, so we are blocking all > websites except for the one's whitelisted. Ofc, one of those websites that > are included is last.fm and akamaized. > > When they view the artist/album tab in the Info bar, it's white blank, but > if they got lucky and it's being delivered via "local_domain:xxxx", the > images appear, Koel is caching it successfully in storage/img/artists. > > I just need to enforce koel to use the cached. I was able to get the error > from the browser console. > > *Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH* > > http://dan-radio/api/492b98cb0ab5b132eefbf699dc728822/play?jwt-token= > eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjIsImlzcyI6Imh0dHA6XC > 9cL2Rhbi1yYWRpb1wvYXBpXC9tZSIsImlhdCI6MTQ5Mzc5MTUxOSwiZXhwIj > oxNDk0Mzk2MzE5LCJuYmYiOjE0OTM3OTE1MTksImp0aSI6ImU3ZjQ5OTQ5ZW > IyMWE4YTYyYWY3NGJjOGE5NjMyMWU0In0.CFpEG6LwE1KtTttKsjM4mFVj7YvWBE > WpHMOHYeKBXxI > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > <https://github.com/phanan/koel/issues/589>, or mute the thread > <https://github.com/notifications/unsubscribe-auth/AHrt0mOPM__rjzaEbV7FZ3VKmhg9AJGTks5r2WB_gaJpZM4NQPKx> > . >
Author
Owner

@nikohd12 commented on GitHub (May 4, 2017):

@phanan I see. There was no playback error reported anyway.

Back to the topic, what I meant was the images are served randomly, either via localhost or via last.fm's cdn.

When I first implemented Last.FM API, all images are served locally with an address of /koel/storage/imgs/artist/jcole.png rather than the one being served right now which is https://lastfmimg2.akamaized.net/i/u/300x300/jcole.png.

I tried searching for functions that relate with caching and Last.fm, but I just saw this from resources/assets/js/components/main-wrapper/extra/artist-info.vue

<img v-if="artist.info.image" :src="artist.info.image"

<!-- gh-comment-id:299120885 --> @nikohd12 commented on GitHub (May 4, 2017): @phanan I see. There was no playback error reported anyway. Back to the topic, what I meant was the images are served randomly, either via localhost or via last.fm's cdn. When I first implemented Last.FM API, all images are served locally with an address of /koel/storage/imgs/artist/jcole.png rather than the one being served right now which is https://lastfmimg2.akamaized.net/i/u/300x300/jcole.png. I tried searching for functions that relate with caching and Last.fm, but I just saw this from [resources/assets/js/components/main-wrapper/extra/artist-info.vue](https://github.com/phanan/koel/blob/bdca871b6e46a006da78fe5920a57763863ad417/resources/assets/js/components/main-wrapper/extra/artist-info.vue) `<img v-if="artist.info.image" :src="artist.info.image"`
Author
Owner

@phanan commented on GitHub (May 4, 2017):

If the album/artist image doesn't exist and is found via Last.fm API, Koel
will copy it to use locally.

On Thu, May 4, 2017 at 3:05 PM, nikojaro notifications@github.com wrote:

@phanan https://github.com/phanan I see. There was no playback error
reported anyway.

Back to the topic, what I meant was the images are served randomly, either
via localhost or via last.fm's cdn.

When I first implemented Last.FM API, all images are served locally with
an address of /koel/storage/imgs/artist/jcole.png rather than the one
being served right now which is https://lastfmimg2.akamaized.
net/i/u/300x300/jcole.png.

I tried searching for functions that relate with caching and Last.fm, but
I just saw this from resources/assets/js/components/main-wrapper/extra/
artist-info.vue
https://github.com/phanan/koel/blob/bdca871b6e46a006da78fe5920a57763863ad417/resources/assets/js/components/main-wrapper/extra/artist-info.vue

<img v-if="artist.info.image" :src="artist.info.image"


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phanan/koel/issues/589#issuecomment-299120885, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHrt0tlhbseZdPDKk2t4ZA2ovNyUBedkks5r2Ya9gaJpZM4NQPKx
.

<!-- gh-comment-id:299173825 --> @phanan commented on GitHub (May 4, 2017): If the album/artist image doesn't exist and is found via Last.fm API, Koel will copy it to use locally. On Thu, May 4, 2017 at 3:05 PM, nikojaro <notifications@github.com> wrote: > @phanan <https://github.com/phanan> I see. There was no playback error > reported anyway. > > Back to the topic, what I meant was the images are served randomly, either > via localhost or via last.fm's cdn. > > When I first implemented Last.FM API, all images are served locally with > an address of /koel/storage/imgs/artist/jcole.png rather than the one > being served right now which is https://lastfmimg2.akamaized. > net/i/u/300x300/jcole.png. > > I tried searching for functions that relate with caching and Last.fm, but > I just saw this from resources/assets/js/components/main-wrapper/extra/ > artist-info.vue > <https://github.com/phanan/koel/blob/bdca871b6e46a006da78fe5920a57763863ad417/resources/assets/js/components/main-wrapper/extra/artist-info.vue> > > <img v-if="artist.info.image" :src="artist.info.image" > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > <https://github.com/phanan/koel/issues/589#issuecomment-299120885>, or mute > the thread > <https://github.com/notifications/unsubscribe-auth/AHrt0tlhbseZdPDKk2t4ZA2ovNyUBedkks5r2Ya9gaJpZM4NQPKx> > . >
Author
Owner

@nikohd12 commented on GitHub (May 4, 2017):

@phanan right, I do see that Koel stores it when I add new artists. But it's being served via Last.fm's CDN rather than using the local file.

<!-- gh-comment-id:299320735 --> @nikohd12 commented on GitHub (May 4, 2017): @phanan right, I do see that Koel stores it when I add new artists. But it's being served via Last.fm's CDN rather than using the local file.
Author
Owner

@nikohd12 commented on GitHub (May 4, 2017):

Okay, I think I figured it out how to reproduce it. I created a new instance of koel, with a new database.

You can get the images served locally if you are accessing it the first time. Meaning, the trigger was right,

If the album/artist image doesn't exist and is found via Last.fm API, Koel
will copy it to use locally.

However, once the image was already there in the /img/artists folder, and koel found that it exists, it will proceed with last.fm's cdn.

So, I tried it with all the artists, access it the first time = it will be served locally. Select the next song, it will be served via last.fm's cdn.

Screenshot:
First time playing the artist.
Next time playing the artist.

<!-- gh-comment-id:299329994 --> @nikohd12 commented on GitHub (May 4, 2017): Okay, I think I figured it out how to reproduce it. I created a new instance of koel, with a new database. You can get the images served locally if you are accessing it the first time. Meaning, the trigger was right, > If the album/artist image doesn't exist and is found via Last.fm API, Koel will copy it to use locally. However, once the image was already there in the /img/artists folder, and koel found that it exists, it will proceed with last.fm's cdn. So, I tried it with all the artists, access it the first time = it will be served locally. Select the next song, it will be served via last.fm's cdn. Screenshot: [First time playing the artist.](http://imgur.com/hGGgoGP) [Next time playing the artist.](http://imgur.com/mXcSI8k)
Author
Owner

@phanan commented on GitHub (May 5, 2017):

Even after refreshing Koel?

On Fri, May 5, 2017 at 5:46 AM, nikojaro notifications@github.com wrote:

Okay, I think I figured it out. I created a new instance of koel, with a
new database.

You can get the images served locally if you are accessing it the first
time. Meaning, the trigger was right,

If the album/artist image doesn't exist and is found via Last.fm API, Koel
will copy it to use locally.

However, once the image was already there in the /img/artists folder, and
koel found that it exists, it will proceed with last.fm's cdn.

So, I tried it with all the artists, access it the first time = it will be
served locally. Select the next song, it will be served via last.fm's cdn.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phanan/koel/issues/589#issuecomment-299329994, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHrt0oLimfZvlTXZM7y7U1S7FJ_42EHUks5r2lUtgaJpZM4NQPKx
.

<!-- gh-comment-id:299353351 --> @phanan commented on GitHub (May 5, 2017): Even after refreshing Koel? On Fri, May 5, 2017 at 5:46 AM, nikojaro <notifications@github.com> wrote: > Okay, I think I figured it out. I created a new instance of koel, with a > new database. > > You can get the images served locally if you are accessing it the first > time. Meaning, the trigger was right, > > If the album/artist image doesn't exist and is found via Last.fm API, Koel > will copy it to use locally. > > However, once the image was already there in the /img/artists folder, and > koel found that it exists, it will proceed with last.fm's cdn. > > So, I tried it with all the artists, access it the first time = it will be > served locally. Select the next song, it will be served via last.fm's cdn. > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > <https://github.com/phanan/koel/issues/589#issuecomment-299329994>, or mute > the thread > <https://github.com/notifications/unsubscribe-auth/AHrt0oLimfZvlTXZM7y7U1S7FJ_42EHUks5r2lUtgaJpZM4NQPKx> > . >
Author
Owner

@nikohd12 commented on GitHub (May 5, 2017):

@phanan by refreshing, do you mean restarting nginx? or by doing koel:init?

I tried doing both, still no success.

<!-- gh-comment-id:299353721 --> @nikohd12 commented on GitHub (May 5, 2017): @phanan by refreshing, do you mean restarting nginx? or by doing koel:init? I tried doing both, still no success.
Author
Owner

@phanan commented on GitHub (May 5, 2017):

I mean refreshing the browser.

On Fri, May 5, 2017 at 8:56 AM, nikojaro notifications@github.com wrote:

@phanan https://github.com/phanan by refreshing, do you mean restarting
nginx? or by doing koel:init?

I tried doing both, still no success.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phanan/koel/issues/589#issuecomment-299353721, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHrt0lazvEFWjNT_AaDRnzq0Gcj5CrQsks5r2oHQgaJpZM4NQPKx
.

<!-- gh-comment-id:299353819 --> @phanan commented on GitHub (May 5, 2017): I mean refreshing the browser. On Fri, May 5, 2017 at 8:56 AM, nikojaro <notifications@github.com> wrote: > @phanan <https://github.com/phanan> by refreshing, do you mean restarting > nginx? or by doing koel:init? > > I tried doing both, still no success. > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > <https://github.com/phanan/koel/issues/589#issuecomment-299353721>, or mute > the thread > <https://github.com/notifications/unsubscribe-auth/AHrt0lazvEFWjNT_AaDRnzq0Gcj5CrQsks5r2oHQgaJpZM4NQPKx> > . >
Author
Owner

@nikohd12 commented on GitHub (May 5, 2017):

@phanan yep tried doing Ctrl + F5, and the normal refresh. No success.

There's also no album picture in the info page.

But there are pictures when you visit the Album Page and the Artists Page on their respective tabs using the same resource.

<!-- gh-comment-id:299353942 --> @nikohd12 commented on GitHub (May 5, 2017): @phanan yep tried doing Ctrl + F5, and the normal refresh. No success. There's also no album picture in the **info page.** But there are pictures when you visit the **Album Page** and the **Artists Page** on their respective tabs using the same resource.
Author
Owner

@phanan commented on GitHub (May 5, 2017):

Oh then it's another story. The image in the info panel is part of the data
returned by Last.fm, and is always from Last.fm's CDN. You'll need to white
list the URL patterns.

On Fri, May 5, 2017 at 8:59 AM, nikojaro notifications@github.com wrote:

@phanan https://github.com/phanan yep tried doing Ctrl + F5, and the
normal refresh. No success.

There's also no album picture in the info page.

But there are pictures when you visit the Album Page and the Artists
Page
on their respective tabs using the same resource.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phanan/koel/issues/589#issuecomment-299353942, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHrt0tuJ9aS1gKkbGEa86kyhBvE0Bx99ks5r2oJngaJpZM4NQPKx
.

<!-- gh-comment-id:299354364 --> @phanan commented on GitHub (May 5, 2017): Oh then it's another story. The image in the info panel is part of the data returned by Last.fm, and is always from Last.fm's CDN. You'll need to white list the URL patterns. On Fri, May 5, 2017 at 8:59 AM, nikojaro <notifications@github.com> wrote: > @phanan <https://github.com/phanan> yep tried doing Ctrl + F5, and the > normal refresh. No success. > > There's also no album picture in the *info page.* > > But there are pictures when you visit the *Album Page* and the *Artists > Page* on their respective tabs using the same resource. > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > <https://github.com/phanan/koel/issues/589#issuecomment-299353942>, or mute > the thread > <https://github.com/notifications/unsubscribe-auth/AHrt0tuJ9aS1gKkbGEa86kyhBvE0Bx99ks5r2oJngaJpZM4NQPKx> > . >
Author
Owner

@nikohd12 commented on GitHub (May 5, 2017):

@phanan But when you play a song from an artist the first time, it returns the data coming from the localhost. How can I enforce it to use the link being distributed the first time? Should I create a cron job to delete the images in img/artist to be able to enforce it (would create lots of io).

I guess the last option would be whitelisting it, although I have to convince our IT Security if he would allow it.

<!-- gh-comment-id:299354667 --> @nikohd12 commented on GitHub (May 5, 2017): @phanan But when you play a song from an artist the first time, it returns the data coming from the localhost. How can I enforce it to use the link being distributed the first time? Should I create a cron job to delete the images in img/artist to be able to enforce it (would create lots of io). I guess the last option would be whitelisting it, although I have to convince our IT Security if he would allow it.
Author
Owner

@phanan commented on GitHub (May 5, 2017):

If you have Last.fm enabled, data from Last.fm will take priority over the
local data. The flow is:

  • You play a song for the first time
  • "Extra" panel shows whatever it has by now, which is the local data
  • Koel queries Last.fm for song information
  • Extra panel is updated with data from Last.fm

On Fri, May 5, 2017 at 9:06 AM, nikojaro notifications@github.com wrote:

@phanan https://github.com/phanan But when you play a song from an
artist the first time, it returns the data coming from the localhost. How
can I enforce it to use the link being distributed the first time? Should I
create a cron job to delete the images in img/artist to be able to enforce
it (would create lots of io).

I guess the last option would be whitelisting it.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phanan/koel/issues/589#issuecomment-299354667, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHrt0jJyQqi9DeMUgtPIgMwNJW4cmHe7ks5r2oQzgaJpZM4NQPKx
.

<!-- gh-comment-id:299355466 --> @phanan commented on GitHub (May 5, 2017): If you have Last.fm enabled, data from Last.fm will take priority over the local data. The flow is: - You play a song for the first time - "Extra" panel shows whatever it has by now, which is the local data - Koel queries Last.fm for song information - Extra panel is updated with data from Last.fm On Fri, May 5, 2017 at 9:06 AM, nikojaro <notifications@github.com> wrote: > @phanan <https://github.com/phanan> But when you play a song from an > artist the first time, it returns the data coming from the localhost. How > can I enforce it to use the link being distributed the first time? Should I > create a cron job to delete the images in img/artist to be able to enforce > it (would create lots of io). > > I guess the last option would be whitelisting it. > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > <https://github.com/phanan/koel/issues/589#issuecomment-299354667>, or mute > the thread > <https://github.com/notifications/unsubscribe-auth/AHrt0jJyQqi9DeMUgtPIgMwNJW4cmHe7ks5r2oQzgaJpZM4NQPKx> > . >
Author
Owner

@nikohd12 commented on GitHub (May 5, 2017):

@phanan Can I enable Last.fm to scrobble and disable the API once I'm done scrobbling.

So that it would use the local data.

Thanks a lot btw.

<!-- gh-comment-id:299355581 --> @nikohd12 commented on GitHub (May 5, 2017): @phanan Can I enable Last.fm to scrobble and disable the API once I'm done scrobbling. So that it would use the local data. Thanks a lot btw.
Author
Owner

@phanan commented on GitHub (May 5, 2017):

No I don't think that's possible, or even makes sense. The most sensible
"fix" would be to configure your firewall and allow trusted sources. Your
issue has very little to do with Koel TBH.

On Fri, May 5, 2017 at 9:16 AM, nikojaro notifications@github.com wrote:

@phanan https://github.com/phanan Can I enable Last.fm to scrobble and
disable the API once I'm done scrobbling.

So that it would use the local data.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phanan/koel/issues/589#issuecomment-299355581, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHrt0sYX7qMmjV-jDWHqAt1RtNPJxFCyks5r2oZ8gaJpZM4NQPKx
.

<!-- gh-comment-id:299355838 --> @phanan commented on GitHub (May 5, 2017): No I don't think that's possible, or even makes sense. The most sensible "fix" would be to configure your firewall and allow trusted sources. Your issue has very little to do with Koel TBH. On Fri, May 5, 2017 at 9:16 AM, nikojaro <notifications@github.com> wrote: > @phanan <https://github.com/phanan> Can I enable Last.fm to scrobble and > disable the API once I'm done scrobbling. > > So that it would use the local data. > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > <https://github.com/phanan/koel/issues/589#issuecomment-299355581>, or mute > the thread > <https://github.com/notifications/unsubscribe-auth/AHrt0sYX7qMmjV-jDWHqAt1RtNPJxFCyks5r2oZ8gaJpZM4NQPKx> > . >
Author
Owner

@nikohd12 commented on GitHub (May 5, 2017):

@phanan Thanks. Appreciate it.

<!-- gh-comment-id:299355992 --> @nikohd12 commented on GitHub (May 5, 2017): @phanan Thanks. Appreciate it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/koel-koel#418
No description provided.