4 lines
18 KiB
XML
4 lines
18 KiB
XML
<?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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="311px" height="422px" viewBox="-0.5 -0.5 311 422" content="<mxfile host="app.diagrams.net" modified="2023-11-07T19:02:16.493Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0" etag="Jeo5sBjMZg4Il3pGEkVv" version="22.0.8" type="github">
 <diagram name="Page-1" id="Os_d6Ix4-OmGA2ESzcNy">
 <mxGraphModel dx="819" dy="1534" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
 <root>
 <mxCell id="0" />
 <mxCell id="1" parent="0" />
 <mxCell id="vnCT68lWyodSIy9P_5kl-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="vnCT68lWyodSIy9P_5kl-1" target="vnCT68lWyodSIy9P_5kl-2" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="320" y="110" />
 <mxPoint x="320" y="10" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-20" value="db refresh" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vnCT68lWyodSIy9P_5kl-6" vertex="1" connectable="0">
 <mxGeometry x="-0.354" relative="1" as="geometry">
 <mxPoint y="-32" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="vnCT68lWyodSIy9P_5kl-1" target="vnCT68lWyodSIy9P_5kl-10" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-1" value="backend" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="160" y="80" width="120" height="60" as="geometry" />
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-2" value="MPD" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="360" y="-20" width="80" height="60" as="geometry" />
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="vnCT68lWyodSIy9P_5kl-3" target="vnCT68lWyodSIy9P_5kl-1" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="220" y="190" />
 <mxPoint x="220" y="190" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-9" value="yt-dlp&amp;nbsp;integration" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="vnCT68lWyodSIy9P_5kl-5" vertex="1" connectable="0">
 <mxGeometry x="-0.2222" y="-2" relative="1" as="geometry">
 <mxPoint x="-52" y="-7" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="mC6_lUEuGq_3_uGXtFcV-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;" edge="1" parent="1" source="vnCT68lWyodSIy9P_5kl-3" target="mC6_lUEuGq_3_uGXtFcV-1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="400" y="180" />
 <mxPoint x="400" y="180" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-3" value="frontend" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="160" y="200" width="280" height="60" as="geometry" />
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-10" value="yt-dlp" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="160" y="-20" width="120" height="60" as="geometry" />
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="vnCT68lWyodSIy9P_5kl-14" target="vnCT68lWyodSIy9P_5kl-3" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="vnCT68lWyodSIy9P_5kl-14" value="user" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
 <mxGeometry x="285" y="320" width="30" height="60" as="geometry" />
 </mxCell>
 <mxCell id="mC6_lUEuGq_3_uGXtFcV-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;" edge="1" parent="1" source="mC6_lUEuGq_3_uGXtFcV-1" target="vnCT68lWyodSIy9P_5kl-2">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="mC6_lUEuGq_3_uGXtFcV-1" value="WebSocket to MPD translator" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
 <mxGeometry x="360" y="80" width="80" height="60" as="geometry" />
 </mxCell>
 </root>
 </mxGraphModel>
 </diagram>
</mxfile>
" resource="https://app.diagrams.net/?mode=github#Hcccb%2Fsanic%2Fmain%2Farchitecture.drawio.svg"><defs/><g><path d="M 150 130 L 190.03 130 L 190.03 30 L 223.63 30" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 228.88 30 L 221.88 33.5 L 223.63 30 L 221.88 26.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 80px; margin-left: 190px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">db refresh</div></div></div></foreignObject><text x="190" y="83" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">db refresh</text></switch></g><path d="M 90 100 L 90 66.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 90 61.12 L 93.5 68.12 L 90 66.37 L 86.5 68.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="30" y="100" width="120" height="60" rx="9" ry="9" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 130px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">backend</div></div></div></foreignObject><text x="90" y="134" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">backend</text></switch></g><rect x="230" y="0" width="80" height="60" rx="9" ry="9" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 30px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">MPD</div></div></div></foreignObject><text x="270" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">MPD</text></switch></g><path d="M 90.03 220 L 90.03 210 L 90.03 166.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 90.03 161.12 L 93.53 168.12 L 90.03 166.37 L 86.53 168.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 190px; margin-left: 40px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">yt-dlp integration</div></div></div></foreignObject><text x="40" y="193" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">yt-dlp integration</text></switch></g><path d="M 270.03 213.63 L 270.03 200 L 270.03 166.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 270.03 218.88 L 266.53 211.88 L 270.03 213.63 L 273.53 211.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 270.03 161.12 L 273.53 168.12 L 270.03 166.37 L 266.53 168.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="30" y="220" width="280" height="60" rx="9" ry="9" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 250px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">frontend</div></div></div></foreignObject><text x="170" y="254" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">frontend</text></switch></g><rect x="30" y="0" width="120" height="60" rx="9" ry="9" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 30px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">yt-dlp</div></div></div></foreignObject><text x="90" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">yt-dlp</text></switch></g><path d="M 170 340 L 170 286.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 170 281.12 L 173.5 288.12 L 170 286.37 L 166.5 288.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="170" cy="347.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 170 355 L 170 380 M 170 360 L 155 360 M 170 360 L 185 360 M 170 380 L 155 400 M 170 380 L 185 400" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 407px; margin-left: 170px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">user</div></div></div></foreignObject><text x="170" y="419" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">user</text></switch></g><path d="M 270 93.63 L 270 66.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 270 98.88 L 266.5 91.88 L 270 93.63 L 273.5 91.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 270 61.12 L 273.5 68.12 L 270 66.37 L 266.5 68.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="230" y="100" width="80" height="60" rx="9" ry="9" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 130px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">WebSocket to MPD translator</div></div></div></foreignObject><text x="270" y="134" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">WebSocket to...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> |