Move docs into main branch.
|
@ -0,0 +1 @@
|
|||
azuracast.com
|
|
@ -0,0 +1,96 @@
|
|||
<!-- HTML for static distribution bundle build -->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Swagger UI</title>
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700"
|
||||
rel="stylesheet">
|
||||
<link rel="stylesheet" type="text/css" href="./swagger-ui.css">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="../icons/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="../icons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="../icons/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="../icons/favicon-16x16.png">
|
||||
<style>
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
overflow: -moz-scrollbars-vertical;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
background: #fafafa;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
style="position:absolute;width:0;height:0">
|
||||
<defs>
|
||||
<symbol viewBox="0 0 20 20" id="unlocked">
|
||||
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
|
||||
</symbol>
|
||||
|
||||
<symbol viewBox="0 0 20 20" id="locked">
|
||||
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
|
||||
</symbol>
|
||||
|
||||
<symbol viewBox="0 0 20 20" id="close">
|
||||
<path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
|
||||
</symbol>
|
||||
|
||||
<symbol viewBox="0 0 20 20" id="large-arrow">
|
||||
<path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
|
||||
</symbol>
|
||||
|
||||
<symbol viewBox="0 0 20 20" id="large-arrow-down">
|
||||
<path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
|
||||
</symbol>
|
||||
|
||||
|
||||
<symbol viewBox="0 0 24 24" id="jump-to">
|
||||
<path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/>
|
||||
</symbol>
|
||||
|
||||
<symbol viewBox="0 0 24 24" id="expand">
|
||||
<path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
|
||||
</symbol>
|
||||
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
<div id="swagger-ui"></div>
|
||||
|
||||
<script src="./swagger-ui-bundle.js"></script>
|
||||
<script src="./swagger-ui-standalone-preset.js"></script>
|
||||
<script>
|
||||
window.onload = function () {
|
||||
// Build a system
|
||||
const ui = SwaggerUIBundle({
|
||||
url: "https://raw.githubusercontent.com/AzuraCast/AzuraCast/master/web/static/api/swagger.json",
|
||||
dom_id: '#swagger-ui',
|
||||
presets: [
|
||||
SwaggerUIBundle.presets.apis,
|
||||
SwaggerUIStandalonePreset
|
||||
],
|
||||
plugins: [
|
||||
SwaggerUIBundle.plugins.DownloadUrl
|
||||
],
|
||||
layout: "StandaloneLayout"
|
||||
})
|
||||
|
||||
window.ui = ui
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,55 @@
|
|||
<!doctype html>
|
||||
<html lang="en-US">
|
||||
<body onload="run()">
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
'use strict';
|
||||
function run() {
|
||||
var oauth2 = window.opener.swaggerUIRedirectOauth2;
|
||||
var sentState = oauth2.state;
|
||||
var redirectUrl = oauth2.redirectUrl;
|
||||
var isValid, qp, arr;
|
||||
|
||||
qp = (window.location.hash || location.search).substring(1);
|
||||
|
||||
arr = qp.split("&")
|
||||
arr.forEach(function (v, i, _arr) {
|
||||
_arr[i] = '"' + v.replace('=', '":"') + '"';
|
||||
})
|
||||
qp = qp ? JSON.parse('{' + arr.join() + '}',
|
||||
function (key, value) {
|
||||
return key === "" ? value : decodeURIComponent(value)
|
||||
}
|
||||
) : {}
|
||||
|
||||
isValid = qp.state === sentState
|
||||
|
||||
if (oauth2.auth.schema.get("flow") === "accessCode" && !oauth2.auth.code) {
|
||||
if (!isValid) {
|
||||
oauth2.errCb({
|
||||
authId: oauth2.auth.name,
|
||||
source: "auth",
|
||||
level: "warning",
|
||||
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
|
||||
});
|
||||
}
|
||||
|
||||
if (qp.code) {
|
||||
delete oauth2.state;
|
||||
oauth2.auth.code = qp.code;
|
||||
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
|
||||
} else {
|
||||
oauth2.errCb({
|
||||
authId: oauth2.auth.name,
|
||||
source: "auth",
|
||||
level: "error",
|
||||
message: "Authorization failed: no accessCode received from the server"
|
||||
});
|
||||
}
|
||||
} else {
|
||||
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
|
||||
}
|
||||
window.close();
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,584 @@
|
|||
{
|
||||
"swagger": "2.0",
|
||||
"info": {
|
||||
"title": "AzuraCast",
|
||||
"description": "AzuraCast is a standalone, turnkey web radio management tool. Radio stations hosted by AzuraCast expose a public API for viewing now playing data, making requests and more.",
|
||||
"license": {
|
||||
"name": "Apache 2.0",
|
||||
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
|
||||
},
|
||||
"version": "0.6.0-2017.06"
|
||||
},
|
||||
"host": "",
|
||||
"basePath": "/api",
|
||||
"schemes": [
|
||||
"http",
|
||||
"https"
|
||||
],
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"paths": {
|
||||
"/status": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Miscellaneous"
|
||||
],
|
||||
"description": "Returns an affirmative response if the API is active.",
|
||||
"parameters": [],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Status"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/time": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Miscellaneous"
|
||||
],
|
||||
"description": "Returns the time (with formatting) in GMT and the user's local time zone, if logged in.",
|
||||
"parameters": [],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Time"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/station/{station_id}/listeners": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Authenticated Endpoints"
|
||||
],
|
||||
"description": "Return detailed information about current listeners.",
|
||||
"parameters": [
|
||||
{
|
||||
"$ref": "#/parameters/station_id_required"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/Listener"
|
||||
}
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Station not found"
|
||||
},
|
||||
"403": {
|
||||
"description": "Access denied"
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"api_key": [
|
||||
"view station reports"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"/nowplaying": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Now Playing"
|
||||
],
|
||||
"description": "Returns a full summary of all stations' current state.",
|
||||
"parameters": [],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/NowPlaying"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/nowplaying/{station_id}": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Now Playing"
|
||||
],
|
||||
"description": "Returns a full summary of the specified station's current state.",
|
||||
"parameters": [
|
||||
{
|
||||
"$ref": "#/parameters/station_id_required"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/NowPlaying"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Station not found"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/station/{station_id}/requests": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Station Details"
|
||||
],
|
||||
"description": "Return a list of requestable songs.",
|
||||
"parameters": [
|
||||
{
|
||||
"$ref": "#/parameters/station_id_required"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/StationRequest"
|
||||
}
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Station not found"
|
||||
},
|
||||
"403": {
|
||||
"description": "Station does not support requests"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/station/{station_id}/request/{request_id}": {
|
||||
"post": {
|
||||
"tags": [
|
||||
"Station Details"
|
||||
],
|
||||
"description": "Submit a song request.",
|
||||
"parameters": [
|
||||
{
|
||||
"$ref": "#/parameters/station_id_required"
|
||||
},
|
||||
{
|
||||
"name": "request_id",
|
||||
"in": "path",
|
||||
"description": "The requestable song ID",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success"
|
||||
},
|
||||
"404": {
|
||||
"description": "Station not found"
|
||||
},
|
||||
"403": {
|
||||
"description": "Station does not support requests"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stations": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Station Details"
|
||||
],
|
||||
"description": "Returns a list of stations.",
|
||||
"parameters": [],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/Station"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/station/{station_id}": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Station Details"
|
||||
],
|
||||
"description": "Return information about a single station.",
|
||||
"parameters": [
|
||||
{
|
||||
"$ref": "#/parameters/station_id_required"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Station"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Station not found"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"Listener": {
|
||||
"properties": {
|
||||
"ip": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "127.0.0.1"
|
||||
},
|
||||
"user_agent": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36"
|
||||
},
|
||||
"connected_on": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": 1497660417
|
||||
},
|
||||
"connected_time": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": 30
|
||||
},
|
||||
"location": {
|
||||
"description": "",
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"NowPlaying": {
|
||||
"properties": {
|
||||
"station": {
|
||||
"description": "",
|
||||
"$ref": "#/definitions/Station"
|
||||
},
|
||||
"current_song": {
|
||||
"description": "",
|
||||
"$ref": "#/definitions/SongHistory"
|
||||
},
|
||||
"listeners": {
|
||||
"description": "",
|
||||
"$ref": "#/definitions/NowPlayingListeners"
|
||||
},
|
||||
"song_history": {
|
||||
"description": "",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/SongHistory"
|
||||
}
|
||||
},
|
||||
"cache": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"hit",
|
||||
"database",
|
||||
"miss"
|
||||
]
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"NowPlayingListeners": {
|
||||
"properties": {
|
||||
"current": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": "15"
|
||||
},
|
||||
"unique": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": "15"
|
||||
},
|
||||
"total": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": "20"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"Song": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "9f33bbc912c19603e51be8e0987d076b"
|
||||
},
|
||||
"text": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "Chet Porter - Aluko River"
|
||||
},
|
||||
"artist": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "Chet Porter"
|
||||
},
|
||||
"title": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "Aluko River"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"SongHistory": {
|
||||
"properties": {
|
||||
"sh_id": {
|
||||
"description": "",
|
||||
"type": "integer"
|
||||
},
|
||||
"played_at": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": 1497660417
|
||||
},
|
||||
"is_request": {
|
||||
"description": "",
|
||||
"type": "boolean"
|
||||
},
|
||||
"song": {
|
||||
"description": "",
|
||||
"$ref": "#/definitions/Song"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"Station": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": 1
|
||||
},
|
||||
"name": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "AzuraTest Radio"
|
||||
},
|
||||
"shortcode": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "azuratest_radio"
|
||||
},
|
||||
"description": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "An AzuraCast station!"
|
||||
},
|
||||
"frontend": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "shoutcast2"
|
||||
},
|
||||
"backend": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "liquidsoap"
|
||||
},
|
||||
"listen_url": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "http://localhost:8000/radio.mp3"
|
||||
},
|
||||
"mounts": {
|
||||
"description": "",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/StationMount"
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"StationMount": {
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "",
|
||||
"type": "string"
|
||||
},
|
||||
"is_default": {
|
||||
"description": "",
|
||||
"type": "boolean"
|
||||
},
|
||||
"url": {
|
||||
"description": "",
|
||||
"type": "string"
|
||||
},
|
||||
"bitrate": {
|
||||
"description": "",
|
||||
"type": "integer"
|
||||
},
|
||||
"format": {
|
||||
"description": "",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"StationRequest": {
|
||||
"properties": {
|
||||
"request_id": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": 1
|
||||
},
|
||||
"request_url": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": "/api/station/1/request/1"
|
||||
},
|
||||
"song": {
|
||||
"description": "",
|
||||
"$ref": "#/definitions/Song"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"Status": {
|
||||
"properties": {
|
||||
"online": {
|
||||
"description": "",
|
||||
"type": "boolean",
|
||||
"example": true
|
||||
},
|
||||
"timestamp": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": 1497660417
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"Time": {
|
||||
"properties": {
|
||||
"timestamp": {
|
||||
"description": "",
|
||||
"type": "integer",
|
||||
"example": 1497652397
|
||||
},
|
||||
"gmt_datetime": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "2017-06-16 10:33:17"
|
||||
},
|
||||
"gmt_date": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "June 16, 2017"
|
||||
},
|
||||
"gmt_time": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "10:33pm"
|
||||
},
|
||||
"gmt_timezone": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "GMT"
|
||||
},
|
||||
"gmt_timezone_abbr": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "GMT"
|
||||
},
|
||||
"local_datetime": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "2017-06-16 10:33:17"
|
||||
},
|
||||
"local_date": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "June 16, 2017"
|
||||
},
|
||||
"local_time": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "10:33pm"
|
||||
},
|
||||
"local_timezone": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "UTC"
|
||||
},
|
||||
"local_timezone_abbr": {
|
||||
"description": "",
|
||||
"type": "string",
|
||||
"example": "UTC"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"parameters": {
|
||||
"station_id_required": {
|
||||
"name": "station_id",
|
||||
"in": "path",
|
||||
"description": "The station ID",
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"todo": {
|
||||
"description": "This API call has no documentated response (yet)"
|
||||
}
|
||||
},
|
||||
"securityDefinitions": {
|
||||
"api_key": {
|
||||
"type": "apiKey",
|
||||
"name": "X-API-Key",
|
||||
"in": "header"
|
||||
}
|
||||
},
|
||||
"tags": [
|
||||
{
|
||||
"name": "Now Playing",
|
||||
"description": "Endpoints that provide full summaries of the current state of stations."
|
||||
},
|
||||
{
|
||||
"name": "Station Details",
|
||||
"description": "Specific information on individual stations"
|
||||
},
|
||||
{
|
||||
"name": "Authenticated Endpoints",
|
||||
"description": "API calls with more detailed information, requiring specific credentialed access."
|
||||
}
|
||||
],
|
||||
"externalDocs": {
|
||||
"description": "AzuraCast on GitHub",
|
||||
"url": "https://github.com/AzuraCast/AzuraCast"
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 759 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 9.7 KiB |
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"name": "App",
|
||||
"icons": [
|
||||
{
|
||||
"src": "\/android-icon-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": "0.75"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": "1.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": "1.5"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": "2.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": "3.0"
|
||||
},
|
||||
{
|
||||
"src": "\/android-icon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": "4.0"
|
||||
}
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,687 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>AzuraCast</title>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="icons/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="icons/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="icons/apple-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="icons/apple-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="icons/apple-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="icons/apple-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="icons/apple-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="icons/apple-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="icons/apple-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="icons/android-icon-192x192.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="icons/favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png">
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
|
||||
<meta name="description" content="A turnkey, self-hosted web radio management suite." />
|
||||
<meta property="og:site_name" content="AzuraCast" />
|
||||
<meta property="og:title" content="AzuraCast" />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:description" content="A turnkey, self-hosted web radio management suite." />
|
||||
<meta property="og:url" content="https://azuracast.com" />
|
||||
<meta property="twitter:card" content="summary_large_image" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,300,300italic,700,700italic" rel="stylesheet"
|
||||
type="text/css" />
|
||||
<style>
|
||||
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
|
||||
blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd,
|
||||
q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul,
|
||||
li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article,
|
||||
aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output,
|
||||
ruby, section, summary, time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
blockquote:before,
|
||||
blockquote:after,
|
||||
q:before,
|
||||
q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-text-size-adjust: none
|
||||
}
|
||||
|
||||
mark {
|
||||
background-color: transparent;
|
||||
color: inherit
|
||||
}
|
||||
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="email"],
|
||||
select,
|
||||
textarea {
|
||||
-moz-appearance: none;
|
||||
-webkit-appearance: none;
|
||||
-ms-appearance: none;
|
||||
appearance: none
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
min-width: 320px;
|
||||
min-height: 100vh;
|
||||
line-height: 1.0;
|
||||
word-wrap: break-word;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
strong {
|
||||
color: inherit;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: "Lucida Console", "Courier New", monospace;
|
||||
font-weight: normal;
|
||||
text-indent: 0;
|
||||
letter-spacing: 0;
|
||||
font-size: 0.9em;
|
||||
margin: 0 0.25em;
|
||||
padding: 0.25em 0.5em;
|
||||
background-color: rgba(144, 144, 144, 0.25);
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
|
||||
mark {
|
||||
background-color: rgba(144, 144, 144, 0.25);
|
||||
}
|
||||
|
||||
a {
|
||||
-moz-transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
|
||||
-webkit-transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
|
||||
-ms-transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
|
||||
transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
|
||||
color: inherit;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
s {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
body:before {
|
||||
content: '';
|
||||
display: block;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
z-index: 0;
|
||||
-moz-pointer-events: none;
|
||||
-webkit-pointer-events: none;
|
||||
-ms-pointer-events: none;
|
||||
pointer-events: none;
|
||||
-moz-transform: scale(1);
|
||||
-webkit-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1);
|
||||
background-image: linear-gradient(to top, rgba(0, 0, 0, 0.431), rgba(0, 0, 0, 0.431)), url('assets/bg.png');
|
||||
background-position: 0% 0%, center;
|
||||
background-repeat: repeat, no-repeat;
|
||||
background-size: auto, cover;
|
||||
background-attachment: scroll;
|
||||
background-color: #3D3D3D;
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 18pt;
|
||||
}
|
||||
|
||||
#wrapper {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
display: -moz-flex;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flex;
|
||||
display: flex;
|
||||
-moz-flex-direction: column;
|
||||
-webkit-flex-direction: column;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-moz-align-items: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-align-items: center;
|
||||
align-items: center;
|
||||
-moz-justify-content: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-justify-content: center;
|
||||
justify-content: center;
|
||||
min-height: 100vh;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#main {
|
||||
display: -moz-flex;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flex;
|
||||
display: flex;
|
||||
position: relative;
|
||||
max-width: 100%;
|
||||
z-index: 1;
|
||||
-moz-align-items: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-align-items: center;
|
||||
align-items: center;
|
||||
-moz-justify-content: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-justify-content: center;
|
||||
justify-content: center;
|
||||
-moz-flex-grow: 0;
|
||||
-webkit-flex-grow: 0;
|
||||
-ms-flex-grow: 0;
|
||||
flex-grow: 0;
|
||||
-moz-flex-shrink: 0;
|
||||
-webkit-flex-shrink: 0;
|
||||
-ms-flex-shrink: 0;
|
||||
flex-shrink: 0;
|
||||
text-align: center;
|
||||
-moz-transition: opacity 1.125s ease 0s, -moz-transform 1.125s ease 0s;
|
||||
-webkit-transition: opacity 1.125s ease 0s, -webkit-transform 1.125s ease 0s;
|
||||
-ms-transition: opacity 1.125s ease 0s, -ms-transform 1.125s ease 0s;
|
||||
transition: opacity 1.125s ease 0s, transform 1.125s ease 0s;
|
||||
}
|
||||
|
||||
#main>.inner {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: inherit;
|
||||
padding: 1.25rem 1rem;
|
||||
max-width: 100%;
|
||||
width: 26rem;
|
||||
}
|
||||
|
||||
#main>.inner>* {
|
||||
margin-top: 0.625rem;
|
||||
margin-bottom: 0.625rem;
|
||||
-moz-transition: opacity 1s ease-in-out 0s;
|
||||
-webkit-transition: opacity 1s ease-in-out 0s;
|
||||
-ms-transition: opacity 1s ease-in-out 0s;
|
||||
transition: opacity 1s ease-in-out 0s;
|
||||
}
|
||||
|
||||
#main>.inner> :first-child {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
#main>.inner> :last-child {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
#main>.inner>.full {
|
||||
margin-left: calc(-1rem);
|
||||
width: calc(100% + 2rem + 0.4725px);
|
||||
max-width: calc(100% + 2rem + 0.4725px);
|
||||
}
|
||||
|
||||
#main>.inner>.full:first-child {
|
||||
margin-top: -1.25rem !important;
|
||||
border-top-left-radius: inherit;
|
||||
border-top-right-radius: inherit;
|
||||
}
|
||||
|
||||
#main>.inner>.full:last-child {
|
||||
margin-bottom: -1.25rem !important;
|
||||
border-bottom-left-radius: inherit;
|
||||
border-bottom-right-radius: inherit;
|
||||
}
|
||||
|
||||
#main>.inner>.full.screen {
|
||||
width: 100vw;
|
||||
max-width: 100vw;
|
||||
position: relative;
|
||||
border-radius: 0 !important;
|
||||
left: 50%;
|
||||
right: auto;
|
||||
margin-left: -50vw;
|
||||
}
|
||||
|
||||
#main>.inner> :nth-child(2) {
|
||||
-moz-transition-delay: 0.125s;
|
||||
-webkit-transition-delay: 0.125s;
|
||||
-ms-transition-delay: 0.125s;
|
||||
transition-delay: 0.125s;
|
||||
}
|
||||
|
||||
#main>.inner> :nth-child(3) {
|
||||
-moz-transition-delay: 0.25s;
|
||||
-webkit-transition-delay: 0.25s;
|
||||
-ms-transition-delay: 0.25s;
|
||||
transition-delay: 0.25s;
|
||||
}
|
||||
|
||||
#main>.inner> :nth-child(4) {
|
||||
-moz-transition-delay: 0.375s;
|
||||
-webkit-transition-delay: 0.375s;
|
||||
-ms-transition-delay: 0.375s;
|
||||
transition-delay: 0.375s;
|
||||
}
|
||||
|
||||
#main>.inner> :nth-child(5) {
|
||||
-moz-transition-delay: 0.5s;
|
||||
-webkit-transition-delay: 0.5s;
|
||||
-ms-transition-delay: 0.5s;
|
||||
transition-delay: 0.5s;
|
||||
}
|
||||
|
||||
#main>.inner> :nth-child(6) {
|
||||
-moz-transition-delay: 0.625s;
|
||||
-webkit-transition-delay: 0.625s;
|
||||
-ms-transition-delay: 0.625s;
|
||||
transition-delay: 0.625s;
|
||||
}
|
||||
|
||||
.image {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.image a,
|
||||
.image span {
|
||||
position: relative;
|
||||
max-width: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.image a img,
|
||||
.image span img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.image img {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.image.full img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.image.full:first-child img {
|
||||
border-top-left-radius: inherit;
|
||||
border-top-right-radius: inherit;
|
||||
}
|
||||
|
||||
.image.full:last-child img {
|
||||
border-bottom-left-radius: inherit;
|
||||
border-bottom-right-radius: inherit;
|
||||
}
|
||||
|
||||
.image.full a,
|
||||
.image.full span {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#image01 img {
|
||||
width: 9rem;
|
||||
}
|
||||
|
||||
h1 br+br,
|
||||
h2 br+br,
|
||||
h3 br+br,
|
||||
p br+br {
|
||||
display: block;
|
||||
content: ' ';
|
||||
margin-top: 0.825rem;
|
||||
}
|
||||
|
||||
h1 .li,
|
||||
h2 .li,
|
||||
h3 .li,
|
||||
p .li {
|
||||
display: list-item;
|
||||
padding-left: 0.5em;
|
||||
margin: 0.75em 0 0 1em;
|
||||
}
|
||||
|
||||
#title br+br {
|
||||
margin-top: 0.9rem;
|
||||
}
|
||||
|
||||
#title {
|
||||
color: #FFFFFF;
|
||||
letter-spacing: -0.15rem;
|
||||
line-height: 1.5;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
#text01 {
|
||||
font-size: 1.125em;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
p {
|
||||
color: rgba(255, 255, 255, 0.71);
|
||||
font-family: 'Source Sans Pro';
|
||||
letter-spacing: -0.025rem;
|
||||
width: 100%;
|
||||
font-size: 4.25em;
|
||||
line-height: 1.375;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
hr {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
height: 2.125rem;
|
||||
line-height: 2.125rem;
|
||||
}
|
||||
|
||||
hr:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 100%;
|
||||
background-color: rgba(255, 255, 255, 0.141);
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.icons {
|
||||
cursor: default;
|
||||
padding: 0;
|
||||
letter-spacing: 0;
|
||||
font-size: 1.5em;
|
||||
width: calc(100% + 1.125rem);
|
||||
margin-left: -0.5625rem;
|
||||
}
|
||||
|
||||
.icons li {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0.5625rem;
|
||||
}
|
||||
|
||||
.icons li a {
|
||||
display: -moz-flex;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flex;
|
||||
display: flex;
|
||||
-moz-align-items: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-align-items: center;
|
||||
align-items: center;
|
||||
-moz-justify-content: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-justify-content: center;
|
||||
justify-content: center;
|
||||
border-radius: 100%;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
}
|
||||
|
||||
.icons li a svg {
|
||||
display: block;
|
||||
-moz-transition: fill 0.25s ease;
|
||||
-webkit-transition: fill 0.25s ease;
|
||||
-ms-transition: fill 0.25s ease;
|
||||
transition: fill 0.25s ease;
|
||||
}
|
||||
|
||||
.icons li a .label {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#icons01 li a svg {
|
||||
width: 60%;
|
||||
height: 60%;
|
||||
}
|
||||
|
||||
#icons01 .n01 svg {
|
||||
fill: rgba(255, 255, 255, 0.561);
|
||||
}
|
||||
|
||||
#icons01 .n01 {
|
||||
border: solid 1px rgba(255, 255, 255, 0.141);
|
||||
}
|
||||
|
||||
#icons01 .n01:hover {
|
||||
border-color: #FFFFFF;
|
||||
}
|
||||
|
||||
#icons01 .n01:hover svg {
|
||||
fill: #FFFFFF;
|
||||
}
|
||||
|
||||
#icons01 .n02 svg {
|
||||
fill: rgba(255, 255, 255, 0.561);
|
||||
}
|
||||
|
||||
#icons01 .n02 {
|
||||
border: solid 1px rgba(255, 255, 255, 0.141);
|
||||
}
|
||||
|
||||
#icons01 .n02:hover {
|
||||
border-color: #FFFFFF;
|
||||
}
|
||||
|
||||
#icons01 .n02:hover svg {
|
||||
fill: #FFFFFF;
|
||||
}
|
||||
|
||||
@media (max-width: 1680px) {
|
||||
html {
|
||||
font-size: 13pt;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1280px) {
|
||||
html {
|
||||
font-size: 13pt;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
html {
|
||||
font-size: 11pt;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 736px) {
|
||||
html {
|
||||
font-size: 11pt;
|
||||
}
|
||||
#main {
|
||||
text-align: center;
|
||||
}
|
||||
#main h1,
|
||||
#main h2,
|
||||
#main h3,
|
||||
#main p {
|
||||
text-align: inherit;
|
||||
}
|
||||
#main>.inner {
|
||||
padding: 1.25rem 1rem;
|
||||
}
|
||||
#main>.inner>.full {
|
||||
margin-left: calc(-1rem);
|
||||
width: calc(100% + 2rem + 0.4725px);
|
||||
max-width: calc(100% + 2rem + 0.4725px);
|
||||
}
|
||||
#main>.inner>.full:first-child {
|
||||
margin-top: -1.25rem !important;
|
||||
}
|
||||
#main>.inner>.full:last-child {
|
||||
margin-bottom: -1.25rem !important;
|
||||
}
|
||||
#main>.inner>.full.screen {
|
||||
margin-left: -50vw;
|
||||
}
|
||||
#image01 img {
|
||||
width: 9rem;
|
||||
}
|
||||
#title {
|
||||
font-size: 3.5em;
|
||||
}
|
||||
#divider01 {
|
||||
height: 2rem;
|
||||
line-height: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 360px) {
|
||||
#main>.inner {
|
||||
padding: 0.9375rem 0.75rem;
|
||||
}
|
||||
#main>.inner>.full {
|
||||
margin-left: calc(-0.75rem);
|
||||
width: calc(100% + 1.5rem + 0.4725px);
|
||||
max-width: calc(100% + 1.5rem + 0.4725px);
|
||||
}
|
||||
#main>.inner>.full:first-child {
|
||||
margin-top: -0.9375rem !important;
|
||||
}
|
||||
#main>.inner>.full:last-child {
|
||||
margin-bottom: -0.9375rem !important;
|
||||
}
|
||||
#main>.inner>.full.screen {
|
||||
margin-left: -50vw;
|
||||
}
|
||||
#icons01 {
|
||||
width: calc(100% + 0.84375rem);
|
||||
margin-left: -0.421875rem;
|
||||
}
|
||||
#icons01 li {
|
||||
margin: 0.421875rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<noscript>
|
||||
<style>
|
||||
body {
|
||||
overflow: auto !important;
|
||||
}
|
||||
|
||||
#main {
|
||||
opacity: 1.0 !important;
|
||||
-moz-transform: none !important;
|
||||
-webkit-transform: none !important;
|
||||
-ms-transform: none !important;
|
||||
transform: none !important;
|
||||
-moz-transition: none !important;
|
||||
-webkit-transition: none !important;
|
||||
-ms-transition: none !important;
|
||||
transition: none !important;
|
||||
-moz-filter: none !important;
|
||||
-webkit-filter: none !important;
|
||||
-ms-filter: none !important;
|
||||
filter: none !important;
|
||||
}
|
||||
|
||||
#main>.inner>* {
|
||||
opacity: 1.0 !important;
|
||||
-moz-transform: none !important;
|
||||
-webkit-transform: none !important;
|
||||
-ms-transform: none !important;
|
||||
transform: none !important;
|
||||
-moz-transition: none !important;
|
||||
-webkit-transition: none !important;
|
||||
-ms-transition: none !important;
|
||||
transition: none !important;
|
||||
-moz-filter: none !important;
|
||||
-webkit-filter: none !important;
|
||||
-ms-filter: none !important;
|
||||
filter: none !important;
|
||||
}
|
||||
</style>
|
||||
</noscript>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 40 40" display="none"
|
||||
width="0" height="0">
|
||||
<symbol id="icon-907" viewBox="0 0 40 40">
|
||||
<path d="M36,20.3c0,3.5-1,6.6-3.1,9.4c-2,2.8-4.7,4.7-7.9,5.8c-0.4,0.1-0.6,0-0.8-0.1c-0.2-0.2-0.3-0.4-0.3-0.6v-4.4 c0-1.3-0.4-2.3-1.1-3c0.8-0.1,1.5-0.2,2.1-0.4c0.6-0.2,1.3-0.4,2-0.8c0.7-0.4,1.2-0.8,1.7-1.4c0.5-0.5,0.8-1.3,1.1-2.2 s0.4-2,0.4-3.1c0-1.7-0.5-3.1-1.6-4.3c0.5-1.3,0.5-2.7-0.2-4.2c-0.4-0.1-1,0-1.7,0.2c-0.7,0.3-1.4,0.6-1.9,0.9L24,12.5 c-1.3-0.4-2.6-0.5-4-0.5s-2.7,0.2-4,0.5c-0.2-0.2-0.5-0.3-0.9-0.6c-0.4-0.2-0.9-0.5-1.7-0.8c-0.8-0.3-1.4-0.4-1.8-0.3 c-0.6,1.6-0.7,3-0.1,4.2c-1.1,1.2-1.6,2.6-1.6,4.3c0,1.2,0.1,2.2,0.4,3.1s0.6,1.6,1.1,2.2s1,1,1.7,1.4c0.7,0.4,1.3,0.6,2,0.8 c0.6,0.2,1.3,0.3,2.1,0.4c-0.6,0.5-0.9,1.2-1,2.1c-0.3,0.1-0.6,0.2-0.9,0.3c-0.3,0.1-0.7,0.1-1.2,0.1c-0.5,0-0.9-0.1-1.4-0.4 c-0.5-0.3-0.8-0.7-1.2-1.3c-0.3-0.4-0.6-0.8-1-1.1c-0.4-0.3-0.8-0.4-1-0.5L9,26.5c-0.3,0-0.5,0-0.6,0.1c-0.1,0.1-0.1,0.1-0.1,0.2 c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0.2,0.3,0.2l0.1,0.1c0.3,0.1,0.6,0.4,0.9,0.8s0.5,0.7,0.7,1.1l0.2,0.5c0.2,0.5,0.5,1,0.9,1.3 c0.4,0.3,0.9,0.5,1.4,0.6c0.5,0.1,1,0.1,1.4,0.1c0.5,0,0.9,0,1.2-0.1l0.5-0.1c0,0.5,0,1.1,0,1.9c0,0.7,0,1.1,0,1.1 c0,0.2-0.1,0.5-0.3,0.6c-0.2,0.2-0.5,0.2-0.8,0.1c-3.2-1.1-5.8-3-7.9-5.8S4,23.8,4,20.3c0-2.9,0.7-5.6,2.1-8S9.5,7.8,12,6.4 s5.1-2.1,8-2.1s5.6,0.7,8,2.1s4.4,3.4,5.8,5.8S36,17.4,36,20.3L36,20.3z"
|
||||
/>
|
||||
</symbol>
|
||||
<symbol id="icon-905" viewBox="0 0 40 40">
|
||||
<path d="M36.3,10.2c-1,1.3-2.1,2.5-3.4,3.5c0,0.2,0,0.4,0,1c0,1.7-0.2,3.6-0.9,5.3c-0.6,1.7-1.2,3.5-2.4,5.1 c-1.1,1.5-2.3,3.1-3.7,4.3c-1.4,1.2-3.3,2.3-5.3,3c-2.1,0.8-4.2,1.2-6.6,1.2c-3.6,0-7-1-10.2-3c0.4,0,1.1,0.1,1.5,0.1 c3.1,0,5.9-1,8.2-2.9c-1.4,0-2.7-0.4-3.8-1.3c-1.2-1-1.9-2-2.2-3.3c0.4,0.1,1,0.1,1.2,0.1c0.6,0,1.2-0.1,1.7-0.2 c-1.4-0.3-2.7-1.1-3.7-2.3s-1.4-2.6-1.4-4.2v-0.1c1,0.6,2,0.9,3,0.9c-1-0.6-1.5-1.3-2.2-2.4c-0.6-1-0.9-2.1-0.9-3.3s0.3-2.3,1-3.4 c1.5,2.1,3.6,3.6,6,4.9s4.9,2,7.6,2.1c-0.1-0.6-0.1-1.1-0.1-1.4c0-1.8,0.8-3.5,2-4.7c1.2-1.2,2.9-2,4.7-2c2,0,3.6,0.8,4.8,2.1 c1.4-0.3,2.9-0.9,4.2-1.5c-0.4,1.5-1.4,2.7-2.9,3.6C33.8,11.2,35.1,10.9,36.3,10.2L36.3,10.2z"
|
||||
/>
|
||||
</symbol>
|
||||
</svg>
|
||||
<div id="wrapper">
|
||||
<div id="main">
|
||||
<div class="inner">
|
||||
<div class="image" id="image01"><img src="assets/logo.png" alt="" /></div>
|
||||
<h1 id="title">azura<strong>cast</strong></h1>
|
||||
<p id="text01"><span>a turnkey, self-hosted, <strong>free and open source</strong></span><br /> <span>web radio management suite</span></p>
|
||||
<hr
|
||||
id="divider01" />
|
||||
<ul class="icons" id="icons01">
|
||||
<li>
|
||||
<a class="n01" href="https://github.com/AzuraCast/AzuraCast">
|
||||
<svg>
|
||||
<use xlink:href="#icon-907"></use>
|
||||
</svg><span class="label">GitHub</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="n02" href="http://twitter.com/AzuraCast">
|
||||
<svg>
|
||||
<use xlink:href="#icon-905"></use>
|
||||
</svg><span class="label">Twitter</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|