Add: Workaround now works also for 404

pull/17/head
Juraj Nyíri 3 years ago
parent 480b5ccdc6
commit 4c94107141

@ -377,6 +377,34 @@ You can use _:desc_ or _:asc_ after every value to change the order from ascendi
| mediaHeight | Sorts by resolution |
| mediaBitrate | Sorts by bitrate |
## FAQ
<details>
<summary>I am using plexPlayer and nothing happens when play button is pressed</summary>
- Make sure that your device is turned on, and has Plex running
- Reload tab
- Try hitting play button again
If it still doesn't work and everything else works, you are probably encountering CORS issue. You can check this by opening developer tools and looking into console log or network tab.
The reason why this is happening only for this call is right now unknown, but there is a workaround.
Edit configuration.yaml of your Home Assistant and add following rest_command:
```
rest_command:
pmha_playmedia:
url: "{{ url }}"
headers:
X-Plex-Target-Client-Identifier: "{{ target_client_identifier }}"
X-Plex-Client-Identifier: "{{ client_identifier }}"
```
Restart Home Assistant, clear browser cache and try hitting play again. It should now work.
</details>
## Ask for help or help development
Join [Discord](https://discord.gg/jqqz9jQXWx) or [Home Assistant Community](https://community.home-assistant.io/t/custom-component-card-plex-meets-home-assistant/304349).

@ -18973,24 +18973,24 @@ class PlayController {
}
}
catch (err) {
try {
await this.hass.callService('rest_command', 'pmha_playmedia', {
// eslint-disable-next-line @typescript-eslint/camelcase
url,
// eslint-disable-next-line @typescript-eslint/camelcase
target_client_identifier: machineID,
// eslint-disable-next-line @typescript-eslint/camelcase
client_identifier: 'PlexMeetsHomeAssistant'
});
}
catch (homeAssistantErr) {
// pass
}
if (lodash.includes(err.message, '404')) {
throw Error('Defined plexPlayer is currently not available for playback.');
}
else {
// if we caught CORS error, try to use workaround. Todo: figure out why is the CORS issue happening
try {
await this.hass.callService('rest_command', 'pmha_playmedia', {
// eslint-disable-next-line @typescript-eslint/camelcase
url,
// eslint-disable-next-line @typescript-eslint/camelcase
target_client_identifier: machineID,
// eslint-disable-next-line @typescript-eslint/camelcase
client_identifier: 'PlexMeetsHomeAssistant'
});
}
catch (homeAssistantErr) {
throw err;
}
throw err;
}
}
};

@ -182,22 +182,22 @@ class PlayController {
throw Error('Error while asking plex to play a movie - target device not available.');
}
} catch (err) {
try {
await this.hass.callService('rest_command', 'pmha_playmedia', {
// eslint-disable-next-line @typescript-eslint/camelcase
url,
// eslint-disable-next-line @typescript-eslint/camelcase
target_client_identifier: machineID,
// eslint-disable-next-line @typescript-eslint/camelcase
client_identifier: 'PlexMeetsHomeAssistant'
});
} catch (homeAssistantErr) {
// pass
}
if (_.includes(err.message, '404')) {
throw Error('Defined plexPlayer is currently not available for playback.');
} else {
// if we caught CORS error, try to use workaround. Todo: figure out why is the CORS issue happening
try {
await this.hass.callService('rest_command', 'pmha_playmedia', {
// eslint-disable-next-line @typescript-eslint/camelcase
url,
// eslint-disable-next-line @typescript-eslint/camelcase
target_client_identifier: machineID,
// eslint-disable-next-line @typescript-eslint/camelcase
client_identifier: 'PlexMeetsHomeAssistant'
});
} catch (homeAssistantErr) {
throw err;
}
throw err;
}
}
};

Loading…
Cancel
Save