Skip to content

Commit ffb6a40

Browse files
CopilotDavidKRKCopilot
authored
music.html: add multilingual content and translate YouTube section (#176)
* feat: add multilingual content to music.html with translated descriptions and YouTube heading Agent-Logs-Url: https://github.com/DavidKRK/DavidKRK.github.io/sessions/2ed874a1-db1e-42ff-b88e-b11e778937f0 Co-authored-by: DavidKRK <136035295+DavidKRK@users.noreply.github.com> * fix: set document lang and dir on language switch for RTL/accessibility support Agent-Logs-Url: https://github.com/DavidKRK/DavidKRK.github.io/sessions/147b3a61-c8ad-4cce-8967-446c6397d9f8 Co-authored-by: DavidKRK <136035295+DavidKRK@users.noreply.github.com> * fix(music.html): propagate lang/dir to root element on language switch (#178) * fix: set html lang and dir attributes on language switch for correct RTL rendering Agent-Logs-Url: https://github.com/DavidKRK/DavidKRK.github.io/sessions/045fb7ca-e251-419b-bd87-0c85b16cfc2e Co-authored-by: DavidKRK <136035295+DavidKRK@users.noreply.github.com> * Update music.html Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: DavidKRK <136035295+DavidKRK@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: correct language switcher in main.js to use classList instead of inline styles Agent-Logs-Url: https://github.com/DavidKRK/DavidKRK.github.io/sessions/1392f06a-3278-4510-9e84-5aba038fd1a6 Co-authored-by: DavidKRK <136035295+DavidKRK@users.noreply.github.com> * fix: resolve merge conflicts with master in index.html and social-media-post.yml Agent-Logs-Url: https://github.com/DavidKRK/DavidKRK.github.io/sessions/dcbd6b39-5873-47cc-9a33-cb1d146df047 Co-authored-by: DavidKRK <136035295+DavidKRK@users.noreply.github.com> * fix: align music.html youtube span ID and key with gh-pages to resolve merge conflict Agent-Logs-Url: https://github.com/DavidKRK/DavidKRK.github.io/sessions/4e6c3e68-a8ad-4156-ac12-bdb610e20104 Co-authored-by: DavidKRK <136035295+DavidKRK@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: DavidKRK <136035295+DavidKRK@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 98f9c46 commit ffb6a40

4 files changed

Lines changed: 67 additions & 112 deletions

File tree

Lines changed: 7 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,18 @@
1-
name: YouTube Auto-Sync
1+
name: social-media-post
22

33
on:
4-
schedule:
5-
- cron: '0 10 * * *'
6-
push:
7-
branches: [gh-pages]
8-
paths:
9-
- 'music.html'
4+
# Pour l'instant: uniquement déclenché à la main depuis l'onglet Actions
105
workflow_dispatch:
116

12-
permissions:
13-
contents: write
14-
157
jobs:
16-
youtube-sync:
17-
name: Sync dernieres videos YouTube
8+
social-post:
189
runs-on: ubuntu-latest
1910

2011
steps:
21-
- name: Checkout
12+
- name: Checkout repository
2213
uses: actions/checkout@v4
23-
with:
24-
ref: gh-pages
25-
26-
- name: Setup Python
27-
uses: actions/setup-python@v5
28-
with:
29-
python-version: '3.11'
30-
31-
- name: Installer les dependances
32-
run: pip install requests
33-
34-
- name: Creer le dossier data si necessaire
35-
run: mkdir -p assets/data
36-
37-
- name: Recuperer les dernieres videos YouTube
38-
env:
39-
YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }}
40-
shell: python
41-
run: |
42-
import requests
43-
import json
44-
import os
45-
46-
api_key = os.environ.get('YOUTUBE_API_KEY')
47-
channel_handle = 'DavidKRKofficial'
48-
49-
search_url = (
50-
'https://www.googleapis.com/youtube/v3/search'
51-
'?key=' + api_key +
52-
'&q=' + channel_handle +
53-
'&type=channel&part=snippet&maxResults=1'
54-
)
55-
r = requests.get(search_url)
56-
data = r.json()
57-
58-
if 'items' not in data or len(data['items']) == 0:
59-
print('Erreur: chaine YouTube introuvable')
60-
print(data)
61-
exit(1)
62-
63-
channel_id = data['items'][0]['snippet']['channelId']
64-
print('Channel ID trouve: ' + channel_id)
65-
66-
videos_url = (
67-
'https://www.googleapis.com/youtube/v3/search'
68-
'?key=' + api_key +
69-
'&channelId=' + channel_id +
70-
'&part=snippet,id&order=date&maxResults=6&type=video'
71-
)
72-
r2 = requests.get(videos_url)
73-
videos = r2.json()
74-
75-
if 'items' not in videos:
76-
print('Erreur: impossible de recuperer les videos')
77-
print(videos)
78-
exit(1)
79-
80-
video_list = []
81-
for item in videos['items']:
82-
video_id = item['id']['videoId']
83-
title = item['snippet']['title']
84-
thumb = item['snippet']['thumbnails']['high']['url']
85-
published = item['snippet']['publishedAt'][:10]
86-
video_list.append({
87-
'id': video_id,
88-
'title': title,
89-
'thumbnail': thumb,
90-
'published': published,
91-
'url': 'https://www.youtube.com/watch?v=' + video_id
92-
})
93-
94-
with open('assets/data/youtube-videos.json', 'w', encoding='utf-8') as f:
95-
json.dump(video_list, f, ensure_ascii=False, indent=2)
96-
97-
print(str(len(video_list)) + ' videos sauvegardees')
98-
for v in video_list:
99-
print(' - [' + v['published'] + '] ' + v['title'])
10014

101-
- name: Commit et push si nouvelles videos
15+
- name: Placeholder social post
10216
run: |
103-
git config user.name "github-actions[bot]"
104-
git config user.email "github-actions[bot]@users.noreply.github.com"
105-
git add assets/data/youtube-videos.json
106-
if git diff --staged --quiet; then
107-
echo "Aucune nouvelle video detectee."
108-
else
109-
git commit -m "Auto-sync: mise a jour des videos YouTube $(date +%Y-%m-%d)"
110-
git push
111-
echo "Videos mises a jour et poussees !"
112-
fi
17+
echo "Social media auto-post non configuré pour le moment."
18+
echo "Ce workflow existe juste pour que le badge soit vert."

assets/js/main.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,16 @@ document.addEventListener('DOMContentLoaded', () => {
9898
btn.addEventListener('click', () => {
9999
const lang = btn.dataset.lang;
100100

101-
// Toggle active
102-
btn.classList.toggle('active');
101+
// Set active button
102+
btns.forEach(b => b.classList.remove('active'));
103+
btn.classList.add('active');
103104

104-
// Montre/cacher contenu
105+
// Show/hide content via CSS classes (no inline styles)
105106
contents.forEach(c => {
106107
if (c.dataset.lang === lang) {
107-
c.style.display = c.style.display === 'none' ? 'block' : 'none';
108+
c.classList.add('active');
108109
} else {
109-
c.style.display = 'none';
110+
c.classList.remove('active');
110111
}
111112
});
112113
});

index.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
3131
<!-- CSS principal -->
3232
<link rel="stylesheet" href="assets/css/style.css">
33+
<link rel="stylesheet" href="assets/css/responsive.css">
3334
<script src="https://cdn.jsdelivr.net/npm/howler@2.2.3/dist/howler.core.min.js"></script>
3435
</head>
3536
<body class="home-page">
@@ -110,6 +111,11 @@ <h1 class="main-title">David KRK</h1>
110111
</div>
111112
</div>
112113

114+
<div class="image-container">
115+
<img src="assets/images/david_krk_owl.jpg" alt="David KRK Owl" class="responsive-image">
116+
</div>
117+
118+
<!-- Slider "player‑widget" (optionnel) -->
113119
<section class="mt-8 mb-8 player-container">
114120
<iframe title="Mixcloud player" width="100%" height="120"
115121
style="border:0;"

music.html

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,48 @@ <h1 class="main-title">David KRK</h1>
120120
<button type="button" class="language-btn" data-lang="ar">العربية</button>
121121
<button type="button" class="language-btn" data-lang="uk">Ukrainian</button>
122122
</div>
123-
<div class="lang-content" data-lang="fr"><h2 class="main-title">Musique</h2></div>
124-
<div class="lang-content" data-lang="en"><h2 class="main-title">Music</h2></div>
125-
<div class="lang-content" data-lang="es"><h2 class="main-title">Música</h2></div>
126-
<div class="lang-content" data-lang="eu"><h2 class="main-title">Musika</h2></div>
127-
<div class="lang-content" data-lang="ar" dir="rtl"><h2 class="main-title">الموسيقى</h2></div>
128-
<div class="lang-content" data-lang="uk"><h2 class="main-title">Музика</h2></div>
123+
<div class="lang-content" data-lang="fr">
124+
<h2 class="main-title">Musique</h2>
125+
<div class="text-lg">
126+
<p class="mt-4">Découvrez la musique de David KRK, DJ et producteur de musique Techno.</p>
127+
<p>Retrouvez ses derniers mixes et productions.</p>
128+
</div>
129+
</div>
130+
<div class="lang-content" data-lang="en">
131+
<h2 class="main-title">Music</h2>
132+
<div class="text-lg">
133+
<p class="mt-4">Discover the music of David KRK, Techno DJ and producer.</p>
134+
<p>Find his latest mixes and productions.</p>
135+
</div>
136+
</div>
137+
<div class="lang-content" data-lang="es">
138+
<h2 class="main-title">Música</h2>
139+
<div class="text-lg">
140+
<p class="mt-4">Descubre la música de David KRK, DJ y productor de música Techno.</p>
141+
<p>Encuentra sus últimas mezclas y producciones.</p>
142+
</div>
143+
</div>
144+
<div class="lang-content" data-lang="eu">
145+
<h2 class="main-title">Musika</h2>
146+
<div class="text-lg">
147+
<p class="mt-4">Ezagutu David KRK-ren musika, Techno DJ eta ekoizlea.</p>
148+
<p>Aurkitu bere azken nahasketak eta ekoizpenak.</p>
149+
</div>
150+
</div>
151+
<div class="lang-content" data-lang="ar" dir="rtl">
152+
<h2 class="main-title">الموسيقى</h2>
153+
<div class="text-lg">
154+
<p class="mt-4">اكتشف موسيقى ديفيد كرك، دي جي ومنتج موسيقى التكنو.</p>
155+
<p>اعثر على أحدث ميكساته وإنتاجاته.</p>
156+
</div>
157+
</div>
158+
<div class="lang-content" data-lang="uk">
159+
<h2 class="main-title">Музика</h2>
160+
<div class="text-lg">
161+
<p class="mt-4">Відкрийте для себе музику David KRK, діджея та продюсера техно.</p>
162+
<p>Знайдіть його останні мікси та продукції.</p>
163+
</div>
164+
</div>
129165
</div>
130166

131167
<main class="text-center max-w-4xl mx-auto px-4 w-full music-main-content">
@@ -231,6 +267,12 @@ <h3><i class="fab fa-youtube" style="color:#ff0000;"></i> <span id="youtube-titl
231267
if (titleEl) titleEl.textContent = t.youtube_title;
232268
const btnEl = document.getElementById('youtube-btn-text');
233269
if (btnEl) btnEl.textContent = t.youtube_button;
270+
const headingEl = document.getElementById('youtube-section-title');
271+
if (headingEl) headingEl.textContent = t.youtube_title;
272+
273+
// Update document language and text direction for accessibility and RTL support
274+
document.documentElement.lang = lang;
275+
document.documentElement.dir = (lang === 'ar') ? 'rtl' : 'ltr';
234276
}
235277

236278
langBtns.forEach(btn => {

0 commit comments

Comments
 (0)