Compare commits

...
Sign in to create a new pull request.

25 commits

Author SHA1 Message Date
sakrecoer
67fae774c8 fix time 2025-10-03 16:02:46 +02:00
sakrecoer
3329dc9171 add isocyantes 2025-10-03 14:50:49 +02:00
sakrecoer
d4cc891c23 nah... it was half assed 2025-08-16 13:59:43 +02:00
sakrecoer
1a5013f66b why no request right on the page? 2025-08-16 13:41:45 +02:00
05318debde Update themes/basspistol2025/layouts/partials/body/now.html 2025-07-24 18:47:46 +02:00
b686951ddb don't max out radio image 2025-07-16 14:10:53 +02:00
31843789cf fix borked script 2025-07-16 14:07:12 +02:00
sakrecoer
3a721ebf69 directlink is better 2025-07-16 12:34:51 +02:00
sakrecoer
9128399948 blank them links 2025-07-16 10:47:06 +02:00
sakrecoer
73aa49f7c2 kaboom 2025-07-16 10:45:43 +02:00
sakrecoer
fb55f64cf1 fuggen homegrown maddafaggin radio shiet
comming soon, on a URL near you
2025-07-16 01:06:58 +02:00
sakrecoer
e1ebc2fc18 no more html in titles 2025-07-11 14:12:00 +02:00
sakrecoer
b0b50a3ce3 even better with _blank 2025-07-11 14:09:12 +02:00
sakrecoer
f1f102ee74 links are good 2025-07-11 14:08:21 +02:00
sakrecoer
60cc0bc9b8 get donations going 2025-07-11 14:06:38 +02:00
369a690906 fix datalabel 2025-07-09 08:48:52 +02:00
b98fb46629 typo 2025-07-07 19:00:30 +02:00
49b910a9e8 fix timezone 2025-07-06 20:37:14 +02:00
sakrecoer
c0bd932d57 almost there, but good enough for now 2025-07-03 23:56:49 +02:00
sakrecoer
cd3c9fe6e4 style forms 2025-07-03 22:50:41 +02:00
sakrecoer
29ba7a4348 cleaning up this madness 2025-07-03 22:40:43 +02:00
sakrecoer
276eeb12cd lil' style shit 2025-07-03 14:04:26 +02:00
sakrecoer
43d005e79a make agenda follow the style 2025-07-03 14:01:09 +02:00
sakrecoer
9c4a6960d5 Merge branch 'main' into gancio-fix 2025-07-03 13:08:08 +02:00
sakrecoer
a44d846c65 minor fixes 2025-07-03 13:07:06 +02:00
16 changed files with 579 additions and 637 deletions

View file

@ -0,0 +1,28 @@
---
title: "Isocyanates by eardiod"
date: 2025-10-03T13:59:59+00:00
draft: false
image:
url: "/2025/images/isocyanates.webp"
alt: "Abstract Image with geometric patterns, in red and orange tones"
license: "CC-BY-NC-ND 4.0"
credits:
name: "eardiod"
url: "https://eardiod.basspistol.com/isocyanates/"
cta:
url: https://eardiod.basspistol.com/isocyanates/
label: "Get this 💎"
release: true
catalogue: "#BPIST-029"
license: CC-BY-NC-ND 4.0
recordlabel: "Basspistol"
---
Straight from Mongolian bogs comes a smell and its not a faint whiff of morning freshness. Its a dense, stout aroma of a dump electro-organic sonic mischief.
Youre not [wroong](https://s.basspistol.org/@wroong), its [eardiod](https://nosotros.app/nprofile1qqsrfk4gzq49g8gac4f7psmfvtkhr758gjkxeasc7pk8vjshr35ekjgy7dg7m) himself with his pumping silly rhythms and lush, saturated crescendos which are able to induce synesthesia after just a few bars.
The skill he possesses leaps beyond obtainable right into undiscoverable. Who knows how he was able to land his short hands on this inhuman knowledge? But the phenomenal result of it being applied will not leave you unchanged.
With [Isocyanates](https://eardiod.basspistol.com/isocyanates/), eardiod proposes a 6 tracks EP of gritty techno. Organic and unexpected, most of eardiod's work is sequenced on the go, by hand on a setup mixing hardware boxes and software synthesizers.
Echoing from the remnants of Stockholm's underground scene, this release takes you on a trip to basement-raves, where lasers pierce the smoke.

View file

@ -1,11 +1,22 @@
--- ---
title: "Kybernetik LP by Revengeday" title: "Kybernetik LP by Revengeday"
date: 2025-06-29T20:48:32+02:00 date: 2025-06-29T23:59:59+02:00
draft: true draft: false
image: /images/kybernteik.webp image:
cta: https://shop.basspistol.com/bpist-023 url: "/2025/images/kybernetik.webp"
catalogue: #BPIST-023 alt: "A cartoon portrait in black and green of a woman looking upwards in the void. She has dark hair and bright eyes. Her make-up gives her a look that is very cyber. Bellow her the name of the artist and the title of the record separated by the record-label logos"
license: license: "CC-BY-NC-ND 4.0"
credits:
name: "Ramses Revengeday"
url: "https://revenge.day/"
cta:
url: https://shop.basspistol.com/bpist-023
label: "Get this 💎"
release: true
catalogue: "#BPIST-023"
license: CC-BY-NC-ND 4.0
recordlabel: "Basspistol & [OBEY THE SYSTEM](https://obeythesystem.com/) / [CORTEX IMPLANT](https://corteximplant.com/about)"
--- ---
In collaboration with the houses of [Cortex Implant](https://corteximplant.com/about) and [Obey The System](https://obeythesystem.com/), Basspistol is immensely proud to present Kybernetik LP by Revengeday.
In collaboration with the houses of Cortex Implant and Obey The System, The depth of the darkness and the attention to detail with which Revengeday manages to infuse his music is beyond written word. The work of a world builder, showing a glimpse of what 20 minutes in the future look like, but seen from 30 years ahead. Take a trip from Cairo to Berlin, via Tokyo and Chirak.

View file

@ -3,8 +3,16 @@ title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }} date: {{ .Date }}
draft: true draft: true
image: image:
url: ""
alt: ""
credits:
name: ""
url: ""
cta: cta:
catalogue: url:
license: label: ""
release: false
catalogue: ""
license: ""
recordlabel: ""
--- ---

View file

@ -117,40 +117,71 @@ footer {
flex-wrap: wrap; flex-wrap: wrap;
padding: 0; padding: 0;
font-size: .5em;
overflow-x: hidden; overflow-x: hidden;
} }
section { section {
padding: 10px;
display: flex;
flex-wrap: wrap;
padding: 16px;
} }
a { a {
color: orange; color: white;
} }
h1, h2, h3, h4, h5, h6, h7, h8 { h1, h2, h3 {
font-family: Outward, Space-Grotesk, 'Arial', 'Helvetica', sans-serif; font-family: Outward, Space-Grotesk, 'Arial', 'Helvetica', sans-serif;
} }
h1 {
font-family: Outward, 'Arial', 'Helvetica', sans-serif; h2 {
font-size: 48em; font-size: 10em;
font-weight: 100;
font-style: italic;
/* letter-spacing: -0.1em;*/
line-height: .75em;
rotate: -14deg;
margin: 50px 0 0 10px;
padding: 0;
text-align: center;
}
strong, b {
font-weight: bold;
} }
h4 {
text-transform: uppercase;
font-size: 1em;
}
p {
font-size: .75em;
}
strong, b {
font-weight: bold;
color: white;
}
article {
margin: 2px 2px;
flex: 1 1 300px;
}
figcaption > h4 {
font-size: .75em;
}
figcaption > p {
font-size: .5em;
}
time {
color: white;
font-size: .5em;
}
.news > h4 {
font-size: .75em;
}
.news > p {
font-size: .5em;
}
.section-headers { .section-headers {
margin: 2px;
border-radius: 100px; border-radius: 100px;
padding: 80px 20px; padding: 80px 20px;
border-style: double; border-style: double;
@ -162,6 +193,14 @@ strong, b {
background-position: center center; background-position: center center;
background-repeat: no-repeat; background-repeat: no-repeat;
h2, h4, p {
margin: 20px 0;
flex: 1 1 100%;
}
p {
max-width: 50%;
}
} }
.section-footers { .section-footers {
@ -171,14 +210,13 @@ strong, b {
border-width: 10px; border-width: 10px;
flex: 1 1 100% !important; flex: 1 1 100% !important;
border-radius: 0 0 100px 100px; border-radius: 0 0 100px 100px;
margin: 2px;
} }
.border { .border {
border-style: double; border-style: double;
border-color: purple; border-color: purple;
border-width: 10px; border-width: 10px;
margin: 4px 0 4px 0;
flex: 1 1 300px; flex: 1 1 300px;
padding: 80px 20px; padding: 80px 20px;
} }
@ -189,15 +227,7 @@ strong, b {
line-height: 5em; line-height: 5em;
border-radius: 300px; border-radius: 300px;
text-decoration: none; text-decoration: none;
} text-transform: uppercase;
/* Screen size root */
@media screen and (max-width: 1024px) {
h1 {
font-size: 12em;
}
} }
/* Sections Begin */ /* Sections Begin */
@ -227,36 +257,276 @@ strong, b {
font-family: inherit; font-family: inherit;
} }
} }
#hero:hover {
transition: all 2s linear; /* NOW */
#now {
.now {
display: flex;
flex-wrap: wrap;
flex: 1 1 100%;
background-position: center center;
background-size: cover;
margin: 2px;
}
.support {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
h4, p {
flex: 1 1 100%;
}
p {
font-size: .75em;
}
img {
margin: 20px 0;
}
}
figure, div {
flex: 1 1 300px;
}
figure {
margin-right: 20px;
}
figure > img {
margin-bottom: 20px;
}
}
/* NEWSLETTER */
.inf-form > div {
background-color: black;
padding: 0;
}
.inf-form > div > h4 {
color: orange !important;
font-size: 1.5em;
}
.inf-form > div > span {
color: orange;
font-size: 1em;
}
.inf-rgpd {
font-size: .5em;
color: orange;
}
.inf-form > div {
background-color: black;
padding: 0;
}
.inf-input > input {
color: orange;
background-color: black;
border: 1px solid orange;
} }
/* DISCOGRAPHY and GANCIO */
#discog, #gancio {
/* End Sections */ display: flex;
flex-wrap: wrap;
justify-content: space-between;
/* FORMS */
#newsletter { a {
background-color: #000; text-decoration: none;
}
.section-headers {
margin: 2px 2px;
}
article {
margin: 2px;
}
figure {
padding: 4px;
margin: auto;
border-style: double;
border-color: purple;
border-width: 10px;
img {
width: 100%;
object-fit: cover;
height: 200px;
}
}
figcaption {
height: 300px;
padding: 20px;
z-index: 100;
overflow-y: hidden;
}
}
/* RADIO */
#radio {
.radioplayer {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
#recordPlayer {
flex: 1 1 300px;
background-size: cover;
background-position: center center;
margin-top:40px;
img {
border-radius:7px;
transition: all linear 1s;
width: 100%;
height: auto;
object-fit: cover;
max-width: 600px;
max-height: 600px;
}
}
.legend-container {
align-content: center;
display: flex;
flex-wrap: wrap;
flex: 1 1 300px;
}
.spinner {
border-radius: 2000px !important;
animation: rotate 10s linear infinite;
border-style: double;
border-color: purple;
border-width: 10px;
}
.stop {
animation-play-state: paused;
}
.legend {
width: 100%;
}
.border {
margin: 2px;
}
audio {
width: 100%;
}
#myBtn {
background: transparent;
border: none;
padding: 0; padding: 0;
margin: 0; margin: 0;
font-size: 3em;
}
}
@media screen and (max-width: 720px) {
form.inf-form > div { footer {
background-color: #000; font-size: .9em;
}
h2 {
font-size: 8em;
}
h4 {
font-size: 1.25
}
p {
font-size: 1em;
max-width: unset !important;
strong {
font-size: 1.5em;
} }
} }
.inf-content {
background-color: #000; figcaption > h4 {
font-size: 1em;
} }
.inf-input .inf-input-text {}
.inf-rgpd {} figcaption > p {
.inf-submit {} font-size: .75em;
}
time {
color: white;
font-size: .75em;
}
.news > h4 {
font-size: 1em;
}
.news > p {
font-size: .75em;
}
.inf-rgpd {
font-size: .8em;
}
#now {
figure {
margin-right: 0px;
margin-bottom: 20px;
}
.support {
h4 {
font-size: 1em;
}
p {
font-size: .75em;
}
}
}
#radio {
#myBtn {
font-size: 4em;
}
}
}
/* ANIMATIONS */
@keyframes rotate {
0% {
transform: rotate(0deg)
}
100% {
transform: rotate(360deg)
}
}

View file

@ -1,104 +1,18 @@
<style>
/* Discographys */
#discog {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
a {
text-decoration: none;
}
article {
margin:2px;
flex: 1 1 300px;
}
h2 {
font-size: 12em;
/* text-transform: uppercase;*/
line-height: 1em;
flex: 1 1 100%;
}
p {
flex: 1 1 100%;
font-size: .6em;
line-height: 1.75em;
max-width: 33vw;
strong {
font-size: 1.25em;
}
}
@media screen and (max-width: 1024px) {
h2 {
font-size: 8em;
}
p {
font-size: .9em;
max-width: unset;
}
strong {
font-size: 1.5em;
}
}
figure {
padding: 4px;
margin: auto;
border-style: double;
border-color: purple;
border-width: 10px;
img {
width: 100%;
object-fit: cover;
max-height: 300px;
}
}
figcaption {
font-family: Sigoil, 'Arial', 'Helvetica', sans-serif;
background-color: black;
color: white;
height: 286px;
padding: 20px;
margin-bottom: 4px;
border-color: purple;
border-width: 10px;
color: orange;
z-index: 100;
position: relative;
text-decoration: none;
line-height: 1.25em;
overflow-y: hidden;
}
}
</style>
{{ $data := dict }} {{ $data := dict }}
{{ $url := "https://shop.basspistol.com/podcast.rss" }} {{ $url := "https://shop.basspistol.com/podcast.rss" }}
<section id="discog"> <section id="discog">
<article class="section-headers" style="background-image: url(/2025/images/vinyl.webp);"> <div class="section-headers" style="background-image: url(/2025/images/vinyl.webp);">
<h2>Discography</h2> <h2>Discography</h2>
<p><strong>The sound of freedom</strong><br /> <h4>𝕿𝖍𝖊 𝕾𝖔𝖚𝖓𝖉 𝖔𝖋 𝕱𝖗𝖊𝖊𝖉𝖔𝖒</h4>
Basspistol's discography is a non-possessive aggregation of cuts recoreded by independent musicians. Getting your music from here implies 100% of your support being channeled straight to the artist. (Minus whatever fees charged by the monetization service they leverage.) <p>Basspistol's discography is a non-possessive aggregation of cuts recoreded by independent musicians. Getting your music from here implies 100% of your support being channeled straight to the artist. (Minus whatever fees charged by the monetization service they leverage.)
<br /><br /> </p>
The bellow selection is shuffled every 30 minutes. Anything pikcing your curiosity? The random gods may just have something to tell you... <p>The bellow selection is shuffled every 30 minutes. Is anything picking your curiosity? The random gods may just have something to tell you... Check out the Tienda for more.</p>
<br /><br />
<a href="https://shop.basspistol.com" style="text-decoration: underline;">Check out the Tienda for more information</a>
</p> </p>
<a class="button" href="https://shop.basspistol.com">𝕭𝖆𝖘𝖘𝖕𝖎𝖘𝖙𝖔𝖑 𝕿𝖎𝖊𝖓𝖉𝖆 🛖</a> <a class="button" href="https://shop.basspistol.com">𝕭𝖆𝖘𝖘𝖕𝖎𝖘𝖙𝖔𝖑 𝕿𝖎𝖊𝖓𝖉𝖆 🛖</a>
</article> </div>
{{ with try (resources.GetRemote $url) }} {{ with try (resources.GetRemote $url) }}
@ -113,7 +27,7 @@ justify-content: space-between;
{{ with $data.channel.item }} {{ with $data.channel.item }}
{{ range . | shuffle | first 5 }} {{ range . | shuffle | first 4 }}
<article> <article>
<a href="{{ .link }}" target="_blank"> <a href="{{ .link }}" target="_blank">
@ -123,8 +37,7 @@ justify-content: space-between;
<img src="{{ . }}" /> <img src="{{ . }}" />
{{ end }} {{ end }}
<figcaption> <figcaption>
<p><strong>{{ .title }}</strong></p> <h4>{{ .title | safeHTML }}</h4>
<p>&nbsp;</p>
<p>{{ .description | transform.Plainify | safeHTML | truncate 120 }}</p> <p>{{ .description | transform.Plainify | safeHTML | truncate 120 }}</p>
</figcaption> </figcaption>

View file

@ -1,117 +1,10 @@
<style>
#gancio {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
a {
}
article {
margin:2px;
flex: 1 1 300px;
}
h2 {
font-size: 12em;
/* text-transform: uppercase;*/
line-height: 1em;
flex: 1 1 100%;
}
p {
flex: 1 1 100%;
font-size: .6em;
line-height: 1.75em;
max-width: 33vw;
strong {
font-size: 1.25em;
}
}
@media screen and (max-width: 1024px) {
h2 {
font-size: 8em;
}
p {
font-size: .9em;
max-width: unset;
}
strong {
font-size: 1.5em;
}
}
figure {
padding: 4px;
margin: auto;
border-style: double;
border-color: purple;
border-width: 10px;
img {
width: 100%;
object-fit: cover;
border-style: double;
border-color: purple;
border-width: 10px;
max-height: 300px;
}
}
figcaption {
font-family: Outward, 'Arial', 'Helvetica', sans-serif;
font-size: 9em;
line-height: 0.3em;
font-weight: bold;
/* font-style: italic;*/
background-color: black;
color: white;
padding: 20px;
text-align: center;
border-style: double;
border-color: purple;
border-width: 10px;
color: orange;
z-index: 100;
position: relative;
text-decoration: none;
margin-bottom: 4px;
text-transform: lowercase;
}
@media screen and (max-width: 1024px) {
figcaption {
font-size: 7em;
line-height: 0.35em;
}
}
#gancioEvents.svelte-1ap5437 {
font-family: inherit !important;
}
}
</style>
<section id="gancio"> <section id="gancio">
<article class="section-headers"> <div class="section-headers">
<h2>Agenda</h2> <h2>Agenda</h2>
<p><strong>Outnernational events</strong> <br /> <h4>𝕺𝖚𝖙𝖊𝖗𝖓𝖆𝖙𝖎𝖔𝖓𝖆𝖑 𝕰𝖛𝖊𝖓𝖙𝖘</h4>
Through the power of federation, we aggregate event data from the deep-web to keep you in the loop of what's happening below the radars. <p>Through the power of federation, we aggregate event data from the deep-web to keep you in the loop of what's happening below the radars.</p>
<br /><br /> <p>Want your event featured here? <a href="https://do.basspistol.org/add" target="_blank" style="text-decoration: underline;">Head over to this page</a>. No account required.</p>
Want your event featured here? <a href="https://do.basspistol.org/add" target="_blank">Head over to this page</a>. No account required.</p> <a class="button" href="https://do.basspistol.org/">Full agenda 🗓️</a>
</article>
<div >
<script src="https://do.basspistol.org/gancio-events.es.js"></script>
<gancio-events baseurl="https://do.basspistol.org" collection="Music" show_recurrent="true" maxlength=7 sidebar="false" theme="dark"></gancio-events>
</div> </div>
{{ $data := dict }} {{ $data := dict }}
@ -128,23 +21,29 @@
{{ end }} {{ end }}
{{ with $data }} {{ with $data }}
{{ range . | first 7 }} {{ range . | first 4 }}
{{ .start_datetime | int | dateFormat "2006-01-02 15:04 CET" }}<br />
{{ .title }}<br /> <article>
@{{ .place.name }}<br />
{{ .place.address }}<br /> <figure>
{{ range .tags }} <a href="https://do.basspistol.org/event/{{ .slug }}" target="_blank">{{ range .media }}<img src="https://do.basspistol.org/media/thumb/{{ .url }}" />{{ end }}</a>
#{{ . }} <figcaption>
<h4>{{ .title }}</h4>
<time datetime="{{ .start_datetime | int | dateFormat "2006-01-02T15:04" }}">{{ .start_datetime | int | dateFormat "2006-01-02 15:04 UTC" }}</time>
<p><b>Venue:</b> {{ .place.name }}</p>
<p><b>Address: </b>{{ .place.address }}</p>
<!-- <p>{{ range .tags }}#{{ . }} {{ end }}</p>-->
</figcaption>
</figure>
</article>
{{ end }}<br />
{{ range .media }}
<img src="https://do.basspistol.org/media/thumb/{{ .url }}" />
{{ end }} {{ end }}
<br /><br /> <!-- <pre>{{ debug.Dump $data }}</pre>-->
{{ end }}
<pre>{{ debug.Dump $data }}</pre>
{{ end }} {{ end }}
<article class="section-footers"></article> <div class="section-footers"></div>
</section> </section>

View file

@ -84,13 +84,13 @@
</style> </style>
<section id="gang"> <section id="gang">
<article class="section-headers"> <div class="section-headers">
<h2>Gung</h2> <h2>Gung</h2>
<p><strong>Link Root</strong> <h4>𝕷𝖎𝖓𝖐 𝕽𝖔𝖔𝖙</h4>
</br> <p>The Basspistol network is composed of Powerful Syndicated Artists and Groups. These links are presented to you, ordered by the random god. </p><p>Follow the white Rabbit, Neo!</p>
The Basspistol network is composed of Powerful Syndicated Artists and Groups. These links are presented to you, ordered by the random god. <br />Follow the white Rabbit, Neo!
</p> <a class="button" href="https://matrix.to/#/#hq:basspistol.org">Come say Hi! 🐇</a>
</article> </div>
{{/* prebuild/layouts/index.html */}} {{/* prebuild/layouts/index.html */}}
{{ $url := "https://s.basspistol.org/api/pinned-users" }} {{ $url := "https://s.basspistol.org/api/pinned-users" }}
@ -114,10 +114,7 @@
<img src="{{ .avatarUrl }}" /> <img src="{{ .avatarUrl }}" />
<figcaption> <figcaption>
<p><strong>{{ .username }}</strong> <h4>{{ .username }}</h4>
<br />
</p>
</figcaption> </figcaption>
</figure> </figure>
</a> </a>

View file

@ -1,95 +1,48 @@
<style>
/* Discographys */
#now {
display: flex;
flex-wrap: wrap;
flex-direction: row;
article {
flex: 1 1 300px;
}
h2 {
font-size: 12em;
/* text-transform: uppercase;*/
line-height: 1em;
flex: 1 1 100%;
}
p {
flex: 1 1 100%;
font-size: .6em;
line-height: 1.75em;
max-width: 33vw;
strong {
font-size: 1.25em;
}
}
div.now > figure {
padding: 0 20px 0 0;
}
@media screen and (max-width: 1024px) {
h2 {
font-size: 8em;
}
p {
font-size: .9em;
max-width: unset;
}
strong {
font-size: 1.5em;
}
div.now > figure, div.now > div {
padding: 20px 0;
}
}
.now {
flex: 1 1 300px;
}
}
.inf-rgpd {
font-size: .5em;
}
.inf-success > h4 {
font-family: Sigoil,Space-Grotesk,arial,helvetica,sans-serif;
}
</style>
<section id="now"> <section id="now">
<article class="section-headers" style="background-image: url(/2025/images/now-banner.svg);"> <div class="section-headers" style="background-image: url(/2025/images/now-banner.svg);">
<h2>NOW</h2> <h2>NOW</h2>
<p><strong>What's up, fellow space-time traveler! <br />Here's what's going down right now!</strong><br />Never been here before? <a href="https://www.basspistol.com/index2024.html#read">This page</a> might answer some of your questions. </p> <h4>𝖂𝖊𝖑𝖈𝖔𝖒𝖊, 𝖘𝖕𝖆𝖈𝖊-𝖙𝖎𝖒𝖊 𝖙𝖗𝖆𝖛𝖊𝖑𝖊𝖗</h4>
</article> <p>Here's what's going down! Never been here before? <a href="https://www.basspistol.com/index2024.html#read">This page</a> might answer some of your questions. </p>
<div class="border now" style="display: flex; flex-wrap: wrap; flex: 1 1 100%; background-image: linear-gradient(to bottom, rgba(0, 0, 0, .9), rgba(0, 0, 0, .9)), url(/2025/images/kybernetik.webp); background-position: center center; background-size: cover"> </div>
<figure style="flex: 1 1 50%;"> {{ range first 2 (where .Site.RegularPages "Type" "news") }}
<img src="/2025/images/kybernetik.webp" />
<div class="border now" style="background-image: linear-gradient(to bottom, rgba(0, 0, 0, .9), rgba(0, 0, 0, .9)), url({{ .Params.image.url }});">
<figure>
<img src="{{ .Params.image.url }}" alt="{{ .Params.image.alt }}" />
<figcaption>
<p><b>Artwork:</b> <a href="{{ .Params.image.credits.url }}" target="_blank">{{ .Params.image.credits.name }}</a> ({{ .Params.image.license }})</p>
{{ if eq .Params.release true }}
<p><b>Catalogue:</b> {{ .Params.catalogue }}</p>
<p><b>Label:</b> {{ .Params.recordlabel | markdownify }}</p>
<p><b>License:</b> {{ .Params.license }}</p>
<p><b>Released:</b> {{ .Params.date | dateFormat "2006-01-02" }}
{{ end }}
</figcaption>
</figure> </figure>
<div>
<p><strong>Kybernetik LP by Revengeday</strong></p>
<p>In collaboration with the houses of <a href="https://corteximplant.com/about">Cortex Implant</a> and <a href="https://obeythesystem.com/">Obey The System,</a> Basspistol is immensely proud to present Kybernetik LP by <a href="https://revenge.day/discography/kybernetik">Revengeday.</a>
<br /><br />
The depth of the darkness and the attention to detail with which Revengeday manages to infuse his music is beyond written word. The work of a world builder, showing a glimpse of what 20 minutes in the future look like, but seen from 30 years ahead. Take a trip from Cairo to Berlin, via Tokyo and Chirak.</p>
<a class="button" href="https://shop.basspistol.com/bpist-023">Get this 💎</a> <div class="news">
<h4>{{ .Title }}</h4>
{{ .Content | markdownify }}
<a class="button" href="{{ .Params.cta.url }}" target="_blank">{{ .Params.cta.label }}</a>
</div> </div>
<div style="font-size: .75em;">
<p><b>Catalogue:</b> #BPIST-023</p>
<p><b>Label:</b> Basspistol & <a href="https://obeythesystem.com/">OBEY THE SYSTEM</a> / <a href="https://corteximplant.com/about">CORTEX IMPLANT</a></p>
<p><b>Artwork:</b> Ramses Revengeday</p>
<p><b>License:</b> CC BY-NC-ND 4.0</p>
</div> </div>
</div> {{ end }}
<article class="border"> <article class="border" id="newsletter">
{{ partial "body/newsletter.html" . }} {{ partial "body/newsletter.html" . }}
</article> </article>
<article class="section-footers"></article> <article class="border support">
<h4>𝕾𝖚𝖕𝖕𝖔𝖗𝖙 𝖙𝖍𝖊 𝕮𝖆𝖚𝖘𝖊</h4>
<p>Basspistol doesn't really need your support, but it's always nice to soften the edges of the server costs. If you feel so inclined, you can contribute to the cause by donating in Bitcoin (Satoshis over Lightning) or Petro-Euros via Liberapay and Ko-Fi!</p>
<p>You know, get the sysadmins a root-beer or some shiet.</p>
<a target="_blank" href="https://getalby.com/p/thrilliridescent759578"><img src="/2025/images/Bitcoin-Logo.png" /></a>
<a target="_blank" href="https://liberapay.com/Basspistol"><img src="/2025/images/liberapay.png" /></a>
<a target="_blank" href="https://ko-fi.com/basspistol"><img src="/2025/images/kofi.png" /></a>
<p>Spank you very much! 💘</p>
</article>
<div class="section-footers"></div>
</section> </section>

View file

@ -1,202 +0,0 @@
<style>
#peertube {
display: flex;
flex-wrap: wrap;
flex-direction: row;
article {
margin: 2px;
flex: 1 1 300px;
.cartouche {
display: flex;
align-items: center;
justify-content: left;
flex-wrap: wrap;
width: 100%;
}
.cartouche > a {
flex: 0 0 100px;
}
.cartouche > p {
flex: 1 1 100px;
font-size: 1em;
font-weight: bold;
text-transform: uppercase;
}
}
h2 {
font-size: 12em;
/* text-transform: uppercase;*/
line-height: 1em;
flex: 1 1 100%;
}
p {
flex: 1 1 100%;
line-height: 1em;
strong {
font-size: 1.5em;
}
}
@media screen and (max-width: 1024px) {
h2 {
font-size: 8em;
}
p {
font-size: 1em;
}
}
.peertubes {
display: flex;
align-items: end;
padding: 20px;
justify-content: center;
flex: 1 1 300px;
min-height: 300px;
background-size: cover;
background-position: center center;
linear-gradient(to bottom, rgba(245, 246, 252, 0.52), rgba(117, 19, 93, 0.73)),
}
.peertubes:hover {
background-size: cover;
background-position: center center;
linear-gradient(to bottom, rgba(245, 246, 252, 0), rgba(117, 19, 93, 0)),
}
.section-headers {
padding: 80px;
flex: 1 1 300px;
}
}
</style>
{{ $data := dict }}
{{ $url := "https://v.basspistol.org/api/v1/videos?isLocal=true&count=100" }}
<section id="peertube">
<article class="section-headers">
<h2>BassTube</h2>
<p><strong>Videos from the deepweb.</strong>
<br />Decentralized, peer-to-peer, for the people!
</p>
</article>
{{ with try (resources.GetRemote $url) }}
{{ with .Err }}
{{ errorf "%s" . }}
{{ else with .Value }}
{{ $data = .Content | transform.Unmarshal }}
{{ else }}
{{ errorf "Unable to get remote resource %q" $url }}
{{ end }}
{{ end }}
{{ with $data.data }}
{{ range . | shuffle | last 5 }}
<article class="peertubes" style="background-image:linear-gradient(to bottom, rgba(128, 0, 128, 1), rgba(128, 0, 128, .75)),url(https://v.basspistol.org{{ .previewPath }})">
<div class="cartouche">
<a href="{{ .url }}" target="_blank">
<svg
width="75"
height="75"
version="1.1"
viewBox="0 0 57.679166 57.67917"
id="svg2"
xml:space="preserve"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs2"><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath2"><path
d="M 58.028369,28.839501 A 28.839999,28.839999 0 0 1 29.188368,57.6795 28.839999,28.839999 0 0 1 0.34836804,28.839501 28.839999,28.839999 0 0 1 29.188368,-4.9957302e-4 28.839999,28.839999 0 0 1 58.028369,28.839501 Z"
fill="purple"
stroke-width="4.83809"
style="stroke-linecap:round;stroke-linejoin:round;paint-order:markers stroke fill"
id="path3" /></clipPath><filter
style="color-interpolation-filters:sRGB"
id="filter25"
x="-0.64945344"
y="-0.51138139"
width="2.2988969"
height="2.0227628"><feFlood
result="flood"
in="SourceGraphic"
flood-opacity="1.000000"
flood-color="rgb(0,0,0)"
id="feFlood24" /><feGaussianBlur
result="blur"
in="SourceGraphic"
stdDeviation="3.300000"
id="feGaussianBlur24" /><feOffset
result="offset"
in="blur"
dx="0.000000"
dy="0.000000"
id="feOffset24" /><feComposite
result="comp1"
operator="in"
in="flood"
in2="offset"
id="feComposite24" /><feComposite
result="comp2"
operator="over"
in="SourceGraphic"
in2="comp1"
id="feComposite25" /></filter></defs><image
width="58.376736"
height="57.679001"
preserveAspectRatio="none"
{{ range .account.avatars | last 1 }}
{{ if .fileUrl }}xlink:href="{{ .fileUrl }}"{{ else }}xlink:href="https://v.basspistol.org/client/assets/images/logo.svg"{{ end }}
{{ end }}
id="image1"
x="0"
y="0"
clip-path="url(#clipPath2)"
transform="matrix(0.9999855,0,0,1.0000029,-0.34836299,0)" /><path
d="m 23.067499,19.43 14.82,9.4106 -14.82,9.4105 z"
fill="orange"
stroke="none"
stroke-width="3.4098"
style="fill:orange;fill-opacity:1;stroke:orange;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;paint-order:stroke fill markers;filter:url(#filter25)"
id="path2" />
</svg>
</a>
<div>
<p>{{ .name }}</p>
<p>{{ .account.displayName }}</p>
</div>
</div>
</article>
{{ end }}
<!-- <pre>{{ debug.Dump $data }}</pre>-->
{{ end }}
</section>

View file

@ -101,12 +101,13 @@
<article class="section-headers" style="background-image: url(/2025/images/peertube.webp);"> <article class="section-headers" style="background-image: url(/2025/images/peertube.webp);">
<h2>BassTube</h2> <h2>BassTube</h2>
<p> <p>
<strong>Videos from the deepweb.</strong> <strong>𝖁𝖎𝖉𝖊𝖔𝖘 𝖋𝖗𝖔𝖒 𝖙𝖍𝖊 𝕯𝖊𝖊𝖕𝖜𝖊𝖇</strong>
<br />Decentralized, peer-to-peer, for the people! All you saw was sound! <br />Decentralized, peer-to-peer, for the people! All you saw was sound!
<br /><br /> <br /><br />
Basspistol facilitates <a href="https://v.basspistol.org" style="text-decoration: underline;">a Peertube instance</a>, tapping into a large network of independent and sovereign creators from the deepweb. The videos displayed bellow are shuffled every 30 minute, by the random gods. Basspistol facilitates <a href="https://v.basspistol.org" style="text-decoration: underline;">a Peertube instance</a>, tapping into a large network of independent and sovereign creators from the deepweb. The videos displayed bellow are shuffled every 30 minute, by the random gods.
</p> </p>
<a class="button" href="https://v.basspistol.org/">More videos 📺</a>
</article> </article>
{{ with try (resources.GetRemote $url) }} {{ with try (resources.GetRemote $url) }}

View file

@ -1,62 +1,125 @@
<style>
#radio {
display: flex;
flex-wrap: wrap;
flex-direction: row;
article {
flex: 1 1 300px;
}
h2 {
font-size: 12em;
/* text-transform: uppercase;*/
line-height: 1em;
flex: 1 1 100%;
}
p {
flex: 1 1 100%;
font-size: .6em;
line-height: 1.75em;
max-width: 33vw;
strong {
font-size: 1.25em;
}
}
@media screen and (max-width: 1024px) {
h2 {
font-size: 8em;
}
p {
font-size: .9em;
max-width: unset;
}
strong {
font-size: 1.5em;
}
}
}
</style>
<section id="radio"> <section id="radio">
<article class="section-headers" style="background-image: url(/2025/images/radio.webp);"> <div class="section-headers" style="background-image: url(/2025/images/radio.webp);">
<h2>RadioStation</h2> <h2>RadioStation</h2>
<p><strong>Basspistol Radio Station! </strong><br />777% music, without commercials! RobotDJ-sets and live interventions! This is the sound of freedom.</p> <h4>𝕭𝖆𝖘𝖘𝖕𝖎𝖘𝖙𝖔𝖑 𝕽𝖆𝖉𝖎𝖔 𝕾𝖙𝖆𝖙𝖎𝖔𝖓</h4>
</article> <p>777% music, without commercials! RobotDJ-sets and live interventions! This is the sound of freedom.</p>
<div class="border">
<iframe src="https://radio.basspistol.com/public/basspistol/embed?theme=dark" frameborder="0" allowtransparency="true" style="width: 100%; min-height: 150px; border: 0;"></iframe>
<iframe src="https://radio.basspistol.com/public/basspistol/history?theme=dark" frameborder="0" allowtransparency="true" style="width: 100%; min-height: 480px; border: 0;"></iframe>
</div> </div>
<article class="section-footers"></article> <div class="border radioplayer">
<div class="legend-container">
<div class="legend">
<button id="myBtn">▶️</button>
<div>
<h4 id="npTitle"></h4>
<p id="npArtist"></p>
<audio preload="none" id="radioAudio">
<source src="https://radio.basspistol.com/listen/basspistol/radio.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
</div>
</div>
<div>
<br />
<a target="_blank" href="" id="supportButtonDelux" class="button player">🫰 Support this Artist</a>
<br />
<a class="button" target="_blank" href="https://radio.basspistol.com/public/basspistol">📻 Request song</a>
<br />
<a class="button" target="_blank" href="https://radio.basspistol.com/public/basspistol/schedule">🗓️ Schedule</a>
</div>
</div>
<div id="recordPlayer">
<img src="" id="coverArt" />
</div>
</div>
<div class="section-footers"></div>
</section> </section>
<script>
console.log("Loading Basspistol Radio! Enjoy!");
// Logic to fetch URL of currently playing artist
const list = document.createDocumentFragment();
const supportUrl = 'https://radio.basspistol.com/api/nowplaying';
// Catch elements that need influece
// support button
let supportButtonDelux = document.getElementById('supportButtonDelux');
// record player
let coverArt = document.getElementById('coverArt');
coverArt.classList.add("btn");
// Title and Artist
let npArtist = document.getElementById('npArtist');
let npTitle = document.getElementById('npTitle');
function timeleyManner(){
fetch(supportUrl)
.then((response) => {
return response.json();
})
.then((data) => {
let supportClicker = data;
supportClicker.map(function(support) {
// set background image in record player
coverArt.src = `${support.now_playing.song.art}`;
// print text
npTitle.innerHTML = `${support.now_playing.song.title}`;
npArtist.innerHTML = `by ${support.now_playing.song.artist}`;
if(`${support.now_playing.song.custom_fields.support_url}` != "null") {
supportButtonDelux.href = `${support.now_playing.song.custom_fields.support_url}` + "?ref=radio.basspistol.com" + "&title=" + `${support.now_playing.song.text}`;
}
else {
supportButtonDelux.href = "https://www.urbandictionary.com/define.php?term=Anon";
}
});
})
.catch(function(error) {
console.log(error);
});
}
timeleyManner();
setInterval(function(){
timeleyManner();
}, 10000)
// player logic
var audio = document.getElementById("radioAudio");
var btn = document.getElementById("myBtn");
btn.onclick = function() {
if (audio.paused) {
audio.play();
btn.innerHTML = "⏸️";
coverArt.classList.add("spinner");
coverArt.classList.remove("stop");
} else {
audio.pause();
btn.innerHTML = "▶️";
coverArt.classList.add("stop");
}
};
</script>

View file

@ -1,11 +1,12 @@
<footer> <footer>
<section id="footer"> <section id="footer">
<article class="border" style="border-radius: 100px; height: 480px"> <article class="border" style="border-radius: 100px; height: 480px">
<p><strong>Copyleft {{ now | dateFormat "2006" }} Basspistol (CC-BY-NC-SA)</strong></p> <p><strong>{{ now | dateFormat "2006" }} Basspistol (CC-BY-NC-SA)</strong></p>
<p>Last build: {{ now | dateFormat "2006-01-02 15:04 UTC" }}</p> <p>Last build: {{ now | dateFormat "2006-01-02 15:04 UTC" }}</p>
<p>Big thanks to <a href="https://velvetyne.fr/">Velvetyne</a> for the mad fonts. <p>Big thanks to <a href="https://velvetyne.fr/">Velvetyne</a> for the mad fonts.
<p>𝕿𝖍𝖊 𝖚𝖓𝖉𝖊𝖗𝖌𝖗𝖔𝖚𝖓𝖉 𝖎𝖘 𝖉𝖊𝖆𝖉, 𝖑𝖔𝖓𝖌 𝖑𝖎𝖛𝖊 𝖙𝖍𝖊 𝖚𝖓𝖉𝖊𝖗𝖌𝖗𝖔𝖚𝖓𝖉.</p> <p>𝕿𝖍𝖊 𝖚𝖓𝖉𝖊𝖗𝖌𝖗𝖔𝖚𝖓𝖉 𝖎𝖘 𝖉𝖊𝖆𝖉, 𝖑𝖔𝖓𝖌 𝖑𝖎𝖛𝖊 𝖙𝖍𝖊 𝖚𝖓𝖉𝖊𝖗𝖌𝖗𝖔𝖚𝖓𝖉.</p>
<p>Contact: info+web@basspistol.com</p> <p>Contact: info+web@basspistol.com</p>
<p>Typo? Bug? just wondering how this thing is built? <a href="https://git.basspistol.org/hq/basspistol2025">Check out the source code</a>
</article> </article>
</section> </section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB