initial commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3dworldring.cjsatnarine.space
|
||||
136
data/assets/style.css
Normal file
136
data/assets/style.css
Normal file
@@ -0,0 +1,136 @@
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
line-height: 1.6;
|
||||
background-color: #111;
|
||||
color: #fff;
|
||||
max-width: 80%;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4 {
|
||||
font-family: Courier New, Courier, Consolas, monospace;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #f3c;
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
a:hover, a:focus {
|
||||
text-decoration: none;
|
||||
background-color: #f3c;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 90%;
|
||||
border-collapse: collapse;
|
||||
margin: 12px auto;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
tr {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
background-color: #222; /* Light gray for odd rows */
|
||||
}
|
||||
|
||||
tr:hover {
|
||||
background-color: #444; /* hover effect for table rows */
|
||||
}
|
||||
|
||||
th, td {
|
||||
padding: 10px;
|
||||
border: 2px solid #666;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #444;
|
||||
text-align: center;
|
||||
font-size: 1.1em;
|
||||
font-family: Courier New, Courier, Consolas, monospace;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 800px;
|
||||
margin: auto;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
body {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
th, td {
|
||||
display: block;
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
tr {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
}
|
||||
:root {
|
||||
--card-border: #446868;
|
||||
--card-link-color: #88bebe;
|
||||
}
|
||||
.cards-container {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.cards-container a {
|
||||
color: var(--card-link-color);
|
||||
}
|
||||
.cards {
|
||||
display: grid;
|
||||
grid-gap: 0.5rem;
|
||||
grid-template-columns: repeat(auto-fit, minmax(25rem, 1fr));
|
||||
}
|
||||
.card {
|
||||
border: 2px solid var(--card-border);
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
.card-name {
|
||||
background-color: var(--card-border);
|
||||
font-size: 1.25rem;
|
||||
padding: 0.25rem;
|
||||
border-radius: 0.25rem 0.25rem 0 0;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
.card-content {
|
||||
padding: 0.5rem;
|
||||
}
|
||||
.card-link {
|
||||
font-size: .95rem;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
.card-text {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.card-slug {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
24
data/templates/grid.html
Normal file
24
data/templates/grid.html
Normal file
@@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<link rel="stylesheet" href="./styles.css">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{ ring_name }} List</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="cards-container">
|
||||
<h1>{{ ring_name }} List</h1>
|
||||
<p>{{ ring_description }}</p>
|
||||
<p>Add all sites with declared RSS feeds to your feed reader with this <a href ="{{ opml }}">OPML</a> link.</p>
|
||||
|
||||
{{ grid_of_sites | safe }}
|
||||
|
||||
<br>
|
||||
<footer>
|
||||
<p>Last updated: {{ current_time }} </p>
|
||||
<p>Powered by <a href="https://github.com/k3rs3d/ringfairy">ringfairy</a>!</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
61
data/templates/index.html
Normal file
61
data/templates/index.html
Normal file
@@ -0,0 +1,61 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<link rel="stylesheet" href="./styles.css">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{ ring_name }} List</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>{{ ring_name }} List</h1>
|
||||
<p>{{ ring_description }}</p>
|
||||
<p>Add all sites with declared RSS feeds to your feed reader with this <a href ="{{ opml }}">OPML</a> link.</p>
|
||||
|
||||
{% if sites %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">URL</th>
|
||||
<th scope="col">About</th>
|
||||
<th scope="col">Owner</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for site in sites %}
|
||||
<tr>
|
||||
<td>{{ site.website.slug }}</td>
|
||||
<td>
|
||||
<a href="{{ site.website.url }}" target="_blank">{{ site.website.url }}</a>
|
||||
{% if site.website.rss %}
|
||||
<a href="{{ site.website.rss }}" target="_blank">[rss]</a>
|
||||
{% endif %}
|
||||
{% if site.website.atom %}
|
||||
<a href="{{ site.website.atom }}" target="_blank">[atom]</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ site.website.about | default(value="") }}</td>
|
||||
<td>{{ site.website.owner | default(value="") }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% if failed_sites %}
|
||||
The following member sites were not included in this iteration of the webring:
|
||||
<ul>
|
||||
{% for site in failed_sites %}
|
||||
<li>{{ site.website.url }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<br>
|
||||
<footer>
|
||||
<p>Last updated: {{ current_time }} </p>
|
||||
<p>Powered by <a href="https://github.com/k3rs3d/ringfairy">ringfairy</a>!</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
29
data/templates/random.html
Normal file
29
data/templates/random.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting...</title>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<script>
|
||||
var links = []
|
||||
{% if sites %}
|
||||
{% for site in sites %}
|
||||
links.push("{{ site.website.url }}")
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
window.location.replace(links[Math.floor(Math.random() * links.length)])
|
||||
</script>
|
||||
|
||||
<body>
|
||||
<p>A fairy is guiding you to a most suitable destination...</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
18
data/templates/redirect.html
Normal file
18
data/templates/redirect.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url={{ url }}">
|
||||
<title>Redirecting...</title>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>A fairy is teleporting you to <a href="{{ url }}">{{ url }}</a>...!</p>
|
||||
</body>
|
||||
</html>
|
||||
23
ringfairy.toml
Normal file
23
ringfairy.toml
Normal file
@@ -0,0 +1,23 @@
|
||||
base_url = "https://3dworldring.cjsatnarine.space"
|
||||
ring_name = "3dworldring"
|
||||
ring_description = "Webring for 3D worlds."
|
||||
ring_owner = "CJ Satnarine"
|
||||
ring_owner_site = "https://cjsatnarine.space"
|
||||
|
||||
filepath_list = ["./websites.json"] # Website list; should be a JSON file with 'name', 'url', etc
|
||||
path_output = "./3dworldring.cjsatnarine.space" # Generated files will be saved in this folder.
|
||||
path_assets = "./data/assets" # All contents of the asset folder will be copied directly into the output directory
|
||||
path_templates = "./data/templates" # The folder containing HTML templates to use, ie, anything with {{ tags }}
|
||||
filename_template_random = "random.html"
|
||||
filename_template_redirect = "redirect.html" # This template gets reused to build the redirect pages for each site, and is ignored when building the other custom templates
|
||||
|
||||
client_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
|
||||
client_header = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
|
||||
audit_retries_delay = 100
|
||||
audit_retries_max = 2
|
||||
|
||||
shuffle = false # Randomizes website sequence when generating
|
||||
verbose = false # Enables verbose logging
|
||||
skip_minify = false # If your generated HTML have issues, or you want hand-editable output, try skip minification
|
||||
skip_verify = false # Skips verification of the URLs in the list. Might be unwise!
|
||||
dry_run = false # Perform a dry run without writing any files. Can be used to check the site audit for example.
|
||||
9
websites.json
Normal file
9
websites.json
Normal file
@@ -0,0 +1,9 @@
|
||||
[
|
||||
{
|
||||
"name": "The Study",
|
||||
"slug": "cjsatnarine_study",
|
||||
"url": "https://study.cjsatnarine.space",
|
||||
"about": "a little study",
|
||||
"owner": "CJSatnarine"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user