docs: add Kodi <-> Music Assistant smart queue bridge writeup
Covers the design rationale, the refill-cycle mechanism, three real issues found and fixed via live testing against a real Kodi session (a silent result-key mismatch that meant the daemon never once resolved a track, a starved similarity candidate pool, and a 4-minute poll-interval blind spot), and live proof of a working auto-queued run of similar tracks. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
1 parent
f85fce7202
commit
4e3e9b02a8
4 files changed
+142
No files matched your search
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Do not edit this file with editors other than draw.io -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="624px" height="632px" viewBox="0 0 624 632" content="<mxfile host="embed.diagrams.net" scale="1" border="0">
 <diagram name="Refill Cycle" id="0">
 <mxGraphModel dx="1398" dy="830" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="900" pageHeight="700" math="0" shadow="0">
 <root>
 <mxCell id="0" />
 <mxCell id="1" parent="0" />
 <mxCell id="poll" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=13;" value="Poll each Kodi instance&lt;br&gt;(every 240s)" vertex="1">
 <mxGeometry height="60" width="220" x="340" y="40" as="geometry" />
 </mxCell>
 <mxCell id="active" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=13;" value="Active player + queue&lt;br&gt;length on this instance" vertex="1">
 <mxGeometry height="60" width="220" x="340" y="150" as="geometry" />
 </mxCell>
 <mxCell id="gate" parent="1" style="rhombus;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=13;" value="&lt;font style=&quot;font-size: 11px;&quot;&gt;Remaining &amp;gt;&lt;br&gt;REFILL_THRESHOLD (5)?&lt;/font&gt;" vertex="1">
 <mxGeometry height="90" width="190" x="355" y="260" as="geometry" />
 </mxCell>
 <mxCell id="resolve" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=13;" value="Resolve current track&lt;br&gt;in MA (music/search)" vertex="1">
 <mxGeometry height="60" width="220" x="340" y="400" as="geometry" />
 </mxCell>
 <mxCell id="similar" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=13;" value="Query similar_tracks&lt;br&gt;(large candidate pool)" vertex="1">
 <mxGeometry height="60" width="220" x="340" y="500" as="geometry" />
 </mxCell>
 <mxCell id="inject" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=13;" value="Filter + translate paths,&lt;br&gt;Playlist.Add up to 10" vertex="1">
 <mxGeometry height="60" width="220" x="340" y="600" as="geometry" />
 </mxCell>
 <mxCell id="e1" edge="1" parent="1" source="poll" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#333333;" target="active">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="e2" edge="1" parent="1" source="active" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#333333;" target="gate">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="e3" edge="1" parent="1" source="gate" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#b85450;exitX=1;exitY=0.5;labelBackgroundColor=#1C1D1E;exitDx=0;exitDy=0;" target="poll" value="&lt;span style=&quot;background-color: light-dark(rgb(255, 255, 255), rgb(28, 29, 30));&quot;&gt;yes &amp;mdash; skip&lt;/span&gt;">
 <mxGeometry relative="1" x="0.0698" y="-33" as="geometry">
 <mxPoint as="offset" />
 <Array as="points">
 <mxPoint x="60Line truncated
|
||||
|
After Width: | Height: | Size: 162 KiB |
Reference in new issue
Block a user