diff --git a/.forgejo/workflows/generate-m3u.yml b/.forgejo/workflows/generate-m3u.yml index 73932fe..60b3449 100644 --- a/.forgejo/workflows/generate-m3u.yml +++ b/.forgejo/workflows/generate-m3u.yml @@ -1,4 +1,4 @@ -name: IPTV Playlist Generator +name: Generate M3U Playlist with Auto-Organization on: push: @@ -7,40 +7,110 @@ on: workflow_dispatch: jobs: - generate: + build-and-organize: runs-on: ubuntu-22.04 steps: - - name: Checkout + - 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: Run Playlist Generator - run: | - echo "Running playlist generator..." - python3 scripts/generate_playlist.py - echo "Generation completed" - - name: Commit Results + - name: Basic Setup run: | + echo "Setting up directories..." + mkdir -p reports/daily + 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" + else + echo "Creating empty bulk_import.m3u" + echo '#EXTM3U' > bulk_import.m3u + fi + + - name: Run Playlist Generation + run: | + echo "Running playlist generation..." + if [ -f scripts/generate_playlist.py ]; then + python3 scripts/generate_playlist.py + echo "Playlist generation completed" + else + echo "Error: generate_playlist.py not found" + exit 1 + fi + + - name: Create Simple Report + run: | + echo "Creating report..." + if [ -f playlist.m3u ]; then + CHANNELS=$(grep -c "^#EXTINF" playlist.m3u || echo "0") + echo "Found $CHANNELS channels in playlist" + + DATE=$(date +%Y%m%d_%H%M%S) + REPORT="reports/daily/report_$DATE.md" + + echo "# Playlist Report" > "$REPORT" + echo "Generated: $(date)" >> "$REPORT" + echo "Channels: $CHANNELS" >> "$REPORT" + + echo "Report created: $REPORT" + else + echo "No playlist found" + fi + + - name: Clean Old Reports + run: | + echo "Cleaning old reports..." + cd reports/daily + # Count markdown files + 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 - CHANNELS=$(grep -c "^#EXTINF" playlist.m3u 2>/dev/null || echo "0") - git commit -m "📺 Generated playlist: $CHANNELS channels - $(date '+%Y-%m-%d %H:%M')" + 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" - else - echo "No changes to commit" fi - name: Summary run: | + echo "=== WORKFLOW COMPLETE ===" if [ -f playlist.m3u ]; then CHANNELS=$(grep -c "^#EXTINF" playlist.m3u || echo "0") - echo "✅ Success: $CHANNELS channels in playlist" - else - echo "❌ No playlist generated" - fi \ No newline at end of file + echo "✅ Playlist has $CHANNELS channels" + fi + echo "✅ Reports updated" + echo "✅ Repository cleaned" \ No newline at end of file