mirror of
https://github.com/marvinscham/marvinscham.git
synced 2025-12-06 02:00:46 +01:00
Updated content + code cleanup
This commit is contained in:
@@ -41,16 +41,10 @@ def calc_darkness_bias(obj, threshold):
|
|||||||
|
|
||||||
|
|
||||||
def seconds_to_string(seconds):
|
def seconds_to_string(seconds):
|
||||||
days = seconds // 86400
|
hours = seconds // 3600
|
||||||
remaining_seconds = seconds % 86400
|
remaining_minutes = (seconds % 3600) // 60
|
||||||
hours = remaining_seconds // 3600
|
|
||||||
remaining_minutes = (remaining_seconds % 3600) // 60
|
|
||||||
|
|
||||||
time_string = ""
|
time_string = f"{hours}"
|
||||||
if days > 0:
|
|
||||||
time_string += f"{days}:{hours:02}"
|
|
||||||
else:
|
|
||||||
time_string += f"{hours}"
|
|
||||||
time_string += f":{remaining_minutes:02}"
|
time_string += f":{remaining_minutes:02}"
|
||||||
|
|
||||||
return time_string
|
return time_string
|
||||||
@@ -71,7 +65,7 @@ with open(os.path.join(resource_dir, "socials.json")) as f:
|
|||||||
socials = json.load(f)
|
socials = json.load(f)
|
||||||
|
|
||||||
# Sort to build rainbow
|
# Sort to build rainbow
|
||||||
hue_shift = 0.35
|
hue_shift = 0.8
|
||||||
darkness_bias = 0.2
|
darkness_bias = 0.2
|
||||||
|
|
||||||
technologies = sorted(
|
technologies = sorted(
|
||||||
@@ -81,8 +75,10 @@ technologies = sorted(
|
|||||||
|
|
||||||
blog_entries = {}
|
blog_entries = {}
|
||||||
try:
|
try:
|
||||||
|
ghost_base_url = os.getenv("GHOST_URL").rstrip("/")
|
||||||
|
ghost_api_key = os.getenv("GHOST_API_KEY")
|
||||||
response = requests.get(
|
response = requests.get(
|
||||||
f"{os.getenv("GHOST_URL")}/ghost/api/content/posts/?key={os.getenv("GHOST_KEY")}"
|
f"{ghost_base_url}/ghost/api/content/posts/?key={ghost_api_key}"
|
||||||
)
|
)
|
||||||
blog_entries = response.json()["posts"][:3]
|
blog_entries = response.json()["posts"][:3]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -95,8 +91,9 @@ try:
|
|||||||
waka_token = base64.b64encode(os.getenv("WAKAPI_KEY").encode("ascii")).decode(
|
waka_token = base64.b64encode(os.getenv("WAKAPI_KEY").encode("ascii")).decode(
|
||||||
"ascii"
|
"ascii"
|
||||||
)
|
)
|
||||||
|
wakapi_base_url = os.getenv("WAKAPI_URL").rstrip("/")
|
||||||
response = requests.get(
|
response = requests.get(
|
||||||
f"{os.getenv("WAKAPI_URL")}/api/summary?interval=30_days",
|
f"{wakapi_base_url}/api/summary?interval=30_days",
|
||||||
headers={"Authorization": f"Basic {waka_token}"},
|
headers={"Authorization": f"Basic {waka_token}"},
|
||||||
)
|
)
|
||||||
waka_info = response.json()
|
waka_info = response.json()
|
||||||
@@ -106,17 +103,19 @@ try:
|
|||||||
project_list = waka_info["projects"][:4]
|
project_list = waka_info["projects"][:4]
|
||||||
lang_list = waka_info["languages"][:6]
|
lang_list = waka_info["languages"][:6]
|
||||||
|
|
||||||
max_name_len = max(len(entry["key"]) for entry in project_list)
|
# max_name_len = max(len(entry["key"]) for entry in project_list)
|
||||||
max_lang_len = max(len(entry["key"]) for entry in lang_list)
|
max_lang_len = max(len(entry["key"]) for entry in lang_list)
|
||||||
max_key_len = max(max_name_len, max_lang_len)
|
# max_key_len = max(max_name_len, max_lang_len)
|
||||||
|
max_key_len = max_lang_len
|
||||||
|
|
||||||
max_proj_time_len = max(
|
# max_proj_time_len = max(
|
||||||
len(seconds_to_string(entry["total"])) for entry in project_list
|
# len(seconds_to_string(entry["total"])) for entry in project_list
|
||||||
)
|
# )
|
||||||
max_lang_time_len = max(
|
max_lang_time_len = max(
|
||||||
len(seconds_to_string(entry["total"])) for entry in lang_list
|
len(seconds_to_string(entry["total"])) for entry in lang_list
|
||||||
)
|
)
|
||||||
max_total_len = max(max_proj_time_len, max_lang_time_len)
|
# max_total_len = max(max_proj_time_len, max_lang_time_len)
|
||||||
|
max_total_len = max_lang_time_len
|
||||||
|
|
||||||
# waka_projects += "<pre>\n"
|
# waka_projects += "<pre>\n"
|
||||||
# for project in project_list:
|
# for project in project_list:
|
||||||
@@ -135,15 +134,18 @@ try:
|
|||||||
# waka_projects += "</pre>"
|
# waka_projects += "</pre>"
|
||||||
|
|
||||||
waka_langs += "<pre>\n"
|
waka_langs += "<pre>\n"
|
||||||
|
waka_langs += f"{'Lang':<{max_key_len}} "
|
||||||
|
waka_langs += f"{'hh:mm':>{max_total_len}} \n"
|
||||||
for lang in lang_list:
|
for lang in lang_list:
|
||||||
filled_length = int((lang["total"] / total_duration) * MAX_BAR_LENGTH)
|
filled_length = int((lang["total"] / total_duration) * MAX_BAR_LENGTH)
|
||||||
progress_bar = BAR_CHAR * filled_length + EMPTY_BAR_CHAR * (
|
progress_bar = BAR_CHAR * filled_length + EMPTY_BAR_CHAR * (
|
||||||
MAX_BAR_LENGTH - filled_length
|
MAX_BAR_LENGTH - filled_length
|
||||||
)
|
)
|
||||||
percentage_str = str(int((lang["total"] / total_duration * 100))) + "%"
|
percentage_str = str(int((lang["total"] / total_duration * 100))) + "%"
|
||||||
|
time_string = seconds_to_string(lang["total"])
|
||||||
|
|
||||||
waka_langs += f"{lang['key']:<{max_key_len}} "
|
waka_langs += f"{lang['key']:<{max_key_len}} "
|
||||||
waka_langs += f"{seconds_to_string(lang["total"]):>{max_total_len}} "
|
waka_langs += f"{time_string:>{max_total_len}} "
|
||||||
waka_langs += f"{progress_bar} "
|
waka_langs += f"{progress_bar} "
|
||||||
waka_langs += f"{percentage_str:>3}\n"
|
waka_langs += f"{percentage_str:>3}\n"
|
||||||
waka_langs += "</pre>"
|
waka_langs += "</pre>"
|
||||||
|
|||||||
5
resources/README.md
Normal file
5
resources/README.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Resources
|
||||||
|
|
||||||
|
## Logo source for shields.io icons
|
||||||
|
|
||||||
|
> https://simpleicons.org/
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<h1 align="center" style="text-align:center;">Welcome! <img height="28" style="height:1em;display:inline-block;" src="https://raw.githubusercontent.com/marvinscham/marvinscham/main/resources/wave.gif"></h1>
|
<h1 align="center" style="text-align:center;">Welcome! <img height="28" style="height:1em;display:inline-block;" src="https://raw.githubusercontent.com/marvinscham/marvinscham/main/resources/wave.gif"></h1>
|
||||||
<p align="center" style="text-align:center;">I'm Marvin – M.Sc. student, fullstack developer and creator of <a href="https://masterychart.com">Mastery Chart</a>.<br>Located in Baden-Württemberg, Germany <img height="16" style="height:1em;display:inline-block;" src="https://marvinscham.de/assets/img/lang/de.png">.</p>
|
<p align="center" style="text-align:center;">I'm Marvin – Software engineer and creator of <a href="https://masterychart.com">Mastery Chart</a>.<br>Located in Baden-Württemberg, Germany <img height="16" style="height:1em;display:inline-block;" src="https://marvinscham.de/assets/img/lang/de.png">.</p>
|
||||||
{# Derived from https://github.com/thmsgbrt/thmsgbrt #}
|
{# Derived from https://github.com/thmsgbrt/thmsgbrt #}
|
||||||
|
|
||||||
<h2>🛠 Tools I use</h2>
|
<h2>🛠 Things I use</h2>
|
||||||
<p>
|
<p>
|
||||||
{% for item in technologies -%}
|
{% for item in technologies -%}
|
||||||
<img alt="{{ item['name'] }}" style="display:inline-block;" src="https://img.shields.io/badge/-{{ item["name"] | replace(" ", "_") }}-{{ item['color'] | replace("#", "") }}?style=flat-square&logo={{ item['logo'] or item['name'] | replace(" ", "_") }}&logoColor=white" />
|
<img alt="{{ item['name'] }}" style="display:inline-block;" src="https://img.shields.io/badge/-{{ item["name"] | replace(" ", "_") }}-{{ item['color'] | replace("#", "") }}?style=flat-square&logo={{ item['logo'] or item['name'] | replace(" ", "_") }}&logoColor=white" />
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
{%- if waka_stats|length > 1 %}
|
{%- if waka_stats|length > 1 %}
|
||||||
<h2>📊 30-day breakdown</h2>
|
<h2>📊 30-day coding activity</h2>
|
||||||
|
|
||||||
{{ waka_stats }}
|
{{ waka_stats }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -3,24 +3,24 @@
|
|||||||
"name": "Homepage",
|
"name": "Homepage",
|
||||||
"url": "https://marvinscham.de",
|
"url": "https://marvinscham.de",
|
||||||
"color": "#0d254c",
|
"color": "#0d254c",
|
||||||
"logo": "googlechrome"
|
"logo": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GitHub",
|
"name": "GitHub",
|
||||||
"url": "https://github.vom/marvinscham",
|
"url": "https://github.vom/marvinscham",
|
||||||
"color": "#181717",
|
"color": "#181717",
|
||||||
"logo": "github"
|
"logo": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "LinkedIn",
|
"name": "LinkedIn",
|
||||||
"url": "https://www.linkedin.com/in/marvin-scham-58576216b/",
|
"url": "https://www.linkedin.com/in/marvin-scham-58576216b/",
|
||||||
"color": "#0A66C2",
|
"color": "#0A66C2",
|
||||||
"logo": "linkedin"
|
"logo": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Duolingo",
|
"name": "Duolingo",
|
||||||
"url": "https://duolingo.com/profile/marvinscham",
|
"url": "https://duolingo.com/profile/marvinscham",
|
||||||
"color": "#58CC02",
|
"color": "#58CC02",
|
||||||
"logo": "duolingo"
|
"logo": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
[
|
[
|
||||||
|
{ "name": "Adminer", "logo": "adminer", "color": "#34567C" },
|
||||||
{ "name": "Authentik", "logo": "authentik", "color": "#FD4B2D" },
|
{ "name": "Authentik", "logo": "authentik", "color": "#FD4B2D" },
|
||||||
{ "name": "Bash", "logo": "gnubash", "color": "#4EAA25" },
|
{ "name": "Bash", "logo": "gnubash", "color": "#4EAA25" },
|
||||||
{ "name": "Chart.js", "logo": "chartdotjs", "color": "#FF6384" },
|
{ "name": "Calibre--Web", "logo": "calibreweb", "color": "#45B29D" },
|
||||||
{ "name": "Cloudflare", "logo": "cloudflare", "color": "#F38020" },
|
{ "name": "Cloudflare", "logo": "cloudflare", "color": "#F38020" },
|
||||||
|
{ "name": "C%2b%2b", "logo": "cplusplus", "color": "#00599C" },
|
||||||
|
{ "name": "CSS", "logo": "css", "color": "#663399" },
|
||||||
{ "name": "D3.js", "logo": "d3", "color": "#F9A03C" },
|
{ "name": "D3.js", "logo": "d3", "color": "#F9A03C" },
|
||||||
{ "name": "Django", "logo": "django", "color": "#092E20" },
|
|
||||||
{ "name": "Docker", "logo": "Docker", "color": "#2496ED" },
|
{ "name": "Docker", "logo": "Docker", "color": "#2496ED" },
|
||||||
{ "name": "Ghost", "logo": "ghost", "color": "#15171A" },
|
{ "name": "Ghost", "logo": "ghost", "color": "#15171A" },
|
||||||
{ "name": "Git", "logo": "git", "color": "#F05032" },
|
{ "name": "Git", "logo": "git", "color": "#F05032" },
|
||||||
@@ -12,17 +14,23 @@
|
|||||||
{ "name": "Immich", "logo": "immich", "color": "#4250AF" },
|
{ "name": "Immich", "logo": "immich", "color": "#4250AF" },
|
||||||
{ "name": "JavaScript", "logo": "javascript", "color": "#F7DF1E" },
|
{ "name": "JavaScript", "logo": "javascript", "color": "#F7DF1E" },
|
||||||
{ "name": "LaTeX", "logo": "latex", "color": "#008080" },
|
{ "name": "LaTeX", "logo": "latex", "color": "#008080" },
|
||||||
|
{ "name": "Linux Mint", "logo": "linuxmint", "color": "#86BE43" },
|
||||||
{ "name": "MariaDB", "logo": "mariadb", "color": "#1F305F" },
|
{ "name": "MariaDB", "logo": "mariadb", "color": "#1F305F" },
|
||||||
{ "name": "Markdown", "logo": "markdown", "color": "#000000" },
|
{ "name": "Markdown", "logo": "markdown", "color": "#000000" },
|
||||||
{ "name": "n8n", "logo": "n8n", "color": "#EA4B71" },
|
{ "name": "n8n", "logo": "n8n", "color": "#EA4B71" },
|
||||||
|
{ "name": "Nextcloud", "logo": "nextcloud", "color": "#0082C9" },
|
||||||
{ "name": "nginx", "logo": "nginx", "color": "#009639" },
|
{ "name": "nginx", "logo": "nginx", "color": "#009639" },
|
||||||
{ "name": "Obsidian", "logo": "obsidian", "color": "#7C3AED" },
|
{ "name": "Obsidian", "logo": "obsidian", "color": "#7C3AED" },
|
||||||
{ "name": "Paperless", "logo": "paperlessngx", "color": "#17541F" },
|
{ "name": "Paperless", "logo": "paperlessngx", "color": "#17541F" },
|
||||||
{ "name": "PHP", "logo": "php", "color": "#777BB4" },
|
{ "name": "PHP", "logo": "php", "color": "#777BB4" },
|
||||||
{ "name": "Plausible", "logo": "plausibleanalytics", "color": "#5850EC" },
|
{ "name": "Plausible", "logo": "plausibleanalytics", "color": "#5850EC" },
|
||||||
{ "name": "Python", "logo": "python", "color": "#3776AB" },
|
{ "name": "Python", "logo": "python", "color": "#3776AB" },
|
||||||
|
{ "name": "Redis", "logo": "redis", "color": "#FF4438" },
|
||||||
{ "name": "Riot API", "logo": "riotgames", "color": "#EB0029" },
|
{ "name": "Riot API", "logo": "riotgames", "color": "#EB0029" },
|
||||||
{ "name": "SonarQube", "logo": "sonarqube", "color": "#4E9BCD" },
|
{ "name": "Sass", "logo": "sass", "color": "#CC6699" },
|
||||||
{ "name": "Tailwind", "logo": "tailwindcss", "color": "#06B6D4" },
|
{ "name": "SonarQube", "logo": "sonarqubeserver", "color": "#126ED3" },
|
||||||
|
{ "name": "Traefik", "logo": "traefikproxy", "color": "#24A1C1" },
|
||||||
|
{ "name": "uBlock", "logo": "ublockorigin", "color": "#800000" },
|
||||||
|
{ "name": "Vaultwarden", "logo": "vaultwarden", "color": "#000000" },
|
||||||
{ "name": "WireGuard", "logo": "wireguard", "color": "#88171A" }
|
{ "name": "WireGuard", "logo": "wireguard", "color": "#88171A" }
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user