Files
AudioBookRequest/docs/tutorials/_print/index.html
2025-08-22 13:02:33 +00:00

579 lines
39 KiB
HTML

<!doctype html>
<html itemscope itemtype="http://schema.org/WebPage" lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="canonical" type="text/html" href="https://markbeep.github.io/AudioBookRequest/docs/tutorials/">
<link rel="alternate" type="application/rss&#43;xml" href="https://markbeep.github.io/AudioBookRequest/docs/tutorials/index.xml">
<meta name="robots" content="noindex, nofollow">
<link rel="shortcut icon" href="/AudioBookRequest/favicons/favicon.ico" >
<link rel="apple-touch-icon" href="/AudioBookRequest/favicons/apple-touch-icon-180x180.png" sizes="180x180">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-36x36.png" sizes="36x36">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-48x48.png" sizes="48x48">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-72x72.png" sizes="72x72">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-144x144.png" sizes="144x144">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-192x192.png" sizes="192x192">
<title>Tutorials | AudioBookRequest Docs</title>
<meta name="description" content="Tutorials about how to setup certain features with more detail.">
<meta property="og:url" content="https://markbeep.github.io/AudioBookRequest/docs/tutorials/">
<meta property="og:site_name" content="AudioBookRequest Docs">
<meta property="og:title" content="Tutorials">
<meta property="og:description" content="Tutorials about how to setup certain features with more detail.">
<meta property="og:locale" content="en">
<meta property="og:type" content="website">
<meta itemprop="name" content="Tutorials">
<meta itemprop="description" content="Tutorials about how to setup certain features with more detail.">
<meta itemprop="datePublished" content="2025-06-09T13:47:04+02:00">
<meta itemprop="dateModified" content="2025-08-22T15:01:53+02:00">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Tutorials">
<meta name="twitter:description" content="Tutorials about how to setup certain features with more detail.">
<link href="/AudioBookRequest/scss/main.css" rel="stylesheet">
<script
src="https://code.jquery.com/jquery-3.7.1.min.js"
integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g=="
crossorigin="anonymous"></script>
</head>
<body class="td-section">
<header>
<nav class="td-navbar js-navbar-scroll" data-bs-theme="dark">
<div class="container-fluid flex-column flex-md-row">
<a class="navbar-brand" href="/AudioBookRequest/"><span class="navbar-brand__logo navbar-logo"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500"><g><path style="fill:#fff" d="M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z"/><g><g><g><path style="fill:#767676" d="M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z"/></g></g></g><g><g><path style="fill:#5b7fc0" d="M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z"/><path style="opacity:.3;fill:#fff" d="M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z"/><g><defs><path id="SVGID_1_" d="M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z"/></defs><clipPath id="SVGID_2_"><use xlink:href="#SVGID_1_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_2_);fill:#fff" d="M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z"/><path style="opacity:.13;clip-path:url(#SVGID_2_);fill:#020202" d="M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z"/></g><g><defs><path id="SVGID_3_" d="M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z"/></defs><clipPath id="SVGID_4_"><use xlink:href="#SVGID_3_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_4_);fill:#5b7fc0" d="M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z"/></g></g><rect x="198.8952" y="225.1043" style="fill:#5b7fc0" width="122.6266" height="13.8671"/></g><g><path style="fill:#d95140" d="M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zm7.993 21.8577c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z"/><path style="opacity:.3;fill:#fff" d="M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zm7.9941 21.8613c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z"/><g><defs><path id="SVGID_5_" d="M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z"/></defs><clipPath id="SVGID_6_"><use xlink:href="#SVGID_5_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_6_);fill:#fff" d="M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z"/><path style="opacity:.13;clip-path:url(#SVGID_6_);fill:#020202" d="M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z"/></g><g><defs><path id="SVGID_7_" d="M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zm7.9941 21.8613c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z"/></defs><clipPath id="SVGID_8_"><use xlink:href="#SVGID_7_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_8_);fill:#d95140" d="M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z"/></g><rect x="198.8952" y="170.69" style="fill:#d95140" width="122.6266" height="13.8671"/></g><g><g><path style="fill:#56a55c" d="M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z"/><path style="opacity:.3;fill:#fff" d="M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z"/><g><defs><path id="SVGID_9_" d="M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z"/></defs><clipPath id="SVGID_10_"><use xlink:href="#SVGID_9_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_10_);fill:#fff" d="M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z"/><path style="opacity:.13;clip-path:url(#SVGID_10_);fill:#020202" d="M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z"/></g><g><defs><path id="SVGID_11_" d="M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z"/></defs><clipPath id="SVGID_12_"><use xlink:href="#SVGID_11_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_12_);fill:#56a55c" d="M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z"/></g></g><rect x="199.3456" y="279.5436" style="fill:#56a55c" width="122.6266" height="13.8671"/></g><g><g><path style="fill:#f1bc42" d="M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z"/><path style="opacity:.3;fill:#fff" d="M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z"/><g><defs><path id="SVGID_13_" d="M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z"/></defs><clipPath id="SVGID_14_"><use xlink:href="#SVGID_13_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_14_);fill:#fff" d="M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z"/><path style="opacity:.13;clip-path:url(#SVGID_14_);fill:#020202" d="M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z"/></g><g><defs><path id="SVGID_15_" d="M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z"/></defs><clipPath id="SVGID_16_"><use xlink:href="#SVGID_15_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_16_);fill:#f1bc42" d="M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z"/></g></g><rect x="198.8952" y="333.6497" style="fill:#f1bc42" width="122.6266" height="13.8671"/></g></g></svg></span><span class="navbar-brand__name">AudioBookRequest Docs</span></a>
<div class="td-navbar-nav-scroll ms-md-auto" id="main_navbar">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" href="/AudioBookRequest/docs/"><span>Documentation</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="/AudioBookRequest/community/"><span>Community</span></a>
</li>
<li class="td-light-dark-menu nav-item dropdown">
<svg xmlns="http://www.w3.org/2000/svg" class="d-none">
<symbol id="check2" viewBox="0 0 16 16">
<path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/>
</symbol>
<symbol id="circle-half" viewBox="0 0 16 16">
<path d="M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/>
</symbol>
<symbol id="moon-stars-fill" viewBox="0 0 16 16">
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z"/>
<path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z"/>
</symbol>
<symbol id="sun-fill" viewBox="0 0 16 16">
<path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/>
</symbol>
</svg>
<button class="btn btn-link nav-link dropdown-toggle d-flex align-items-center"
id="bd-theme"
type="button"
aria-expanded="false"
data-bs-toggle="dropdown"
data-bs-display="static"
aria-label="Toggle theme (auto)">
<svg class="bi my-1 theme-icon-active"><use href="#circle-half"></use></svg>
</button>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
<li>
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="light" aria-pressed="false">
<svg class="bi me-2 opacity-50"><use href="#sun-fill"></use></svg>
Light
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
</button>
</li>
<li>
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="dark" aria-pressed="false">
<svg class="bi me-2 opacity-50"><use href="#moon-stars-fill"></use></svg>
Dark
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
</button>
</li>
<li>
<button type="button" class="dropdown-item d-flex align-items-center active" data-bs-theme-value="auto" aria-pressed="true">
<svg class="bi me-2 opacity-50"><use href="#circle-half"></use></svg>
Auto
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
</button>
</li>
</ul>
</li>
</ul>
</div>
<div class="d-none d-lg-block">
<div class="td-search">
<div class="td-search__icon"></div>
<input type="search" class="td-search__input form-control td-search-input" placeholder="Search this site…" aria-label="Search this site…" autocomplete="off">
</div>
</div>
</div>
</nav>
</header>
<div class="container-fluid td-outer">
<div class="td-main">
<div class="row flex-xl-nowrap">
<main class="col-12 col-md-9 col-xl-8 ps-md-5" role="main">
<div class="td-content">
<div class="pageinfo pageinfo-primary d-print-none">
<p>
This is the multi-page printable view of this section.
<a href="#" onclick="print();return false;">Click here to print</a>.
</p><p>
<a href="/AudioBookRequest/docs/tutorials/">Return to the regular view of this page</a>.
</p>
</div>
<h1 class="title">Tutorials</h1>
<div class="lead">Tutorials about how to setup certain features with more detail.</div>
<ul>
<li>1: <a href="#pg-e6c24feb23bd7b96e22e8ed3e8a6d652">Notifications</a></li>
<ul>
</ul>
<li>2: <a href="#pg-eb0b8b2f51c3e22c9b2de4770486ca52">API</a></li>
<ul>
<li>2.1: <a href="#pg-3e4cf7e150c25ad9c46b6de4e314451e">Indexers</a></li>
</ul>
<li>3: <a href="#pg-70cac3f21ec9ace937ed903becc9f4ca">OpenID Connect</a></li>
<ul>
</ul>
</ul>
<div class="content">
</div>
</div>
<div class="td-content" style="">
<h1 id="pg-e6c24feb23bd7b96e22e8ed3e8a6d652">1 - Notifications</h1>
<div class="lead">How to send notifications.</div>
<p>Notifications allow you to send a POST request/webhook wherever you want. ABR
works with all major notification systems like apprise, gotify, ntfy, and
discord.</p>
<p>Here are a few examples for how the notifications body looks for different
notification systems:</p>
<h2 id="apprise">Apprise<a class="td-heading-self-link" href="#apprise" aria-label="Heading self-link"></a></h2>
<p>For apprise you&rsquo;ll want to have the title in <code>&quot;title&quot;</code> and the message body in
<code>&quot;body&quot;</code>.</p>
<p><img src="/AudioBookRequest/docs/tutorials/notifications/apprise.png" alt="Apprise"></p>
<h2 id="gotify">Gotify<a class="td-heading-self-link" href="#gotify" aria-label="Heading self-link"></a></h2>
<p>For gotify you&rsquo;ll want to have the title in <code>&quot;title&quot;</code> and the message body in
<code>&quot;message&quot;</code>. Gotify also requires you to pass in your authorization token in the
header.</p>
<p><img src="/AudioBookRequest/docs/tutorials/notifications/gotify.png" alt="Gotify"></p>
<h2 id="ntfy">Ntfy<a class="td-heading-self-link" href="#ntfy" aria-label="Heading self-link"></a></h2>
<p>Ntfy does not differentiate between title and body. You&rsquo;ll want to select the
<code>text</code> body type and then add your message.</p>
<p><img src="/AudioBookRequest/docs/tutorials/notifications/ntfy.png" alt="ntfy"></p>
<h2 id="discord">Discord<a class="td-heading-self-link" href="#discord" aria-label="Heading self-link"></a></h2>
<p>You can send notifications to discord by using webhooks. Discord allows you to
send plain messages or create bigger messages with embeds.</p>
<p>To make better looking webhook messages you can also use a message builder like
one of the following pages:</p>
<ul>
<li><a href="https://message.style/app/editor">https://message.style/app/editor</a> (Copy the JSON code)</li>
<li><a href="https://discohook.app">https://discohook.app</a> (<code>Options&gt;JSON Editor</code> to export)</li>
</ul>
<p><img src="/AudioBookRequest/docs/tutorials/notifications/discord.png" alt="Discord"></p>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-eb0b8b2f51c3e22c9b2de4770486ca52">2 - API</h1>
<div class="lead">How to use the AudioBookRequest API</div>
<h2 id="overview">Overview<a class="td-heading-self-link" href="#overview" aria-label="Heading self-link"></a></h2>
<p>AudioBookRequest provides a RESTful API for a select few endpoints.</p>
<p>The API uses Bearer token authentication with API keys that can be generated
through the web interface.</p>
<h2 id="how-to-create-an-api-key">How to Create an API Key<a class="td-heading-self-link" href="#how-to-create-an-api-key" aria-label="Heading self-link"></a></h2>
<p>Follow these steps to create an API key for accessing the AudioBookRequest API:</p>
<ol>
<li>In the Account settings page, look for the <strong>API Keys</strong> section</li>
<li>Enter a unique name for your API key</li>
<li>Click on <strong>Create API Key</strong></li>
<li><strong>Important</strong>: The API key will only be displayed once for security reasons</li>
<li>Copy the generated API key immediately and store it in a secure location</li>
<li>If you lose the key, you&rsquo;ll need to generate a new one</li>
</ol>
<h3 id="use-your-api-key">Use Your API Key<a class="td-heading-self-link" href="#use-your-api-key" aria-label="Heading self-link"></a></h3>
<p>Include your API key in the Authorization header of your API requests:</p>
<pre tabindex="0"><code>Authorization: Bearer &lt;your-api-key&gt;
</code></pre><p><strong>Example using cURL:</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -H <span style="color:#63c381">&#34;Authorization: Bearer &lt;your-api-key-here&gt;&#34;</span> https://abr.example.com/api/users/me
</span></span></code></pre></div><h2 id="api-documentation">API Documentation<a class="td-heading-self-link" href="#api-documentation" aria-label="Heading self-link"></a></h2>
<p>For a SwaggerUI documentation with interactive testing capabilities:</p>
<ol>
<li>Set the environment variable <code>ABR_APP__OPENAPI_ENABLED=true</code></li>
<li>Head to <code>&lt;your-domain&gt;/docs</code>.</li>
</ol>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-3e4cf7e150c25ad9c46b6de4e314451e">2.1 - Indexers</h1>
<div class="lead">Using the API to access/update indexers</div>
<p>There are two main endpoints to work with indexers:</p>
<ul>
<li>A <code>PATCH</code> to update indexer settings.</li>
<li>A <code>GET</code> to get all the available configuration settings for the indexers.</li>
</ul>
<p>Head to the main <a href="/AudioBookRequest/docs/tutorials/api/">API Docs</a> to see how you can access the SwaggerUI
and more easily test the endpoints.</p>
<h2 id="getting-the-indexer-configurations">Getting the Indexer Configurations<a class="td-heading-self-link" href="#getting-the-indexer-configurations" aria-label="Heading self-link"></a></h2>
<p>To figure out what values you need to adjust, <code>GET</code> the endpoint
<code>/api/indexers/configurations</code>.</p>
<p>This will give you something along the lines of this:</p>
<div class="highlight"><pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;MyAnonamouse&#34;</span>: [
</span></span><span style="display:flex;"><span> {
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;name&#34;</span>: <span style="color:#63c381">&#34;mam_session_id&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;description&#34;</span>: <span style="color:#b756ff;font-weight:bold">null</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;default&#34;</span>: <span style="color:#b756ff;font-weight:bold">null</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;required&#34;</span>: <span style="color:#b756ff;font-weight:bold">true</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;type&#34;</span>: <span style="color:#63c381">&#34;str&#34;</span>
</span></span><span style="display:flex;"><span> },
</span></span><span style="display:flex;"><span> {
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;name&#34;</span>: <span style="color:#63c381">&#34;mam_active&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;description&#34;</span>: <span style="color:#b756ff;font-weight:bold">null</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;default&#34;</span>: <span style="color:#63c381">&#34;True&#34;</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;required&#34;</span>: <span style="color:#b756ff;font-weight:bold">false</span>,
</span></span><span style="display:flex;"><span> <span style="color:#e06c75">&#34;type&#34;</span>: <span style="color:#63c381">&#34;bool&#34;</span>
</span></span><span style="display:flex;"><span> }
</span></span><span style="display:flex;"><span> ]
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>This gives you the full information about what values can be adjusted.</p>
<h2 id="updating-indexer-settings">Updating Indexer Settings<a class="td-heading-self-link" href="#updating-indexer-settings" aria-label="Heading self-link"></a></h2>
<p>You can update indexer settings by sending a <code>PATCH</code> request to
<code>/api/indexers/{indexer name}</code>. The name is <strong>case-sensitive</strong>. The body has to
be a JSON object with key-value pairs of the values you want to update.</p>
<p>Here is an example using cURL: as</p>
<div class="highlight"><pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -X <span style="color:#98c379">&#39;PATCH&#39;</span> <span style="color:#d26464;font-weight:bold">\
</span></span></span><span style="display:flex;"><span><span style="color:#d26464;font-weight:bold"></span> <span style="color:#98c379">&#39;https://abr.example.com/api/indexers/MyAnonamouse&#39;</span> <span style="color:#d26464;font-weight:bold">\
</span></span></span><span style="display:flex;"><span><span style="color:#d26464;font-weight:bold"></span> -H <span style="color:#98c379">&#39;accept: application/json&#39;</span> <span style="color:#d26464;font-weight:bold">\
</span></span></span><span style="display:flex;"><span><span style="color:#d26464;font-weight:bold"></span> -H <span style="color:#98c379">&#39;Authorization: Bearer MaEqMYAGY3qvXxtje6-YDxcs4damlyRaKzTC8itG2b8&#39;</span> <span style="color:#d26464;font-weight:bold">\
</span></span></span><span style="display:flex;"><span><span style="color:#d26464;font-weight:bold"></span> -d <span style="color:#98c379">&#39;{&#34;mam_session_id&#34;:&#34;bXDv1tC1d2MVvOypbFy8Q4Q-rz6q-bKwdqaSZzm85Dg&#34;}&#39;</span>
</span></span></code></pre></div>
</div>
<div class="td-content" style="page-break-before: always">
<h1 id="pg-70cac3f21ec9ace937ed903becc9f4ca">3 - OpenID Connect</h1>
<div class="lead">Setting up OIDC login</div>
<p>OIDC allows you to use the same login across multiple apps. This guide will show
you how to set up OIDC with Authentik, but the concepts are the same or similar
for other providers.</p>
<h2 id="setup-a-provider-on-authentik">Setup a provider on Authentik<a class="td-heading-self-link" href="#setup-a-provider-on-authentik" aria-label="Heading self-link"></a></h2>
<ol>
<li>
<p>You want to first create an application on Authentik. The settings here
don&rsquo;t play a role for AudioBookRequest though.</p>
</li>
<li>
<p>You then want to create an OAuth2/OpenID Provider:</p>
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-oidc.png" alt="Authentik OIDC"></p>
</li>
<li>
<p>Configure the settings as preferred. The important two values are the
<code>Client ID</code> and <code>Client Secret</code>. Take note of those. You should also set the
redirect URL that the OIDC provider will redirect you to after a succesful
login. This has to be the domain of your ABR instance with <code>/auth/oidc</code>
appended.</p>
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-provider.png" alt="Authentik Provider"></p>
<div class="alert alert-warning" role="alert">
<h4 class="alert-heading">Warning</h4>
Make sure you correctly set
<code>http</code> or <code>https</code> in the redirect URL. This depends on how you access
AudioBookRequest.
</div>
</li>
<li>
<p>Set the scopes that ABR can get access to. You should always allow for the
<code>openid</code> scope. Any other scopes are optional. You&rsquo;ll have to check with
your OIDC provider to see what what scopes are required to get a
name/username and groups. &ldquo;Subject mode&rdquo; is a unique identifier for the
user. This can be used as the username on ABR.</p>
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-scopes.png" alt="Authentik Scopes"></p>
</li>
<li>
<p>Assign your newly created provider to the ABR application.</p>
</li>
</ol>
<h2 id="setup-settings-in-abr">Setup settings in ABR<a class="td-heading-self-link" href="#setup-settings-in-abr" aria-label="Heading self-link"></a></h2>
<ol>
<li>On AudioBookRequest, head to <code>Settings&gt;Security</code> and set the &ldquo;Login Type&rdquo; to
&ldquo;OpenID Connect&rdquo;.</li>
<li>Paste the &ldquo;Client ID&rdquo; and &ldquo;Client Secret&rdquo; into the respective fields.</li>
<li>Your &ldquo;OIDC Configuration Endpoint&rdquo; depends on the OIDC provider you use. For
Authentik, it&rsquo;s usually along the lines of
<a href="https://domain.com/application/o/audiobookrequest/.well-known/openid-configuration">https://domain.com/application/o/audiobookrequest/.well-known/openid-configuration</a>.
You&rsquo;ll have to find that for your own provider. Visiting the url should give
you a JSON-formatted object with different endpoints and details given.</li>
<li>The &ldquo;OIDC Scopes&rdquo; are the ones defined above separated by a space. <code>openid</code>
is always required. Any other scopes like <code>email</code> or <code>group</code> are only
required if you intend to use the email for the username or respectively
extract the group of the user.</li>
<li>&ldquo;OIDC Username Claim&rdquo; <strong>has to be a unique identifier</strong> which is used as the
username for the user. <code>sub</code> is always available, but you might prefere to
use <code>email</code> or <code>username</code> (with the correctly added scope).</li>
<li>Depending on what you used above for the redirect URL, set <code>http</code> or <code>https</code>.
<div class="alert alert-warning" role="alert">
<h4 class="alert-heading">Warning</h4>
<code>http/s</code> has to match-up with
what protocol your redirect-url uses. Providers <em>will</em> reject logins if this
does not match up.
</div>
</li>
<li><em>Optional</em>: The &ldquo;OIDC Logout URL&rdquo; is where you&rsquo;re redirected if you select to
log out in ABR. OIDC Providers allow you to invalidate the session on this
URL. While this value is optional, not adding it might break logging out
slightly because the session can&rsquo;t properly be invalidated.</li>
</ol>
<h2 id="groups">Groups<a class="td-heading-self-link" href="#groups" aria-label="Heading self-link"></a></h2>
<p>&ldquo;OIDC Group Claim&rdquo; is optional, but allows you to handle the role distribution
of users in your OIDC provider instead of in ABR. The exact claim that sends
along the information depends on your OIDC provider. The OIDC provider can
provide a single string or list of strings.</p>
<p>The groups have to be named exactly one of <code>untrusted</code>, <code>trusted</code>, or <code>admin</code>.
The letter case does not matter.</p>
<div class="alert alert-primary" role="alert">
For Authentik, the group claim name is <code>groups</code> and requires the
<code>profile</code> scope. If you assign a user to a group named <code>trusted</code>, that user will
receive the <code>Trusted</code> role once they login to AudioBookRequest.
</div>
</div>
</main>
</div>
</div>
<footer class="td-footer row d-print-none">
<div class="container-fluid">
<div class="row mx-md-2">
<div class="td-footer__left col-6 col-sm-4 order-sm-1">
<ul class="td-footer__links-list">
<li class="td-footer__links-item" data-bs-toggle="tooltip" title="Discord" aria-label="Discord">
<a target="_blank" rel="noopener" href="https://discord.gg/SsFRXWMg7s" aria-label="Discord">
<i class="fab fa-discord"></i>
</a>
</li>
</ul>
</div><div class="td-footer__right col-6 col-sm-4 order-sm-3">
<ul class="td-footer__links-list">
<li class="td-footer__links-item" data-bs-toggle="tooltip" title="GitHub" aria-label="GitHub">
<a target="_blank" rel="noopener" href="https://github.com/google/docsy" aria-label="GitHub">
<i class="fab fa-github"></i>
</a>
</li>
</ul>
</div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2">
<span class="td-footer__copyright">&copy;
2025&ndash;2025
<span class="td-footer__authors">markbeep | <a href="https://creativecommons.org/licenses/by/4.0">CC BY 4.0</a> |</span></span><span class="td-footer__all_rights_reserved">All Rights Reserved</span>
</div>
</div>
</div>
</footer>
</div>
<script src="/AudioBookRequest/js/main.js"></script>
<script defer src="/AudioBookRequest/js/click-to-copy.js" crossorigin="anonymous"></script>
<script src='/AudioBookRequest/js/tabpane-persist.js'></script>
</body>
</html>