my-private-iptv-m3u/.forgejo/workflows/generate-m3u.yml
stoney420 f7aa7dc61f
Some checks failed
Generate M3U Playlist with Auto-Organization / build-and-organize (push) Has been cancelled
Update .forgejo/workflows/generate-m3u.yml
2025-06-29 03:33:21 +02:00

154 lines
No EOL
4.4 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Generate M3U Playlist with Auto-Organization
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build-and-organize:
runs-on: ubuntu-22.04
timeout-minutes: 5
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Configure Git
run: |
git config --local user.email "actions@forgejo.plainrock127.xyz"
git config --local user.name "IPTV Playlist Bot"
- name: Setup Python Environment
run: |
echo "Setting up Python environment..."
python3 --version
echo "Setting up directories..."
mkdir -p reports/daily reports/logs backups config logs
echo "Setup completed"
- name: Check Import File
run: |
echo "Checking import file..."
if [ -f bulk_import.m3u ]; then
LINES=$(wc -l < bulk_import.m3u)
echo "Found bulk_import.m3u with $LINES lines"
if [ "$LINES" -le 2 ]; then
echo "Import file is empty or only has header"
fi
else
echo "Creating empty bulk_import.m3u"
echo '#EXTM3U' > bulk_import.m3u
fi
- name: Verify Scripts Directory
run: |
echo "Checking scripts directory..."
if [ -d scripts ]; then
echo "Scripts directory exists"
ls -la scripts/
else
echo "Scripts directory not found!"
exit 1
fi
- name: Run Playlist Generation
timeout-minutes: 3
run: |
echo "Running playlist generation..."
cd scripts
if [ -f generate_playlist.py ]; then
echo "Found generate_playlist.py, executing..."
timeout 120 python3 generate_playlist.py
echo "Playlist generation completed"
else
echo "Error: generate_playlist.py not found"
exit 1
fi
- name: Check Results
run: |
echo "Checking generation results..."
if [ -f playlist.m3u ]; then
CHANNELS=$(grep -c "^#EXTINF" playlist.m3u || echo "0")
echo "✅ Generated playlist.m3u with $CHANNELS channels"
SIZE=$(wc -c < playlist.m3u)
echo "File size: $SIZE bytes"
else
echo "❌ No playlist.m3u generated"
fi
if [ -f channels.txt ]; then
LINES=$(wc -l < channels.txt)
echo "✅ channels.txt has $LINES lines"
else
echo " No channels.txt found"
fi
- name: Create Simple Report
run: |
echo "Creating report..."
DATE=$(date +%Y%m%d_%H%M%S)
REPORT="reports/daily/report_$DATE.md"
echo "# Playlist Report" > "$REPORT"
echo "Generated: $(date)" >> "$REPORT"
if [ -f playlist.m3u ]; then
CHANNELS=$(grep -c "^#EXTINF" playlist.m3u || echo "0")
echo "Channels: $CHANNELS" >> "$REPORT"
else
echo "Channels: 0" >> "$REPORT"
fi
echo "Report created: $REPORT"
- name: Clean Old Reports
run: |
echo "Cleaning old reports..."
cd reports/daily
if ls *.md >/dev/null 2>&1; then
COUNT=$(ls *.md | wc -l)
echo "Found $COUNT reports"
if [ "$COUNT" -gt 3 ]; then
echo "Removing excess reports..."
ls -t *.md | tail -n +4 | xargs rm -f
echo "Cleanup done"
fi
else
echo "No reports to clean"
fi
cd ../..
- name: Reset Import File
run: |
echo "Resetting import file..."
echo '#EXTM3U' > bulk_import.m3u
echo "Import file reset"
- name: Commit Changes
run: |
echo "Committing changes..."
git add .
if git diff --staged --quiet; then
echo "No changes to commit"
else
CHANNELS="0"
if [ -f playlist.m3u ]; then
CHANNELS=$(grep -c "^#EXTINF" playlist.m3u || echo "0")
fi
git commit -m "📺 Updated playlist with $CHANNELS channels - $(date '+%Y-%m-%d %H:%M')"
git push
echo "Changes committed"
fi
- name: Summary
run: |
echo "=== WORKFLOW COMPLETE ==="
if [ -f playlist.m3u ]; then
CHANNELS=$(grep -c "^#EXTINF" playlist.m3u || echo "0")
echo "✅ Playlist has $CHANNELS channels"
fi
echo "✅ Reports updated"
echo "✅ Repository cleaned"