diff --git a/.forgejo/workflows/generate-m3u.yml b/.forgejo/workflows/generate-m3u.yml index ae11f31..ce0856c 100644 --- a/.forgejo/workflows/generate-m3u.yml +++ b/.forgejo/workflows/generate-m3u.yml @@ -1,4 +1,4 @@ -name: Test Runner Connectivity +name: Generate M3U Playlist with Auto-Organization on: push: @@ -7,11 +7,110 @@ on: workflow_dispatch: jobs: - simple-test: + build-and-organize: runs-on: ubuntu-22.04 steps: - - name: Checkout Repository - uses: actions/checkout@v4 + - 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: Basic Setup + run: | + echo "Setting up directories..." + mkdir -p reports/daily + echo "Setup completed" - - name: Verify Runner - run: echo "Hello from the Forgejo runner!" \ No newline at end of file + - 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 + 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" \ No newline at end of file