added sqlite database funtionality and jinja templating
parent
795a25451b
commit
9f70858aca
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 7.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
|
@ -6,20 +6,20 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,700,900">
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,700,900">
|
||||||
<link rel="stylesheet" href="fonts/icomoon/style.css">
|
<link rel="stylesheet" href="../../fonts/icomoon/style.css">
|
||||||
|
|
||||||
<link rel="stylesheet" href="css/bootstrap.min.css">
|
<link rel="stylesheet" href="../../css/bootstrap.min.css">
|
||||||
<link rel="stylesheet" href="css/magnific-popup.css">
|
<link rel="stylesheet" href="../../css/magnific-popup.css">
|
||||||
<link rel="stylesheet" href="css/jquery-ui.css">
|
<link rel="stylesheet" href="../../css/jquery-ui.css">
|
||||||
<link rel="stylesheet" href="css/owl.carousel.min.css">
|
<link rel="stylesheet" href="../../css/owl.carousel.min.css">
|
||||||
<link rel="stylesheet" href="css/owl.theme.default.min.css">
|
<link rel="stylesheet" href="../../css/owl.theme.default.min.css">
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mediaelement@4.2.7/build/mediaelementplayer.min.css">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mediaelement@4.2.7/build/mediaelementplayer.min.css">
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="css/aos.css">
|
<link rel="stylesheet" href="../../css/aos.css">
|
||||||
|
|
||||||
<link rel="stylesheet" href="css/style.css">
|
<link rel="stylesheet" href="../../css/style.css">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -105,7 +105,7 @@
|
||||||
|
|
||||||
<div class="player mb-5">
|
<div class="player mb-5">
|
||||||
<audio id="player2" preload="none" controls style="max-width: 100%">
|
<audio id="player2" preload="none" controls style="max-width: 100%">
|
||||||
<source src="{{episode_audio}}" type="audio/mp3">
|
<source src="show.mp3" type="audio/mp3">
|
||||||
</audio>
|
</audio>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -115,6 +115,18 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{% for result in show_info %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ result[0] }}</td>
|
||||||
|
<td>{{ result[1] }}</td>
|
||||||
|
<td>{{ result[2] }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="site-section bg-light">
|
<div class="site-section bg-light">
|
||||||
|
@ -179,43 +191,7 @@
|
||||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe pariatur reprehenderit vero atque, consequatur id ratione, et non dignissimos culpa? Ut veritatis, quos illum totam quis blanditiis, minima minus odio!</p>
|
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe pariatur reprehenderit vero atque, consequatur id ratione, et non dignissimos culpa? Ut veritatis, quos illum totam quis blanditiis, minima minus odio!</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-5">
|
|
||||||
<h3 class="footer-heading mb-4">Recent Podcast</h3>
|
|
||||||
<div class="block-25">
|
|
||||||
<ul class="list-unstyled">
|
|
||||||
<li class="mb-3">
|
|
||||||
<a href="#" class="d-flex">
|
|
||||||
<figure class="image mr-4">
|
|
||||||
<img src="images/img_1.jpg" alt="" class="img-fluid">
|
|
||||||
</figure>
|
|
||||||
<div class="text">
|
|
||||||
<h3 class="heading font-weight-light">Lorem ipsum dolor sit amet consectetur elit</h3>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="mb-3">
|
|
||||||
<a href="#" class="d-flex">
|
|
||||||
<figure class="image mr-4">
|
|
||||||
<img src="images/img_1.jpg" alt="" class="img-fluid">
|
|
||||||
</figure>
|
|
||||||
<div class="text">
|
|
||||||
<h3 class="heading font-weight-light">Lorem ipsum dolor sit amet consectetur elit</h3>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="mb-3">
|
|
||||||
<a href="#" class="d-flex">
|
|
||||||
<figure class="image mr-4">
|
|
||||||
<img src="images/img_1.jpg" alt="" class="img-fluid">
|
|
||||||
</figure>
|
|
||||||
<div class="text">
|
|
||||||
<h3 class="heading font-weight-light">Lorem ipsum dolor sit amet consectetur elit</h3>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-4 mb-5 mb-lg-0">
|
<div class="col-lg-4 mb-5 mb-lg-0">
|
||||||
|
@ -301,18 +277,18 @@
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="js/jquery-3.3.1.min.js"></script>
|
<script src="../../js/jquery-3.3.1.min.js"></script>
|
||||||
<script src="js/jquery-migrate-3.0.1.min.js"></script>
|
<script src="js/jquery-migrate-3.0.1.min.js"></script>
|
||||||
<script src="js/jquery-ui.js"></script>
|
<script src="../../js/jquery-ui.js"></script>
|
||||||
<script src="js/popper.min.js"></script>
|
<script src="../../js/popper.min.js"></script>
|
||||||
<script src="js/bootstrap.min.js"></script>
|
<script src="../../js/bootstrap.min.js"></script>
|
||||||
<script src="js/owl.carousel.min.js"></script>
|
<script src="../../js/owl.carousel.min.js"></script>
|
||||||
<script src="js/jquery.stellar.min.js"></script>
|
<script src="../../js/jquery.stellar.min.js"></script>
|
||||||
<script src="js/jquery.countdown.min.js"></script>
|
<script src="../../js/jquery.countdown.min.js"></script>
|
||||||
<script src="js/jquery.magnific-popup.min.js"></script>
|
<script src="../../js/jquery.magnific-popup.min.js"></script>
|
||||||
<script src="js/aos.js"></script>
|
<script src="../../js/aos.js"></script>
|
||||||
|
|
||||||
<script src="js/mediaelement-and-player.min.js"></script>
|
<script src="../../js/mediaelement-and-player.min.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
@ -334,7 +310,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<script src="js/main.js"></script>
|
<script src="../../js/main.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -0,0 +1,441 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>show_name</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,700,900">
|
||||||
|
<link rel="stylesheet" href="fonts/icomoon/style.css">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="css/magnific-popup.css">
|
||||||
|
<link rel="stylesheet" href="css/jquery-ui.css">
|
||||||
|
<link rel="stylesheet" href="css/owl.carousel.min.css">
|
||||||
|
<link rel="stylesheet" href="css/owl.theme.default.min.css">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mediaelement@4.2.7/build/mediaelementplayer.min.css">
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="css/aos.css">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="css/style.css">
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="site-wrap">
|
||||||
|
|
||||||
|
<div class="site-mobile-menu">
|
||||||
|
<div class="site-mobile-menu-header">
|
||||||
|
<div class="site-mobile-menu-close mt-3">
|
||||||
|
<span class="icon-close2 js-menu-toggle"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="site-mobile-menu-body"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<header class="site-navbar py-4 absolute transparent" role="banner">
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-3" data-aos="fade-down">
|
||||||
|
<h1><a href="#" class="text-white h2">{{show_name}}</a></h1>
|
||||||
|
</div>
|
||||||
|
<div class="col-9" data-aos="fade-down">
|
||||||
|
<nav class="site-navigation position-relative text-right text-md-right" role="navigation">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="d-inline-block ml-md-0 mr-auto py-3"><a href="#" class="site-menu-toggle js-menu-toggle text-white"><span class="icon-menu h3"></span></a></div>
|
||||||
|
|
||||||
|
<ul class="site-menu js-clone-nav d-none">
|
||||||
|
<li class="has-children active">
|
||||||
|
<a href="index.html">Home</a>
|
||||||
|
<ul class="dropdown arrow-top">
|
||||||
|
<li><a href="#">Menu One</a></li>
|
||||||
|
<li><a href="#">Menu Two</a></li>
|
||||||
|
<li><a href="#">Menu Three</a></li>
|
||||||
|
<li class="has-children">
|
||||||
|
<a href="#">Sub Menu</a>
|
||||||
|
<ul class="dropdown">
|
||||||
|
<li><a href="#">Menu One</a></li>
|
||||||
|
<li><a href="#">Menu Two</a></li>
|
||||||
|
<li><a href="#">Menu Three</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="has-children">
|
||||||
|
<a href="#">Dropdown</a>
|
||||||
|
<ul class="dropdown arrow-top">
|
||||||
|
<li><a href="#">Menu One</a></li>
|
||||||
|
<li><a href="#">Menu Two</a></li>
|
||||||
|
<li><a href="#">Menu Three</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="about.html">About</a></li>
|
||||||
|
<li><a href="contact.html">Contact</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="site-blocks-cover overlay" style="background-image: url({{episode_image}});" data-aos="fade" data-stellar-background-ratio="0.5">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row align-items-center justify-content-center text-center">
|
||||||
|
|
||||||
|
<div class="col-md-8" data-aos="fade-up" data-aos-delay="400">
|
||||||
|
<h2 class="text-white font-weight-light mb-2 display-4">Latest Episode: # {{episode_number}}</h2>
|
||||||
|
<div class="text-white mb-4"><span class="text-white-opacity-05"><small>{{episode_author}} / Zavod Rizoma | 16 September 2017 | 1:30:20</small></span></div>
|
||||||
|
<p><a href="episode/{{episode_number}}/index.html" class="btn btn-primary btn-sm py-3 px-4 small">Episode Details and Player</a></p>
|
||||||
|
|
||||||
|
<div class="player">
|
||||||
|
<audio id="player2" preload="none" controls style="max-width: 100%">
|
||||||
|
<source src="episode/{{episode_number}}/show.mp3" type="audio/mp3">
|
||||||
|
</audio>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="site-section bg-light">
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<div class="row mb-5" data-aos="fade-up">
|
||||||
|
<div class="col-md-12 text-center">
|
||||||
|
<h2 class="font-weight-bold text-black">Previous Episodes</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% for episode in episodes %}
|
||||||
|
<div class="d-block d-md-flex podcast-entry bg-white mb-5" data-aos="fade-up">
|
||||||
|
<div class="image" style="background-image: url('episode/{{episode.episode_number}}/img/cover.png');"></div>
|
||||||
|
<div class="text">
|
||||||
|
|
||||||
|
<h3 class="font-weight-light"><a href="episode/{{episode.episode_number}}/index.html">Episode: # {{episode.episode_number}} </a></h3>
|
||||||
|
<div class="text-white mb-3"><span class="text-black-opacity-05">
|
||||||
|
<small>Presented by Rob Canning <span class="sep">/</span> {{episode.episode_date}} <span class="sep">/</span> {{episode.episode_duration}}</small></span></div>
|
||||||
|
<p class="mb-4">On this weeks show music from: {{episode.episode_artists}}</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container" data-aos="fade-up">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 text-center">
|
||||||
|
<div class="site-block-27">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#"><</a></li>
|
||||||
|
<li class="active"><span>1</span></li>
|
||||||
|
<li><a href="#">2</a></li>
|
||||||
|
<li><a href="#">3</a></li>
|
||||||
|
<li><a href="#">4</a></li>
|
||||||
|
<li><a href="#">5</a></li>
|
||||||
|
<li><a href="#">></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="site-section">
|
||||||
|
<div class="container" data-aos="fade-up">
|
||||||
|
<div class="row mb-5">
|
||||||
|
<div class="col-md-12 text-center">
|
||||||
|
<h2 class="font-weight-bold text-black">Behind The Mic</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 col-lg-4 mb-5 mb-lg-5">
|
||||||
|
<div class="team-member">
|
||||||
|
|
||||||
|
<img src="images/rob_canning.jpeg" alt="Image" class="img-fluid">
|
||||||
|
|
||||||
|
<div class="text">
|
||||||
|
|
||||||
|
<h2 class="mb-2 font-weight-light h4">Rob Canning</h2>
|
||||||
|
<span class="d-block mb-2 text-white-opacity-05">Creative Director</span>
|
||||||
|
<p class="mb-4">Lorem ipsum dolor sit amet consectetur adipisicing elit ullam reprehenderit nemo.</p>
|
||||||
|
<p>
|
||||||
|
<a href="#" class="text-white p-2"><span class="icon-facebook"></span></a>
|
||||||
|
<a href="#" class="text-white p-2"><span class="icon-twitter"></span></a>
|
||||||
|
<a href="#" class="text-white p-2"><span class="icon-linkedin"></span></a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6 col-lg-4 mb-5 mb-lg-5">
|
||||||
|
<div class="team-member">
|
||||||
|
|
||||||
|
<img src="images/person_2.jpg" alt="Image" class="img-fluid">
|
||||||
|
|
||||||
|
<div class="text">
|
||||||
|
|
||||||
|
<h2 class="mb-2 font-weight-light h4">Brooke Cagle</h2>
|
||||||
|
<span class="d-block mb-2 text-white-opacity-05">Creative Director</span>
|
||||||
|
<p class="mb-4">Lorem ipsum dolor sit amet consectetur adipisicing elit ullam reprehenderit nemo.</p>
|
||||||
|
<p>
|
||||||
|
<a href="#" class="text-white p-2"><span class="icon-facebook"></span></a>
|
||||||
|
<a href="#" class="text-white p-2"><span class="icon-twitter"></span></a>
|
||||||
|
<a href="#" class="text-white p-2"><span class="icon-linkedin"></span></a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-section bg-light block-13">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row mb-5">
|
||||||
|
<div class="col-md-12 text-center">
|
||||||
|
<h2 class="font-weight-bold text-black">Featured Labels</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="nonloop-block-13 owl-carousel">
|
||||||
|
|
||||||
|
<div class="text-center p-3 p-md-5 bg-white">
|
||||||
|
<div class="mb-4">
|
||||||
|
<img src="images/label_logos/kamizdat.png" alt="Image" class="w-50 mx-auto img-fluid rounded-circle">
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<h3 class="font-weight-light h5">Kamizdat</h3>
|
||||||
|
<p>Kamizdat is a Slovene free-form boutique netlabel for Creative Commons music by local artists exploring a wide range of genres often packaged in locally-made and unique hand-numbered limited editions.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center p-3 p-md-5 bg-white">
|
||||||
|
<div class="mb-4">
|
||||||
|
<img src="images/label_logos/sploh.jpeg" alt="Image" class="w-50 mx-auto img-fluid rounded-circle">
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<h3 class="font-weight-light h5">Zavod Sploh</h3>
|
||||||
|
<p>Sploh (Sound, Performing, Listening, Observing, Hearing) for art production and publishing is engaged in music, performing arts and intermedia arts production, publishing and education. Primarily it is oriented towards developing, staging, establishing and reflecting musical practices that dip a toe in the waters of: improvisation, contemporary composition, and sound/tech experiments. s</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center p-3 p-md-5 bg-white">
|
||||||
|
<div class="mb-4">
|
||||||
|
<img src="images/label_logos/terraformer.jpeg" alt="Image" class="w-50 mx-auto img-fluid rounded-circle">
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<h3 class="font-weight-light h5">Terraformer Research Facilities</h3>
|
||||||
|
<p>Terraformer Research Facilities Label for experimental, drone, ambient, noise improvised music. Velenje, Slovenia.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center p-3 p-md-5 bg-white">
|
||||||
|
<div class="mb-4">
|
||||||
|
<img src="images/label_logos/PF.png" alt="Image" class="w-50 mx-auto img-fluid rounded-circle">
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<h3 class="font-weight-light h5">Pharmafabrik Records</h3>
|
||||||
|
<p>Delivers rare but comprehensive records of experimental, drone, ambient, electronic, and electro-acoustic music.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="footer-heading mb-4">About SHOWNAME</h3>
|
||||||
|
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe pariatur reprehenderit vero atque, consequatur id ratione, et non dignissimos culpa? Ut veritatis, quos illum totam quis blanditiis, minima minus odio!</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="footer-heading mb-4">Previous Podcast</h3>
|
||||||
|
<div class="block-25">
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
<li class="mb-3">
|
||||||
|
<a href="#" class="d-flex">
|
||||||
|
<figure class="image mr-4">
|
||||||
|
<img src="images/img_1.jpg" alt="" class="img-fluid">
|
||||||
|
</figure>
|
||||||
|
<div class="text">
|
||||||
|
<h3 class="heading font-weight-light">Lorem ipsum dolor sit amet consectetur elit</h3>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="mb-3">
|
||||||
|
<a href="#" class="d-flex">
|
||||||
|
<figure class="image mr-4">
|
||||||
|
<img src="images/img_1.jpg" alt="" class="img-fluid">
|
||||||
|
</figure>
|
||||||
|
<div class="text">
|
||||||
|
<h3 class="heading font-weight-light">Lorem ipsum dolor sit amet consectetur elit</h3>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="mb-3">
|
||||||
|
<a href="#" class="d-flex">
|
||||||
|
<figure class="image mr-4">
|
||||||
|
<img src="images/img_1.jpg" alt="" class="img-fluid">
|
||||||
|
</figure>
|
||||||
|
<div class="text">
|
||||||
|
<h3 class="heading font-weight-light">Lorem ipsum dolor sit amet consectetur elit</h3>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4 mb-5 mb-lg-0">
|
||||||
|
<div class="row mb-5">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<h3 class="footer-heading mb-4">Quick Menu</h3>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 col-lg-6">
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
<li><a href="#">Home</a></li>
|
||||||
|
<li><a href="#">Matches</a></li>
|
||||||
|
<li><a href="#">News</a></li>
|
||||||
|
<li><a href="#">Team</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 col-lg-6">
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
<li><a href="#">About Us</a></li>
|
||||||
|
<li><a href="#">Privacy Policy</a></li>
|
||||||
|
<li><a href="#">Contact Us</a></li>
|
||||||
|
<li><a href="#">Membership</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<h3 class="footer-heading mb-4">Follow Us</h3>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a href="#" class="pl-0 pr-3"><span class="icon-facebook"></span></a>
|
||||||
|
<a href="#" class="pl-3 pr-3"><span class="icon-twitter"></span></a>
|
||||||
|
<a href="#" class="pl-3 pr-3"><span class="icon-instagram"></span></a>
|
||||||
|
<a href="#" class="pl-3 pr-3"><span class="icon-linkedin"></span></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-4 mb-5 mb-lg-0">
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="footer-heading mb-4">Watch Video</h3>
|
||||||
|
|
||||||
|
<div class="block-16">
|
||||||
|
<figure>
|
||||||
|
<img src="images/img_1.jpg" alt="Image placeholder" class="img-fluid rounded">
|
||||||
|
<a href="https://vimeo.com/channels/staffpicks/93951774" class="play-button popup-vimeo"><span class="icon-play"></span></a>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="footer-heading mb-2">Subscribe Newsletter</h3>
|
||||||
|
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit minima minus odio.</p>
|
||||||
|
|
||||||
|
<form action="#" method="post">
|
||||||
|
<div class="input-group mb-3">
|
||||||
|
<input type="text" class="form-control border-secondary text-white bg-transparent" placeholder="Enter Email" aria-label="Enter Email" aria-describedby="button-addon2">
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-primary" type="button" id="button-addon2">Send</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="row pt-5 mt-5 text-center">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<p>
|
||||||
|
<!-- Link back to Colorlib can't be removed. Template is licensed under CC BY 3.0. -->
|
||||||
|
Copyright ©<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>document.write(new Date().getFullYear());</script> All rights reserved | This template is made with <i class="icon-heart-o" aria-hidden="true"></i> by <a href="https://colorlib.com" target="_blank" >Colorlib</a>
|
||||||
|
<!-- Link back to Colorlib can't be removed. Template is licensed under CC BY 3.0. -->
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="js/jquery-3.3.1.min.js"></script>
|
||||||
|
<script src="js/jquery-migrate-3.0.1.min.js"></script>
|
||||||
|
<script src="js/jquery-ui.js"></script>
|
||||||
|
<script src="js/popper.min.js"></script>
|
||||||
|
<script src="js/bootstrap.min.js"></script>
|
||||||
|
<script src="js/owl.carousel.min.js"></script>
|
||||||
|
<script src="js/jquery.stellar.min.js"></script>
|
||||||
|
<script src="js/jquery.countdown.min.js"></script>
|
||||||
|
<script src="js/jquery.magnific-popup.min.js"></script>
|
||||||
|
<script src="js/aos.js"></script>
|
||||||
|
|
||||||
|
<script src="js/mediaelement-and-player.min.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
var mediaElements = document.querySelectorAll('video, audio'), total = mediaElements.length;
|
||||||
|
|
||||||
|
for (var i = 0; i < total; i++) {
|
||||||
|
new MediaElementPlayer(mediaElements[i], {
|
||||||
|
pluginPath: 'https://cdn.jsdelivr.net/npm/mediaelement@4.2.7/build/',
|
||||||
|
shimScriptAccess: 'always',
|
||||||
|
success: function () {
|
||||||
|
var target = document.body.querySelectorAll('.player'), targetTotal = target.length;
|
||||||
|
for (var j = 0; j < targetTotal; j++) {
|
||||||
|
target[j].style.visibility = 'visible';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="js/main.js"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
272
mk_show.py
272
mk_show.py
|
@ -1,19 +1,44 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
import sys, os, datetime, fnmatch, glob, random, time, pathlib, re
|
import sys, os, datetime, fnmatch, glob, random, time, pathlib, re
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from os.path import join
|
from os.path import join
|
||||||
from tinytag import TinyTag
|
from tinytag import TinyTag
|
||||||
|
|
||||||
from random import shuffle
|
from random import shuffle
|
||||||
|
import sqlite3, json
|
||||||
import sqlite3
|
|
||||||
|
|
||||||
from mk_web import *
|
from mk_web import *
|
||||||
|
|
||||||
con = sqlite3.connect("music.db")
|
conn = sqlite3.connect("database/music.db")
|
||||||
|
|
||||||
DATE = datetime.datetime.now().strftime("%Y-%m-%d")
|
#cursor = conn.cursor()
|
||||||
total_show_dur = 0
|
#cursor.execute("DROP TABLE SHOW")
|
||||||
|
#conn.commit()
|
||||||
|
|
||||||
|
conn.execute('''CREATE TABLE IF NOT EXISTS SHOW(
|
||||||
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
EPISODE INT NOT NULL,
|
||||||
|
DATE TEXT NOT NULL,
|
||||||
|
DURATION INT NOT NULL,
|
||||||
|
ALBUM TEXT NOT NULL,
|
||||||
|
TRACK TEXT NOT NULL,
|
||||||
|
ARTIST TEXT NOT NULL,
|
||||||
|
TRACKDUR INT NOT NULL,
|
||||||
|
YEAR TEXT NOT NULL
|
||||||
|
);''')
|
||||||
|
|
||||||
|
print("Table created successfully");
|
||||||
|
|
||||||
|
#conn.execute("INSERT INTO SHOW (ID, EPISODE,DATE,TRACK,ARTIST) \
|
||||||
|
#VALUES (1, 1, 'wednesday', 'Some song', 'Some Artist' )");
|
||||||
|
#conn.commit()
|
||||||
|
#print("DB Record created successfully");
|
||||||
|
#conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
episode_date = datetime.datetime.now().strftime("%Y-%m-%d")
|
||||||
|
episode_duration = 0
|
||||||
complete_playlist = []
|
complete_playlist = []
|
||||||
show_array = []
|
show_array = []
|
||||||
show_cover = ""
|
show_cover = ""
|
||||||
|
@ -21,8 +46,6 @@ archive = []
|
||||||
artists_played = []
|
artists_played = []
|
||||||
artist_abreviated = []
|
artist_abreviated = []
|
||||||
episode_number = sys.argv[1]
|
episode_number = sys.argv[1]
|
||||||
|
|
||||||
|
|
||||||
show_name = "SHOWNAME" # OBED
|
show_name = "SHOWNAME" # OBED
|
||||||
path = "/home/rob/antena/"
|
path = "/home/rob/antena/"
|
||||||
web_path = "/home/rob/antena/html/episode/{0}/img".format(episode_number)
|
web_path = "/home/rob/antena/html/episode/{0}/img".format(episode_number)
|
||||||
|
@ -68,7 +91,7 @@ def load_all_music():
|
||||||
def create_show_playlist(show_array: list, complete_playlist:list):
|
def create_show_playlist(show_array: list, complete_playlist:list):
|
||||||
load_all_music()
|
load_all_music()
|
||||||
|
|
||||||
global total_show_dur
|
global episode_duration
|
||||||
global archive
|
global archive
|
||||||
|
|
||||||
track_count = 0
|
track_count = 0
|
||||||
|
@ -76,7 +99,7 @@ def create_show_playlist(show_array: list, complete_playlist:list):
|
||||||
max_track_dur = 10
|
max_track_dur = 10
|
||||||
min_track_dur = 1.8
|
min_track_dur = 1.8
|
||||||
|
|
||||||
while total_show_dur < 60 * 60 and track_count < 12 :
|
while episode_duration < 60 * 60 and track_count < 12 :
|
||||||
song = random.choice(random.sample(\
|
song = random.choice(random.sample(\
|
||||||
complete_playlist, len(complete_playlist) )).rstrip() # pick a song
|
complete_playlist, len(complete_playlist) )).rstrip() # pick a song
|
||||||
track = TinyTag.get(song) # get its metadata
|
track = TinyTag.get(song) # get its metadata
|
||||||
|
@ -92,18 +115,37 @@ def create_show_playlist(show_array: list, complete_playlist:list):
|
||||||
artist_abreviated.append(art)
|
artist_abreviated.append(art)
|
||||||
artists_played.append(track.artist) # and add the artist to the played list
|
artists_played.append(track.artist) # and add the artist to the played list
|
||||||
add_to_tracks_played(track.title) # and write entry to archive file
|
add_to_tracks_played(track.title) # and write entry to archive file
|
||||||
|
|
||||||
|
if not track.year: # where missing metadata give a dummy value
|
||||||
|
track.year = 0000
|
||||||
|
|
||||||
|
cursor = conn.cursor()
|
||||||
|
#long_string = json.dumps(["' SomeWord"])
|
||||||
|
cursor.execute("INSERT INTO SHOW (\
|
||||||
|
ID, EPISODE, DATE, DURATION, ALBUM, TRACK, ARTIST, TRACKDUR, YEAR) \
|
||||||
|
VALUES (NULL, ?, ?, ?, ?, ?, ?,?,?)", [episode_number, episode_date, episode_duration, \
|
||||||
|
track.album, track.title, track.artist, track.duration, track.year]);
|
||||||
|
conn.commit()
|
||||||
|
print("DB Record created successfully");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
track_count += 1; print(track_count)
|
track_count += 1; print(track_count)
|
||||||
total_show_dur = total_show_dur + track.duration
|
episode_duration = episode_duration + track.duration
|
||||||
else: print("TRACK TOO SHORT..........." )
|
else: print("TRACK TOO SHORT..........." )
|
||||||
else: print("TRACK TOO LONG..........." )
|
else: print("TRACK TOO LONG..........." )
|
||||||
else: print("SONG PLAYED IN PREVIOUS EPISODE" )
|
else: print("SONG PLAYED IN PREVIOUS EPISODE" )
|
||||||
else: print("ARTIST ALREADY IN PODCAST")
|
else: print("ARTIST ALREADY IN PODCAST")
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
|
||||||
total_show_dur = timedelta(seconds=round(total_show_dur))
|
episode_duration = timedelta(seconds=round(episode_duration))
|
||||||
|
|
||||||
print("total tracks = {0} \n total duration = {1} ".format(track_count, total_show_dur))
|
print("total tracks = {0} \n total duration = {1} ".format(track_count, episode_duration))
|
||||||
|
|
||||||
return show_array, total_show_dur
|
return show_array, episode_duration
|
||||||
|
|
||||||
def combine_images(columns, space, images, variants:int):
|
def combine_images(columns, space, images, variants:int):
|
||||||
global show_cover
|
global show_cover
|
||||||
|
@ -147,8 +189,7 @@ def combine_images(columns, space, images, variants:int):
|
||||||
|
|
||||||
h2_spc = 85
|
h2_spc = 85
|
||||||
h2_baseline = 1530
|
h2_baseline = 1530
|
||||||
|
|
||||||
|
|
||||||
# Add Text to the image ----------------------------------------
|
# Add Text to the image ----------------------------------------
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
# some logic to shuffle the list if sub sections of list are too long for layout
|
# some logic to shuffle the list if sub sections of list are too long for layout
|
||||||
|
@ -160,12 +201,10 @@ def combine_images(columns, space, images, variants:int):
|
||||||
[len(s) for s in [''.join(artist_abreviated[9:12])]][0] > str_length_thresh:
|
[len(s) for s in [''.join(artist_abreviated[9:12])]][0] > str_length_thresh:
|
||||||
print("on of the lines is longer than fits the page... shuffling the list for a better look")
|
print("on of the lines is longer than fits the page... shuffling the list for a better look")
|
||||||
random.shuffle(artist_abreviated)
|
random.shuffle(artist_abreviated)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
im.text((30,10), '''an eclectic selection of contemporary independent music from slovenia: {0} - E P I S O D E #{1}
|
im.text((30,10), '''an eclectic selection of contemporary independent music from slovenia: {0} - E P I S O D E #{1}
|
||||||
'''\
|
'''\
|
||||||
.format(DATE,episode_number), fill="white", font=mf_h3)
|
.format(episode_date,episode_number), fill="white", font=mf_h3)
|
||||||
im.text((30,280), ''' THIS WEEK ON \n EPISODE #{0} of \n {1}!'''.upper()\
|
im.text((30,280), ''' THIS WEEK ON \n EPISODE #{0} of \n {1}!'''.upper()\
|
||||||
.format(episode_number, show_name), fill="white", font=mf_h1, stroke_width=2, stroke_fill='black')
|
.format(episode_number, show_name), fill="white", font=mf_h1, stroke_width=2, stroke_fill='black')
|
||||||
im.text((30, h2_baseline + (h2_spc*1) ), '''m u s i c _ f r o m _ : {0}'''\
|
im.text((30, h2_baseline + (h2_spc*1) ), '''m u s i c _ f r o m _ : {0}'''\
|
||||||
|
@ -177,20 +216,15 @@ def combine_images(columns, space, images, variants:int):
|
||||||
im.text((30, h2_baseline + (h2_spc*4)), "{0}"\
|
im.text((30, h2_baseline + (h2_spc*4)), "{0}"\
|
||||||
.format(' | '.join(artist_abreviated[9:12])), (255,255,255), font=mf_h2)
|
.format(' | '.join(artist_abreviated[9:12])), (255,255,255), font=mf_h2)
|
||||||
|
|
||||||
im.text((1560,1888), ''' http://{0}.rizom.si '''\
|
im.text((1540,1888), ''' http://{0}.rizom.si '''\
|
||||||
.format(show_name, DATE,episode_number), fill="white", font=mf_h4)
|
.format(show_name, episode_date,episode_number), fill="white", font=mf_h4)
|
||||||
|
|
||||||
# TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler)
|
show_cover = 'img/cover.png'.format(episode_number,episode_date, variants)
|
||||||
|
|
||||||
show_cover = 'img/cover.png'.format(episode_number,DATE, variants)
|
|
||||||
#pathlib.Path.touch(show_cover)
|
|
||||||
background.save("html/" + "episode/{0}/{1}".format(episode_number, show_cover))
|
background.save("html/" + "episode/{0}/{1}".format(episode_number, show_cover))
|
||||||
return show_cover
|
return show_cover
|
||||||
|
|
||||||
def create_show_coverart(show_array, variants):
|
def create_show_coverart(show_array, variants):
|
||||||
|
|
||||||
# global show_array
|
|
||||||
#print(show_array)
|
|
||||||
show_cover_jpgs = []
|
show_cover_jpgs = []
|
||||||
|
|
||||||
for dir in show_array:
|
for dir in show_array:
|
||||||
|
@ -199,11 +233,6 @@ def create_show_coverart(show_array, variants):
|
||||||
for i in ["cover", "COVER"]:
|
for i in ["cover", "COVER"]:
|
||||||
if i in file:
|
if i in file:
|
||||||
show_cover_jpgs.append(str(path) + "/" + file)
|
show_cover_jpgs.append(str(path) + "/" + file)
|
||||||
#print(file)
|
|
||||||
|
|
||||||
# print("\n ++++ show jpgs: +++++ {0} +++++++++number of jpgs: {1} +++++++\n"\
|
|
||||||
# .format(show_cover_jpgs, len(show_cover_jpgs) ) )
|
|
||||||
|
|
||||||
|
|
||||||
print('''
|
print('''
|
||||||
------------------------
|
------------------------
|
||||||
|
@ -241,16 +270,10 @@ def create_animated_gif():
|
||||||
img.save(fp=fp_out, format='GIF', append_images=imgs,
|
img.save(fp=fp_out, format='GIF', append_images=imgs,
|
||||||
save_all=True, duration=200, loop=0)
|
save_all=True, duration=200, loop=0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def create_pls_file():
|
def create_pls_file():
|
||||||
# write the selection as a playlist file
|
# write the selection as a playlist file
|
||||||
with open("shows/antena_playlist_" + DATE + ".pls","w") as file:
|
with open("shows/antena_playlist_" + episode_date + ".pls","w") as file:
|
||||||
file.writelines("\n".join(show_array))
|
file.writelines("\n".join(show_array))
|
||||||
|
|
||||||
|
|
||||||
def create_podcast(show_array: list):
|
def create_podcast(show_array: list):
|
||||||
|
|
||||||
|
@ -265,61 +288,176 @@ def create_podcast(show_array: list):
|
||||||
|
|
||||||
playlist_songs = [AudioSegment.from_file(flac_file) for flac_file in show_array]
|
playlist_songs = [AudioSegment.from_file(flac_file) for flac_file in show_array]
|
||||||
|
|
||||||
show_intro = playlist_songs.pop(0)
|
show_intro = playlist_songs[0]
|
||||||
first_song = playlist_songs[0].fade_in(3000)
|
# first_song = playlist_songs[0].fade_in(0) # only fadein if used over show intro - currently not used
|
||||||
intro_and_first = first_song.overlay(show_intro)
|
# intro_and_first = first_song.overlay(show_intro)
|
||||||
first_three_blurb = playlist_songs.pop(0)
|
first_three_blurb = playlist_songs[0]
|
||||||
second_three_blurb = playlist_songs.pop(0)
|
second_three_blurb = playlist_songs[0]
|
||||||
final_songs_blurb = playlist_songs.pop(0)
|
final_songs_blurb = playlist_songs[0]
|
||||||
final_show_outro = playlist_songs.pop(0)
|
final_show_outro = playlist_songs[0]
|
||||||
playlist = intro_and_first
|
|
||||||
|
|
||||||
for song in playlist_songs[2:3]: # first three songs (first added with intro)
|
|
||||||
# We don't want an abrupt stop at the end, so let's do a 1 second crossfades
|
|
||||||
playlist = playlist.append(song, crossfade=(10 * 1000))
|
|
||||||
|
|
||||||
|
# next two commented lines are for if intro goes over first track or not
|
||||||
|
#playlist = intro_and_first
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
playlist = show_intro
|
||||||
|
|
||||||
|
|
||||||
|
#for song in playlist_songs[2:3]:
|
||||||
|
for song in playlist_songs[1:4]: # first three songs (first added with intro)
|
||||||
|
# We don't want an abrupt stop at the end, so let's do a 1 second crossfades
|
||||||
|
playlist = playlist.append(song, crossfade=(1 * 1000))
|
||||||
|
print("first songs added")
|
||||||
|
|
||||||
# blurb about first three tracks
|
# blurb about first three tracks
|
||||||
playlist = playlist.append(first_three_blurb) # <--------------BLURB INSERT
|
playlist = playlist.append(first_three_blurb) # <--------------BLURB INSERT
|
||||||
|
|
||||||
for song in playlist_songs[4:6]: # second three songs
|
for song in playlist_songs[4:7]: # second three songs
|
||||||
# We don't want an abrupt stop at the end, so let's do a 1 second crossfades
|
playlist = playlist.append(song, crossfade=(1 * 1000))
|
||||||
playlist = playlist.append(song, crossfade=(10 * 1000))
|
print("second songs added")
|
||||||
|
|
||||||
playlist = playlist.append(second_three_blurb) # <--------------BLURB INSERT
|
playlist = playlist.append(second_three_blurb) # <--------------BLURB INSERT
|
||||||
|
|
||||||
for song in playlist_songs[7:]: # second three song # We don't want an abrupt stop at the end, so let's do a 1 second crossfades
|
for song in playlist_songs[7:10]: # second three song
|
||||||
playlist = playlist.append(song, crossfade=(10 * 1000))
|
playlist = playlist.append(song, crossfade=(1 * 1000))
|
||||||
|
print("third songs added")
|
||||||
|
|
||||||
playlist = playlist.append(final_songs_blurb) # <--------------BLURB INSERT
|
playlist = playlist.append(final_songs_blurb) # <--------------BLURB INSERT
|
||||||
|
|
||||||
|
for song in playlist_songs[10:13]: # second three song
|
||||||
|
playlist = playlist.append(song, crossfade=(1 * 1000))
|
||||||
|
print("final songs added")
|
||||||
|
|
||||||
playlist = playlist.append(final_show_outro) # <-------------- OUTRO SEQUENCE
|
playlist = playlist.append(final_show_outro) # <-------------- OUTRO SEQUENCE
|
||||||
|
|
||||||
# get length of final show / podcast
|
# get length of final show / podcast
|
||||||
playlist_length = len(playlist) / (1000*60)
|
playlist_length = len(playlist) / (1000*60)
|
||||||
# save the entire poidcast
|
# save the entire poidcast
|
||||||
|
|
||||||
with open("html/episode/{0}/show.flac".format(episode_number), 'wb') as out_f:
|
with open("html/episode/{0}/show.flac".format(episode_number), 'wb') as out_f:
|
||||||
|
print("FLAC output file opened...writing to file...")
|
||||||
playlist.export(out_f, format='flac')
|
playlist.export(out_f, format='flac')
|
||||||
|
print("FLAC audio file exported...")
|
||||||
|
|
||||||
|
with open("html/episode/{0}/show.mp3".format(episode_number), 'wb') as out_f:
|
||||||
|
print("MP3 output file opened...writing to file...")
|
||||||
|
playlist.export(out_f, format='mp3')
|
||||||
|
print("MP3 audio file exported...")
|
||||||
|
|
||||||
### ------------------------------------------------------------
|
### ------------------------------------------------------------
|
||||||
|
|
||||||
def create_html_from_template():
|
def create_html_episode_from_template():
|
||||||
|
|
||||||
from jinja2 import Template, Environment, FileSystemLoader
|
from jinja2 import Template, Environment, FileSystemLoader
|
||||||
|
|
||||||
env = Environment(loader=FileSystemLoader('html/templates'))
|
env = Environment(loader=FileSystemLoader('html/templates'))
|
||||||
episode_template = env.get_template('episode.jinja')
|
episode_template = env.get_template('episode.jinja')
|
||||||
output_from_parsed_template = episode_template.render(episode_author="rrrrrrrr", episode_dur="123", about_show="bla bla", episode_playlist="playlist_songs", episode_image="episode/{0}/img/cover.png".format(episode_number))
|
|
||||||
|
|
||||||
with open("html/episode.html".format(episode_number), "w") as episode_page:
|
show_info = []
|
||||||
|
|
||||||
|
# maybe a jinja2 template loop here instead
|
||||||
|
for i in show_array:
|
||||||
|
track = TinyTag.get(i)
|
||||||
|
detail = str(track.artist) + " | " + str(track.album) + \
|
||||||
|
" | " + str(track.title) + " | " + str(track.year) + \
|
||||||
|
" | " + str(timedelta(seconds=round(track.duration)))
|
||||||
|
show_info.append("" + detail)
|
||||||
|
|
||||||
|
output_from_parsed_template = episode_template.render(episode_author="rrrrrrrr",\
|
||||||
|
episode_duration=episode_duration, episode_date=episode_date, about_show="bla bla", episode_playlist=show_info, \
|
||||||
|
episode_image="img/cover.png".format(episode_number))
|
||||||
|
|
||||||
|
with open("html/episode/{0}/index.html".format(episode_number), "w") as episode_page:
|
||||||
episode_page.write(output_from_parsed_template)
|
episode_page.write(output_from_parsed_template)
|
||||||
|
|
||||||
|
def create_html_episode_from_template():
|
||||||
|
|
||||||
|
from jinja2 import Template, Environment, FileSystemLoader
|
||||||
|
|
||||||
|
env = Environment(loader=FileSystemLoader('html/templates'))
|
||||||
|
episode_template = env.get_template('episode.jinja')
|
||||||
|
|
||||||
|
show_info = []
|
||||||
|
|
||||||
|
# maybe a jinja2 template loop here instead
|
||||||
|
for i in show_array:
|
||||||
|
track = TinyTag.get(i)
|
||||||
|
detail = str(track.artist) + " | " + str(track.album) + \
|
||||||
|
" | " + str(track.title) + " | " + str(track.year) + \
|
||||||
|
" | " + str(timedelta(seconds=round(track.duration)))
|
||||||
|
show_info.append("" + detail)
|
||||||
|
|
||||||
|
output_from_parsed_template = episode_template.render(episode_author="rrrrrrrr",\
|
||||||
|
episode_duration="123", about_show="bla bla", episode_playlist=show_info, \
|
||||||
|
episode_image="img/cover.png".format(episode_number))
|
||||||
|
|
||||||
|
with open("html/episode/{0}/index.html".format(episode_number), "w") as episode_page:
|
||||||
|
episode_page.write(output_from_parsed_template)
|
||||||
|
|
||||||
|
|
||||||
|
def create_html_homepage_from_template():
|
||||||
|
|
||||||
|
from jinja2 import Template, Environment, FileSystemLoader
|
||||||
|
|
||||||
|
env = Environment(loader=FileSystemLoader('html/templates'))
|
||||||
|
homepage_template = env.get_template('homepage.jinja')
|
||||||
|
|
||||||
|
show_info = []
|
||||||
|
|
||||||
|
episode_artists = []
|
||||||
|
for i in range(10):
|
||||||
|
artists = []
|
||||||
|
conn = sqlite3.connect("database/music.db")
|
||||||
|
cur = conn.cursor()
|
||||||
|
cur.execute("SELECT ARTIST FROM SHOW WHERE EPISODE=?", [i])
|
||||||
|
rows = cur.fetchall()
|
||||||
|
|
||||||
|
for artist in rows:
|
||||||
|
art = string=re.sub("\(.*?\)","", artist[0])
|
||||||
|
# shorten verbose artist names such as trojnik Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler)
|
||||||
|
artist = string=re.sub("and","&",art)
|
||||||
|
artists.append(artist)
|
||||||
|
episode_artists.append(artists)
|
||||||
|
|
||||||
|
|
||||||
|
episodes = []
|
||||||
|
for i in range(10):
|
||||||
|
|
||||||
|
print(episode_artists)
|
||||||
|
an_episode = dict(date="2012-02-", episode_artists=episode_artists[i], episode_number=i, episode_date=episode_date, episode_duration=episode_duration)
|
||||||
|
episodes.append(an_episode)
|
||||||
|
episodes = reversed(episodes) # reversed order to most recent episode appears first in list
|
||||||
|
|
||||||
|
|
||||||
|
# maybe a jinja2 template loop here instead
|
||||||
|
for i in show_array:
|
||||||
|
track = TinyTag.get(i)
|
||||||
|
detail = str(track.artist) + " | " + str(track.album) + \
|
||||||
|
" | " + str(track.title) + " | " + str(track.year) + \
|
||||||
|
" | " + str(timedelta(seconds=round(track.duration)))
|
||||||
|
show_info.append("" + detail)
|
||||||
|
|
||||||
|
output_from_parsed_template = homepage_template.render(episodes=episodes, episode_author="Rob Canning",\
|
||||||
|
episode_duration="123", episode_number=episode_number, episode_artists=episode_artists, \
|
||||||
|
about_show="bla bla", episode_playlist=show_info, \
|
||||||
|
episode_image="episode/{0}/img/cover.png".format(episode_number))
|
||||||
|
|
||||||
|
with open("html/index.html".format(episode_number), "w") as episode_page:
|
||||||
|
episode_page.write(output_from_parsed_template)
|
||||||
|
|
||||||
|
|
||||||
create_show_playlist(show_array, complete_playlist)
|
create_show_playlist(show_array, complete_playlist)
|
||||||
create_show_coverart(show_array, 1) #total_show_dur = 100
|
create_show_coverart(show_array, 1) #episode_duration = 100
|
||||||
#create_animated_gif()
|
#create_animated_gif()
|
||||||
#convert -delay 100 -loop 0 html/episode/2/img/show_cover_2024-01-12* animatedGIF.gif
|
|
||||||
#create_intro(show_array)
|
|
||||||
|
create_intro(show_array)
|
||||||
create_pls_file()
|
create_pls_file()
|
||||||
create_html_from_template()
|
|
||||||
#create_web_page(show_name, show_array, episode_number, artists_played, show_cover, total_show_dur)
|
create_html_episode_from_template()
|
||||||
#create_podcast(show_array)
|
create_html_homepage_from_template()
|
||||||
|
create_podcast(show_array)
|
||||||
|
|
||||||
|
|
||||||
|
#convert -delay 100 -loop 0 html/episode/2/img/show_cover_2024-01-12* animatedGIF.gif
|
||||||
|
|
|
@ -1,651 +1,12 @@
|
||||||
|
|
||||||
Sub Persona II
|
don't tell me what i like
|
||||||
BE CREEP - LIVE
|
|
||||||
Mono Scarves - Bralni stroj Korenje
|
|
||||||
Coriolis Effect
|
|
||||||
Sweet Sandy
|
|
||||||
Inchoate Crimes
|
|
||||||
When Ballon And Door Collide Pt2
|
|
||||||
Stampede
|
|
||||||
Action XIII
|
|
||||||
Domen Gnezda - Misnomer II - 15 Misnomer 37
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 05 Čačkarije (Scribbles)
|
|
||||||
Lussid
|
|
||||||
Cyberpunk Tendencies
|
|
||||||
When Ballon And Door Collide Pt2
|
|
||||||
Action I
|
|
||||||
Small Tyrant
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 09 Though Ashtray (Pepelnik), I Still Like To Read Your Poems
|
|
||||||
Apprentie Sorciēre
|
|
||||||
Amyl Nitrite
|
|
||||||
Domen Gnezda - Misnomer II - 10 Misnomer 32
|
|
||||||
biking, i look back
|
|
||||||
02 Confined Movement- B
|
|
||||||
Action XV
|
|
||||||
Her Boat
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 14 Klic meduze
|
|
||||||
Untitled
|
|
||||||
chan debris_var.2a
|
|
||||||
Pudl
|
|
||||||
Je Šel Brat S Sestro
|
|
||||||
Vid Drašler - Kramljanja - 02 2.
|
|
||||||
Infinite values
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 06 06
|
|
||||||
Altobar
|
|
||||||
Magie de la Pleine Lune
|
|
||||||
Keep An Eye On That Ice Cream
|
|
||||||
Domen Gnezda - Misnomer II - 16 Misnomer 38
|
|
||||||
Liqweed
|
|
||||||
Vinko Globokar - Dialog - 05 Dialog über Luft (1994)
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 01 Uncaged (take 2)
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 05 Čačkarije (Scribbles)
|
|
||||||
biking, i look back
|
|
||||||
Tilt - Tilt - 01 Alicante 1
|
|
||||||
Cyclidox
|
|
||||||
Cyclidox
|
|
||||||
Sub Persona III
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 10 Knitting Traps
|
|
||||||
Divine
|
|
||||||
Gfuel
|
|
||||||
Nots
|
|
||||||
you think you're so much better
|
|
||||||
debris of motus_var.1b
|
|
||||||
Tilt - Tilt - 03 Alicante 3
|
|
||||||
Blue Waters Turn Black (P.C.M. remix)
|
|
||||||
Laszlo
|
|
||||||
Stale Futures
|
|
||||||
Tomaž Grom - Sam, za... - 08 P.Č.
|
|
||||||
Pudlica
|
|
||||||
Hollogramma
|
|
||||||
ethera (dome)
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 05 05
|
|
||||||
Plastik Elastik
|
|
||||||
Tomaž Grom & Seijiro Murayama - Nepretrganost - 01 Ena.
|
|
||||||
BE CREEP - LIVE
|
|
||||||
Inna Moss Side (96' Flex)
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 04 Orans
|
|
||||||
Nihalo
|
|
||||||
Tone Pavček & Tomaž Grom - Sonce in sončice po vsem svetu - 02 Sončna idila
|
|
||||||
The Left Eye
|
|
||||||
Tides (excerpt)
|
|
||||||
Moonolog
|
|
||||||
Domen Gnezda - Misnomer II - 02 Misnomer 24
|
|
||||||
a2
|
|
||||||
Gravitacija
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 07 Hardhanded
|
|
||||||
Tomaž Grom - Sam, za... - 04 L.Z.
|
|
||||||
Botox
|
|
||||||
Vid Drašler - Kramljanja - 06 6.
|
|
||||||
anticipation_var.1-1
|
|
||||||
Oholo! - Mnogobolje - 05 Influenced
|
|
||||||
Tomaž Grom & Seijiro Murayama - Nepretrganost - 05 Pet.
|
|
||||||
+ [Excerpt]
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 01 From Hands To Ears - Iz rok v ušesa
|
|
||||||
Sub Persona X
|
|
||||||
Passage
|
|
||||||
Juan Camilo Vasquez - Splitting - 05 Caliope (El canto de las abejas), for guitar and electronics (2014)
|
|
||||||
Bright Future
|
|
||||||
YuWrong
|
|
||||||
Leather Wings
|
|
||||||
Birth of a planet
|
|
||||||
Mono Scarves - Demoklejev meč in rivbiška palica dva v enem
|
|
||||||
Explored
|
|
||||||
wudang_var.3-7
|
|
||||||
Lazy Sunday (Moshang remix)
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 05 05
|
|
||||||
Of Blood
|
|
||||||
None
|
|
||||||
Mercurius & the Ram
|
|
||||||
Palimpsest V2
|
|
||||||
5000000000 YRS
|
|
||||||
Tomaž Grom - Sam, za... - 09 N.N.
|
|
||||||
Ne Iz Sadu
|
|
||||||
Some Spatter Left
|
|
||||||
Extra space
|
|
||||||
Antichrist
|
|
||||||
Mono Scarves - Per fhodo ali kot niša
|
|
||||||
Nagauar
|
|
||||||
voices
|
|
||||||
Vid Drašler - Kramljanja - 07 7.
|
|
||||||
Untold Truths
|
|
||||||
Whale Ft
|
|
||||||
S.L.C.
|
|
||||||
Bad Girls (rework)
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 06 06
|
|
||||||
Tomaž Grom - Sam, za... - 06 P.K.
|
|
||||||
Ligature part I
|
|
||||||
Magie de la Pleine Lune
|
|
||||||
Genetska Modifikacija Organskih Celic
|
|
||||||
Typhaceae
|
|
||||||
Tomaž Grom - Sam, za... - 08 P.Č.
|
|
||||||
Uroš Rojko - Splitting - 03 Chiton (2003)
|
|
||||||
Chorus 1 (SC)
|
|
||||||
things i decided against
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 10 Knitting Traps
|
|
||||||
Zulu
|
|
||||||
Weakest Parts of Society
|
|
||||||
Fightinsect
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 12 Zataknjeno za zobmi
|
|
||||||
Gfuel
|
|
||||||
Genetic Architecture Of The Evolutionary Selection
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 03 Svete gore
|
|
||||||
My Dentist
|
|
||||||
coupdotexe (mapalma remix)
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 05 05
|
|
||||||
Inside Magog (Burp remix)
|
|
||||||
KIURIKI - Killem All
|
|
||||||
Oholo! - Mnogobolje - 01 Blind man's buff
|
|
||||||
Moonolog
|
|
||||||
save as
|
|
||||||
Seven Day Pill Box
|
|
||||||
conversation suppresed
|
|
||||||
Hume
|
|
||||||
The Stabbing Party
|
|
||||||
Rib Vaulting
|
|
||||||
Oscillopsia
|
|
||||||
Preludium General Ensemble (Outtake)
|
|
||||||
Non-Intersected Flight
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 08 Uncaged (take 1)
|
|
||||||
Sub Persona VI
|
|
||||||
Of Blood
|
|
||||||
Mono Scarves - Kaj pa tisti rizling
|
|
||||||
Scena Prologue
|
|
||||||
Dusted
|
|
||||||
Transition (Excerpt)
|
|
||||||
Fluid Ruin
|
|
||||||
Stop That Noise
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 10 Knitting Traps
|
|
||||||
Brazen Bull
|
|
||||||
Birth of a planet
|
|
||||||
KIURIKI - Pudl
|
|
||||||
Persecutors Persecuted (Act III)
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 08 Two Right Hands - Dve desni roki
|
|
||||||
Domen Gnezda - Misnomer II - 07 Misnomer 29
|
|
||||||
Matej Bonin - Gymnastics of non-sense II - 06 Part VI
|
|
||||||
Seven Day Pill Box
|
|
||||||
KIURIKI - Killem All
|
|
||||||
Asphalt
|
|
||||||
Clear Love
|
|
||||||
Jošt Drašler - The Balloon Catcher - 09 Grandma Balloon
|
|
||||||
Vinko Globokar - Dialog - 05 Dialog über Luft (1994)
|
|
||||||
The Look
|
|
||||||
Kampak
|
|
||||||
Sterne Frau
|
|
||||||
Opaque Euphoria
|
|
||||||
Bojana Šaljić Podešva - Dialog - 03 Meditacija o bližini (2008)
|
|
||||||
Oholo! - Mnogobolje - 05 Influenced
|
|
||||||
a6
|
|
||||||
Tone Pavček & Tomaž Grom - Sonce in sončice po vsem svetu - 01 Pogumna Lenka
|
|
||||||
Action XIX
|
|
||||||
Undulipodium
|
|
||||||
Stefan Beyer - Dialog - 02 Notoriously Pyratisch (2008)
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 13 Drobovje ust
|
|
||||||
Oholo! - Mnogobolje - 03 Shards II.
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 06 Peš (On Foot)
|
|
||||||
Asphalt
|
|
||||||
The Look
|
|
||||||
Cyclidox
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 09 Hjärtspion
|
|
||||||
Carve4
|
|
||||||
Tomaž Grom - Sam, za... - 01 T.G.V.S.
|
|
||||||
Altobar
|
|
||||||
Vinko Globokar - Splitting - 07 Vinko Globokar- Dialogue about water, for acoustic and electric guitar (1994)
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 04 Forgetting Won't Help - Pozaba ne pomaga
|
|
||||||
Dromon
|
|
||||||
Amena
|
|
||||||
Jaymups
|
|
||||||
Domen Gnezda - Misnomer II - 04 Misnomer 26
|
|
||||||
Hanged Mans Paradox
|
|
||||||
Land
|
|
||||||
Vid Drašler - Kramljanja - 03 3.
|
|
||||||
BE CREEP - LIVE
|
|
||||||
death rattle_var.2-4
|
|
||||||
make this title easy to remember
|
|
||||||
Action XVIII
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 04 Slightly Used Machine
|
|
||||||
Arboreal
|
|
||||||
Slika 1
|
|
||||||
Canote
|
|
||||||
Opaque Euphoria
|
|
||||||
Samo Kutin - Plovilo - 06 A
|
|
||||||
Osoje 2k5
|
|
||||||
Domen Gnezda - Misnomer II - 10 Misnomer 32
|
|
||||||
Sub Persona X
|
|
||||||
When Ballon And Door Collide Pt2
|
|
||||||
annihilation_var. 0
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 11 Sound Out - Zvonka pavza
|
|
||||||
Stabit
|
|
||||||
Lenticular
|
|
||||||
debris of motus_var.1
|
|
||||||
Vid Drašler - Kramljanja - 03 3.
|
|
||||||
Loveful
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 03 V nedogled (Ad Infinitum)
|
|
||||||
Slika 3
|
|
||||||
YuWrong
|
|
||||||
Offset
|
|
||||||
Tomaž Grom - Sam, za... - 01 T.G.V.S.
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 02 02
|
|
||||||
My Sweet.Com
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 15 Črna ovca
|
|
||||||
Action XXI
|
|
||||||
Koldunya
|
|
||||||
Love Emergency
|
|
||||||
Tomaž Grom - Sam, za... - 06 P.K.
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 02 02
|
|
||||||
Oholo! - Mnogobolje - 03 Shards II.
|
|
||||||
Dobro Jutro
|
|
||||||
Tilt - Tilt - 06 Ljubljana 3
|
|
||||||
Domen Gnezda - Misnomer II - 13 Misnomer 35
|
|
||||||
Mono Scarves - Ogledala za gledanje v preteklost
|
|
||||||
I Dreams of Others
|
|
||||||
Brazen Bull
|
|
||||||
Crisp Ursa Minor
|
|
||||||
Ultrascan
|
|
||||||
Loveful
|
|
||||||
Plastik Elastik
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 12 Battling For A Title - Za naslov se boriva
|
|
||||||
skull autopsy_var.2b-6
|
|
||||||
Samo Kutin - Plovilo - 05 Nič
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 13 Drobovje ust
|
|
||||||
Gravitacija
|
|
||||||
Scena Prologue
|
|
||||||
Domen Gnezda - Misnomer II - 13 Misnomer 35
|
|
||||||
Action VII
|
|
||||||
Reflex Action
|
|
||||||
BE CREEP - Burnt Dreams
|
|
||||||
Samo Kutin - Plovilo - 02 Bliže
|
|
||||||
Surprise! No Magic
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 11 Sound Out - Zvonka pavza
|
|
||||||
Dromon
|
|
||||||
Kampak
|
|
||||||
NTU
|
|
||||||
Soil Stone
|
|
||||||
Chorus 1 (SC)
|
|
||||||
Action IX
|
|
||||||
Action XVI
|
|
||||||
Somnambulism
|
|
||||||
Passage
|
|
||||||
Genetic Architecture Of The Evolutionary Selection
|
|
||||||
Nagauar
|
|
||||||
Tone Pavček & Tomaž Grom - Sonce in sončice po vsem svetu - 11 Înfiat din greşeală (Posvojen po pomoti)
|
|
||||||
Vid Drašler - Kramljanja - 05 5.
|
|
||||||
Keep An Eye On That Ice Cream
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 07 Cargo - Tovor
|
|
||||||
Spider Move
|
|
||||||
Mistif
|
|
||||||
Mono Scarves - Demoklejev meč in rivbiška palica dva v enem
|
|
||||||
Domen Gnezda - Misnomer II - 15 Misnomer 37
|
|
||||||
Deabody
|
|
||||||
Atlatl
|
|
||||||
Jošt Drašler - The Balloon Catcher - 05 Yellow Balloon
|
|
||||||
Genetska Modifikacija Organskih Celic
|
|
||||||
My Sweet.Com
|
|
||||||
Amyl Nitrite
|
|
||||||
My Dentist
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 14 Klic meduze
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 02 Spone (Chains)
|
|
||||||
Crossing The Rubicon
|
|
||||||
Magie de la Pleine Lune
|
|
||||||
prpld crossover_var.3b
|
|
||||||
Vinko Globokar - Dialog - 05 Dialog über Luft (1994)
|
|
||||||
De Sica
|
|
||||||
The Look
|
|
||||||
Echo-Recoil
|
|
||||||
Offset
|
|
||||||
Passage
|
|
||||||
Fluid Ruin
|
|
||||||
Vid Drašler - Kramljanja - 07 7.
|
|
||||||
Tomaž Grom - Sam, za... - 05 G.V.
|
|
||||||
Vorspiel fur Traurige Madchen
|
|
||||||
Domen Gnezda - Misnomer II - 10 Misnomer 32
|
|
||||||
Weakest Parts of Society
|
|
||||||
Parallax Division
|
|
||||||
coupdotexe (mapalma remix)
|
|
||||||
Preludium General Ensemble (Outtake)
|
|
||||||
Sub Persona IX
|
|
||||||
things i decided against
|
|
||||||
Action XV
|
|
||||||
Samo Kutin - Plovilo - 02 Bliže
|
|
||||||
Vrtnice
|
|
||||||
Mistif
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 05 Goldfish - Zlata ribica
|
|
||||||
Altobar
|
|
||||||
Atlatl
|
|
||||||
When Ballon And Door Collide
|
|
||||||
Action XIX
|
|
||||||
Vid Drašler - Kramljanja - 01 1.
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 06 Planota
|
|
||||||
The Stabbing Party
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 03 03
|
|
||||||
Pudl
|
|
||||||
Cyborg Not Cyborg
|
|
||||||
Spurt
|
|
||||||
Passage
|
|
||||||
Cyborg Not Cyborg
|
|
||||||
Jošt Drašler - The Balloon Catcher - 01 Blue Balloon
|
|
||||||
None
|
|
||||||
Samo Kutin - Plovilo - 02 Bliže
|
|
||||||
Vrtnice
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 10 10
|
|
||||||
Sun Gong Moon Song
|
|
||||||
Somnambulism
|
|
||||||
Vorspiel fur Traurige Madchen
|
|
||||||
Dolos
|
|
||||||
Afternoon: Panovec
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 07 07
|
|
||||||
Pear of Anguish
|
|
||||||
Tomaž Grom & Seijiro Murayama - Nepretrganost - 01 Ena.
|
|
||||||
Sense of nonsense
|
|
||||||
Offset V2
|
|
||||||
Vid Drašler - Kramljanja - 01 1.
|
|
||||||
Action III
|
|
||||||
Ambinet
|
|
||||||
Dnevnik
|
|
||||||
5000000000 YRS
|
|
||||||
Blade Runes
|
|
||||||
YuWrong
|
|
||||||
postcell
|
|
||||||
Color of Ice
|
|
||||||
anticipation_var.1-1
|
|
||||||
Tomaž Grom - Sam, za... - 07 S.M.
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 08 08
|
|
||||||
Mercurius & the Ram
|
|
||||||
Head Storm
|
|
||||||
Tone Pavček & Tomaž Grom - Sonce in sončice po vsem svetu - 10 Ninulla Çapkanёve (Čenčačeva uspavanka)
|
|
||||||
Smaidoša Mēnesnīca
|
|
||||||
Growing Destruction
|
|
||||||
Summer Peach Girl
|
|
||||||
chan debris_var.2a
|
|
||||||
Inside Magog (Burp remix)
|
|
||||||
Jošt Drašler - The Balloon Catcher - 06 Green Balloon
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 02 02
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 10 10
|
|
||||||
Gfuel
|
|
||||||
Action IV
|
|
||||||
Sterne Frau
|
|
||||||
Cyborg Not Cyborg
|
|
||||||
Tilt - Tilt - 07 Ljubljana 4
|
|
||||||
Scena Prologue
|
|
||||||
Benocci 2004
|
|
||||||
Samo Kutin - Plovilo - 06 A
|
|
||||||
Oholo! - Mnogobolje - 03 Shards II.
|
|
||||||
Outro
|
|
||||||
Magie de la Pleine Lune
|
|
||||||
wudang_var.3-7
|
|
||||||
Whale Ft
|
|
||||||
Surprise! No Magic
|
|
||||||
一点一滴
|
|
||||||
Fluid Ruin
|
|
||||||
Naval Cry
|
|
||||||
Lussid
|
|
||||||
Vinko Globokar - Splitting - 07 Vinko Globokar- Dialogue about water, for acoustic and electric guitar (1994)
|
|
||||||
Tomaž Grom - Sam, za... - 09 N.N.
|
|
||||||
Weakest Parts of Society
|
|
||||||
unum
|
|
||||||
Action XVII
|
|
||||||
Brazen Bull
|
|
||||||
Sun Gong Moon Song
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 02 Feeding The Distance Between Us
|
|
||||||
Of Blood
|
|
||||||
The Oppressed 1 (Outtake)
|
|
||||||
Pilsētas Likums
|
|
||||||
Modem
|
|
||||||
I.F. II Metal Rach
|
|
||||||
KIURIKI - Pudl
|
|
||||||
Oholo! - Mnogobolje - 03 Shards II.
|
|
||||||
Slika 1
|
|
||||||
02 Confined Movement- B
|
|
||||||
shifu_var.3a-8
|
|
||||||
Regeneracijska Sonda
|
|
||||||
Loveful
|
|
||||||
Asphyxia
|
|
||||||
De Sica
|
|
||||||
Soloveikia Moj
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 06 06
|
|
||||||
When Ballon And Door Collide
|
|
||||||
Domen Gnezda - Misnomer II - 13 Misnomer 35
|
|
||||||
Peter Ablinger - Splitting - 06 Das Buch der Gesänge, no. 88 (Bus ride)
|
|
||||||
Enslaved Population (DJ Surgeon remix)
|
|
||||||
conversation suppresed
|
|
||||||
Harlequin
|
|
||||||
coupdotexe
|
|
||||||
Explored
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 05 Čačkarije (Scribbles)
|
|
||||||
The Oppressed 2 (SC)
|
|
||||||
Tomaž Grom & Seijiro Murayama - Nepretrganost - 01 Ena.
|
|
||||||
1disrupt3violence1monopoly2
|
|
||||||
Tomaž Grom - Sam, za... - 04 L.Z.
|
|
||||||
Misoneism
|
|
||||||
wudang_var.3-7
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 10 Knitting Traps
|
|
||||||
Stale Futures
|
|
||||||
Action I
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 06 06
|
|
||||||
Speshlafer
|
|
||||||
Domen Gnezda - Misnomer II - 03 Misnomer 25
|
|
||||||
Crossing The Rubicon
|
|
||||||
Canote
|
|
||||||
Action III
|
|
||||||
Deabody
|
|
||||||
Palimpsest V2
|
|
||||||
chan debris_var.2b
|
|
||||||
Oholo! - Mnogobolje - 03 Shards II.
|
|
||||||
Zink
|
|
||||||
things i decided against
|
|
||||||
Surprise! No Magic
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 11 Pesem monologa
|
|
||||||
Sirene
|
|
||||||
S.L.C.
|
|
||||||
Samo Kutin - Plovilo - 07 Sejalci
|
|
||||||
Multiply feat. N'toko
|
|
||||||
Sub Persona V
|
|
||||||
aching
|
|
||||||
BE CREEP - LIVE
|
|
||||||
Todorci2
|
|
||||||
Metrognome
|
|
||||||
Intro
|
|
||||||
Nost
|
|
||||||
Vinko Globokar - Splitting - 07 Vinko Globokar- Dialogue about water, for acoustic and electric guitar (1994)
|
|
||||||
Mercurius & the Ram
|
|
||||||
Tilt - Tilt - 06 Ljubljana 3
|
|
||||||
Trials
|
|
||||||
Tone Pavček & Tomaž Grom - Sonce in sončice po vsem svetu - 02 Sončna idila
|
|
||||||
a6
|
|
||||||
H Light (Wodan remix)
|
|
||||||
Land
|
|
||||||
Her Boat
|
|
||||||
Sub Persona V
|
|
||||||
Strand Looper
|
|
||||||
Inchoate Crimes
|
|
||||||
Pool Reflection
|
|
||||||
Untold Truths
|
|
||||||
Tilt - Tilt - 05 Ljubljana 2
|
|
||||||
The Mother And Chorus (Act II)
|
|
||||||
Vid Drašler - Kramljanja - 07 7.
|
|
||||||
Regeneracijska Sonda
|
|
||||||
Apropos
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 02 Spone (Chains)
|
|
||||||
Sunsunsun
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 05 Hammaröga
|
|
||||||
Dolos
|
|
||||||
prpld crossover_var.3b
|
|
||||||
Vinko Globokar - Splitting - 07 Vinko Globokar- Dialogue about water, for acoustic and electric guitar (1994)
|
|
||||||
Cyberpunk Tendencies
|
|
||||||
Nothing Concealed
|
Nothing Concealed
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 05 05
|
Action XV
|
||||||
Sub Persona IX
|
Leather Wings
|
||||||
Tomaž Grom - Sam, za... - 05 G.V.
|
Loss of Consciousness
|
||||||
My Sweet.Com
|
Strenuous Effort
|
||||||
coupdotexe (mapalma remix)
|
|
||||||
Hollogramma
|
|
||||||
Kampak
|
|
||||||
Domen Gnezda - Misnomer II - 17 Misnomer 39
|
|
||||||
Sub Persona X
|
|
||||||
postcell
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 09 Though Ashtray (Pepelnik), I Still Like To Read Your Poems
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 06 Peš (On Foot)
|
|
||||||
a3
|
|
||||||
Paperwork pt.3
|
|
||||||
Action IV
|
|
||||||
won't work for free anymore
|
|
||||||
Side A / KIKIRIKI - Rosy Light
|
|
||||||
Sweet Sandy
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 06 Planota
|
|
||||||
Finka
|
|
||||||
Vertex
|
|
||||||
Multiply feat. N'toko
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 12 Zataknjeno za zobmi
|
|
||||||
KIURIKI - Pudl
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 05 05
|
|
||||||
Tilt - Tilt - 04 Ljubljana 1
|
|
||||||
Zulu
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 03 03
|
|
||||||
Slika 5
|
|
||||||
Human Body Game
|
|
||||||
Infinite values
|
|
||||||
Koldunya
|
|
||||||
Untitled
|
|
||||||
The twelve and the dead
|
|
||||||
Land
|
|
||||||
Mono Scarves - Bralni stroj Korenje
|
|
||||||
Sub Persona V
|
|
||||||
Chorus 1 (SC)
|
|
||||||
My Dentist
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 02 Spone (Chains)
|
|
||||||
postcell
|
|
||||||
Hollogramma
|
|
||||||
Waiting for Distor
|
|
||||||
Untold Truths
|
|
||||||
Crushing Trauma
|
|
||||||
prpld crossover_var.3b
|
|
||||||
Entropy
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 12 Battling For A Title - Za naslov se boriva
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 06 Peš (On Foot)
|
|
||||||
Radikal
|
|
||||||
Arboreal
|
|
||||||
Samo Kutin - Plovilo - 05 Nič
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 02 02
|
|
||||||
Genome Autism Pt. 1
|
|
||||||
Moni Harm
|
|
||||||
Lenticular
|
|
||||||
coupdotexe (mapalma remix)
|
|
||||||
Brazen Bull
|
|
||||||
a3
|
|
||||||
Divine
|
|
||||||
Vertex
|
|
||||||
Side B / NIHILISTIC FRONT - Balkan Nihilism
|
|
||||||
Strand Looper
|
|
||||||
Nebulae Tree
|
|
||||||
Multiply feat. N'toko
|
|
||||||
02 Confined Movement- B
|
|
||||||
Sotto La Pelle
|
|
||||||
a5
|
|
||||||
Laszlo
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 11 11
|
|
||||||
Amyl Nitrite
|
|
||||||
Oholo! - Mnogobolje - 03 Shards II.
|
|
||||||
Osoje 2k5
|
|
||||||
Heretics Fork
|
|
||||||
biking, i look back
|
|
||||||
make this title easy to remember
|
|
||||||
Enslaved Population (DJ Surgeon remix)
|
|
||||||
Sub Persona VI
|
|
||||||
Cyborg Not Cyborg
|
|
||||||
What ?
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 01 Uncaged (take 2)
|
|
||||||
Regeneracijska Sonda
|
|
||||||
Deabody
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 01 Slikar (Painter)
|
|
||||||
Benocci 2004
|
|
||||||
Untold Truths
|
|
||||||
Hydrozone
|
|
||||||
Action XIX
|
|
||||||
Sub Persona I
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 01 Each In His Own Municipality
|
|
||||||
Smaidoša Mēnesnīca
|
|
||||||
Juice 10
|
|
||||||
Vid Drašler - Kramljanja - 06 6.
|
|
||||||
Nost
|
|
||||||
Vrtnice
|
|
||||||
Untold Truths
|
|
||||||
Paperwork pt.3
|
|
||||||
Hydrozone
|
|
||||||
Action XIX
|
|
||||||
+ [Excerpt]
|
|
||||||
Carve4
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 15 Črna ovca
|
|
||||||
stepbystep
|
|
||||||
Jošt Drašler - The Balloon Catcher - 04 Bouncing Balloon
|
|
||||||
Crossing The Rubicon
|
|
||||||
Inchoate Crimes
|
|
||||||
The navigators
|
|
||||||
Tomaž Grom & Seijiro Murayama - Nepretrganost - 05 Pet.
|
|
||||||
TiTiTi (Jure Boršič, Jošt Drašler, Vid Drašler) - Štafelaj - 05 Čačkarije (Scribbles)
|
|
||||||
Action IV
|
|
||||||
Explored
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 04 Orans
|
|
||||||
Nebulae Tree
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 01 01
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 05 Goldfish - Zlata ribica
|
|
||||||
Amena
|
|
||||||
debris of motus_var.1
|
|
||||||
Moni Harm
|
|
||||||
Vertex
|
|
||||||
Action IX
|
|
||||||
一点一滴
|
|
||||||
Slika 3
|
|
||||||
Trojnik (Cene Resnik, Tomaž Grom, Vid Drašler) - Moje uho ima ostre robove - 07 07
|
|
||||||
In His Prison (Outtake)
|
|
||||||
debris of motus_var.1b
|
|
||||||
Domen Gnezda - Misnomer II - 02 Misnomer 24
|
|
||||||
Samo Kutin - Plovilo - 08 Lišaji
|
|
||||||
Liqweed
|
|
||||||
The navigators
|
|
||||||
Seven Day Pill Box
|
|
||||||
Summer Peach Girl
|
|
||||||
Impersonal Again
|
|
||||||
Domen Gnezda - Misnomer II - 06 Misnomer 28
|
|
||||||
Tilt - Tilt - 01 Alicante 1
|
|
||||||
Jošt Drašler - The Balloon Catcher - 05 Yellow Balloon
|
|
||||||
Vid Drašler - Kramljanja - 07 7.
|
|
||||||
Hanged Mans Paradox
|
|
||||||
Madmen
|
|
||||||
a4
|
|
||||||
Finka
|
|
||||||
Naval Cry
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 08 Almost The Same
|
|
||||||
Action IX
|
|
||||||
Nagual
|
|
||||||
Je Šel Brat S Sestro
|
|
||||||
Cyberpunk Tendencies
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 06 Cinema Ear - - Kino uho
|
|
||||||
Matej Bonin - Gymnastics of non-sense II - 04 Part IV
|
|
||||||
Tomaž Grom - Sam, za... - 01 T.G.V.S.
|
|
||||||
Jewels
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 03 Svete gore
|
|
||||||
Jean-Luc Guionnet & Samo Kutin - Kopaš - 05 05
|
|
||||||
won't work for free anymore
|
|
||||||
death rattle_var.2-4
|
|
||||||
Gravitacija
|
|
||||||
Zulu
|
|
||||||
Human Body Game
|
|
||||||
you think you're so much better
|
|
||||||
ethera (dome)
|
|
||||||
Samo Kutin - Plovilo - 01 Platno
|
|
||||||
The twelve and the dead
|
|
||||||
Sweet Sandy
|
|
||||||
Dobro Jutro
|
|
||||||
Atlatl
|
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 02 Fishing In Siphon
|
|
||||||
Zlatko Kaučič, Tomaž Grom - The Ear Is The Shadow Of The Eye - 12 Battling For A Title - Za naslov se boriva
|
|
||||||
Offset
|
|
||||||
Growing Destruction
|
|
||||||
Head Storm
|
|
||||||
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 14 Klic meduze
|
Irena Z. Tomažin - Cmok v grlu - Lump In The Throat - 14 Klic meduze
|
||||||
Samo Kutin and Martin Küchen - Stutter And Strike - 05 Hammaröga
|
Hunahpu & Xbalanque
|
||||||
Radikal
|
decrepitation_var.1a-2
|
||||||
whtend leftover_var.3
|
Speshlafer
|
||||||
Atlatl
|
PSH
|
||||||
a2
|
|
||||||
Matej Bonin - Gymnastics of non-sense II - 05 Part V
|
|
||||||
Zlatko Kaučič, Tomaž Grom - Torn Memories Of Folklore - Raztrgana folklora spomina - 08 Almost The Same
|
|
||||||
|
|
Loading…
Reference in New Issue