Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 25 additions & 8 deletions .github/workflows/music-social.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,39 @@ jobs:
- name: Analyser les modifications de music.html
id: diff
run: |
# Sur un push, comparer la plage exacte de commits de l'événement.
# En exécution manuelle (workflow_dispatch), revenir au commit précédent.
EMPTY_TREE="$(git hash-object -t tree /dev/null)"

if [ "${{ github.event_name }}" = "push" ] && \
[ -n "${{ github.event.before }}" ] && \
[ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ]; then
DIFF=$(git diff "${{ github.event.before }}" "${{ github.sha }}" -- music.html)
BASE_REF="${{ github.event.before }}"
TARGET_REF="${{ github.sha }}"
elif git rev-parse --verify HEAD^ >/dev/null 2>&1; then
DIFF=$(git diff HEAD^ HEAD -- music.html)
BASE_REF="HEAD^"
TARGET_REF="HEAD"
else
EMPTY_TREE=$(git hash-object -t tree /dev/null)
DIFF=$(git diff "$EMPTY_TREE" HEAD -- music.html)
BASE_REF="$EMPTY_TREE"
TARGET_REF="HEAD"
fi

# Sur un push, comparer la plage exacte de commits de l'événement.
# En exécution manuelle (workflow_dispatch), revenir au commit précédent.
DIFF=$(git diff "$BASE_REF" "$TARGET_REF" -- music.html)

# Extraire les lignes ajoutées (nouvelles entrées)
ADDED=$(echo "$DIFF" | grep "^+" | grep -v "^+++" | sed 's/^+//' | head -50)

# Extraire uniquement la section auto YouTube (source réelle des nouvelles entrées musicales)
MUSIC_LINK_PATTERN='https?://(www\.)?(youtube\.com|youtu\.be|soundcloud\.com|bandcamp\.com)'
NEW_MUSIC_BLOCK=$(git show "$TARGET_REF:music.html" | sed -n '/<!-- YOUTUBE-AUTO-START -->/,/<!-- YOUTUBE-AUTO-END -->/p')
if [ "$BASE_REF" = "$EMPTY_TREE" ]; then
OLD_MUSIC_BLOCK=""
else
OLD_MUSIC_BLOCK=$(git show "$BASE_REF:music.html" | sed -n '/<!-- YOUTUBE-AUTO-START -->/,/<!-- YOUTUBE-AUTO-END -->/p')
fi
MUSIC_BLOCK_DIFF=$(diff -u <(echo "$OLD_MUSIC_BLOCK") <(echo "$NEW_MUSIC_BLOCK") || true)
MUSIC_BLOCK_ADDED=$(echo "$MUSIC_BLOCK_DIFF" | grep "^+" | grep -v "^+++" | sed 's/^+//' | head -50)

Comment on lines +56 to +65
# Compter les lignes modifiées en excluant les en-têtes de diff (+++ / ---)
LINES_ADDED=$(echo "$DIFF" | grep "^+" | grep -v "^+++" | wc -l)
LINES_REMOVED=$(echo "$DIFF" | grep "^-" | grep -v "^---" | wc -l)
Expand All @@ -57,8 +74,8 @@ jobs:
# Sauvegarder le diff dans un fichier temporaire pour l'issue
echo "$ADDED" > /tmp/music_changes.txt

# Détecter la présence de nouveaux titres (balises audio ou liens)
if echo "$ADDED" | grep -qiE '(audio|track|mix|set|release|soundcloud|youtube)'; then
# Détecter une vraie nouveauté musicale (nouveaux liens de contenu dans le bloc auto YouTube)
if echo "$MUSIC_BLOCK_ADDED" | grep -qiE "$MUSIC_LINK_PATTERN"; then
echo "has_music_content=true" >> "$GITHUB_OUTPUT"
else
echo "has_music_content=false" >> "$GITHUB_OUTPUT"
Expand Down
Loading