Tyzer34 / plexMusicPlayer

Playback music with Alexa from your Plex Server!
https://medium.com/@Tyzer34/plex-alexa-the-perfect-wedding-38b14b41faf0#.b71cd6lsn
GNU General Public License v3.0
35 stars 19 forks source link

Band names should be parsed correctly #4

Closed tdelesio closed 7 years ago

tdelesio commented 7 years ago

I've been testing some artists. I've noticed that the matching doesn't always find the artist I want. For instance the band OneRepublic is spelled without the space. But when you say the band, it is two separate words. I don't know if this can be pattern matched or not but thought I would list it as a bug/feature.

Tyzer34 commented 7 years ago

Thank you for noticing! Normally, this should be handled by the Amazon Services. However, I think it might be possible to do an extra lookup using an external API. I will check into this in the next few days. As this also relates to bands like twenty one pilots, I've closed issue #5 .

tdelesio commented 7 years ago

It did but I thought I would list it as a separate issue. I have verified this with the plex service directly. I was able to reverse engineer the url for plex:

https://.ee51a749bffb4ba6a60b868cba10a375.plex.direct:32400/search?query=native&X-Plex-Token=&type=9

Some other things I noticed. When I search for native (as listed above), plex actually returns two responses (native and native tongue), but the python service says nothing is found. So I am not sure how your service works if multiples are found. I would love to help refine some of the searching however I am not that familiar with python (quick learner though). What is the entry point to this service so I can follow the flow? Also, I was looking at the intents and there are 3 for play , how does the python script identify if it is an album, artist, or track? Any other help to start me off?

Tyzer34 commented 7 years ago

Normally, if multiple responses are returned, the first response listed will be used. Also, it is the Amazon service that determines if the requested query is an album, song or artist. If you want to specify this yourself, you can say, for example: Alexa, ask Plex to play tracks from {artist}. As for the entry point, you should check out the methods file. Here, I specified the different methods for parsing the XML data given back by Plex, as you have accessed yourself.

tdelesio commented 7 years ago

Yea I saw that. I wanted to followed the request from the alexa service to heroku and didn't know what end point it was calling in heroku (and how it relates back to your code). That way I could follow the data flow and method calls to get a better understand of what was going on. I'm not exactly sure how this relates back to Amazon service too.

Tyzer34 commented 7 years ago

If you want to know how the communication works between the Echo devices, Amazon services and your own server, you should definitely read up on this blog post that I wrote. It explains the communication flow in detail.

tdelesio commented 7 years ago

I created a tdelesio branch and fixed this issue. I am now converting numbers back to words and also removing white space. I tested with One Republic. Amazon takes that phrase and converts it to 1 republic. I then take the "1 republic" and search it against the plex db. If no results are found, i convert "1 republic" to "one republic" and requery. If still no results are found, I trim the white space and recall plex with "onerepublic" which is how it is stored there. I don't know if you want to review the changes prior to a merge with master, but check it out.

Tyzer34 commented 7 years ago

Great!! I've merged both branches together! Thank you for the contribution, I appreciate it!