#!/usr/bin/env python3
"""
# Script ob-rand
## Metadata
**Kind**: #obsidian/ob-script
**Language**: #python
**Parent**:: [[Obsidian Chore Scripts]], [[Executable Markdown File]]
## Synopsis
Generate [[,rand|Random Board]] for review.
## Script
```python
#"""
import os
import random
import re
import datetime
# Check if DEBUG environment variable is set
debug = os.environ.get("DEBUG")
# If DEBUG is not set, redirect output to "shore/boards/,rand.md"
if not debug:
output_file = open("shore/boards/,rand.md", "a", newline="\n")
else:
output_file = None
def write_output(text):
if output_file:
output_file.write(text + "\n")
else:
print(text)
# Get current date and time
current_date = datetime.datetime.now()
formatted_date = current_date.strftime("%Y-%m-%d")
write_output(f"## {current_date}")
write_output("")
write_output(f"**Generated**:: [[{formatted_date}]]")
write_output("")
write_output("### Permanent")
write_output("")
# Find files matching the specified patterns
permanent_files = []
for root in ["dock", "para"]:
for root, dirs, files in os.walk(root):
for file in files:
if file.endswith(".md") and re.search(
r"#zettel/(literature|permanent|index)",
open(os.path.join(root, file)).read(),
):
permanent_files.append(os.path.join(root, file))
for root in ["output/§ Blog/Posts", "output/§ Blog/Games"]:
for root, dirs, files in os.walk(root):
for file in files:
if file.startswith("♯ "):
permanent_files.append(os.path.join(root, file))
# Shuffle and select 11 random files
random.shuffle(permanent_files)
selected_permanent_files = permanent_files[:11]
# Format and write the selected files
for file in selected_permanent_files:
file_name = os.path.splitext(os.path.basename(file))[0]
write_output(f"- [ ] [[{file_name}]]")
write_output("")
write_output("### Fleeting")
write_output("")
# Find files matching the specified patterns
fleeting_files = []
for root in ["dock", "para", "robot"]:
for root, dirs, files in os.walk(root):
for file in files:
if file.endswith(".md") and re.search(
r"#zettel/fleeting", open(os.path.join(root, file)).read()
):
fleeting_files.append(os.path.join(root, file))
# Shuffle and select 11 random files
random.shuffle(fleeting_files)
selected_fleeting_files = fleeting_files[:11]
# Format and write the selected files
for file in selected_fleeting_files:
file_name = os.path.splitext(os.path.basename(file))[0]
write_output(f"- [ ] [[{file_name}]]")
write_output("")
# Close the output file if it was opened
if output_file:
output_file.close()
"""
# vim: ft=python
```
"""