Skip to content

Convert And Upload #176

Convert And Upload

Convert And Upload #176

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: Convert And Upload
# Controls when the workflow will run
on:
schedule:
#- cron: "0 14-21 * * *"
- cron: "0 */2 * * *"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
manual-trigger:
description: 'Manually trigger the workflow'
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
convert:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout repository
uses: actions/checkout@v3
- name: Build ConsoleM3U8
run: dotnet build ./ConsoleM3U8/ConsoleM3U8.csproj --configuration Release
- name: Publish ConsoleM3U8
run: dotnet publish ./ConsoleM3U8/ConsoleM3U8.csproj -r linux-x64 --configuration Release --self-contained --output ${{ github.workspace }}/publish
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: true
# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Setup FFmpeg
uses: AnimMouse/setup-ffmpeg@v1
with:
token: ${{ secrets.GH_PAT }}
#- name: Set up ffmpeg
# run: |
# apt-get update
# apt-get install -y ffmpeg libgdiplus
# Setup rclone
- name: Set up rclone
uses: AnimMouse/setup-rclone@v1
with:
rclone_config: ${{ secrets.RCLONE_CONFIG }}
token: ${{ secrets.GH_PAT }}
#disable_base64: true
# Update rclone config
- name: Update Rclone config
uses: AnimMouse/setup-rclone/update-config@v1
with:
rclone_config_secret_name: RCLONE_CONFIG
token: ${{ secrets.GH_PAT }}
- name: Mount Drive
env:
RCLONE_DRIVE_NAME: ${{secrets.RCLONE_DRIVE_NAME}}
MOUNT_NAME: drive_${{secrets.RCLONE_DRIVE_NAME}}
MOUNT_PATH: ${{ github.workspace }}/drive_${{secrets.RCLONE_DRIVE_NAME}}
run: |
mkdir -p ${{env.MOUNT_PATH}}
rclone mount ${{env.RCLONE_DRIVE_NAME}}:/ ${{env.MOUNT_PATH}} --daemon
ls ${{env.MOUNT_PATH}}
- name: Get Convert File
id: get_convert_file
env:
WAIT_CONVERT_FOLDER_PATH: ${{ github.workspace }}/drive_${{secrets.RCLONE_DRIVE_NAME}}/${{secrets.WAIT_CONVERT_RCLONE_FOLDER_PATH}}
RESULT_FOLDER_PATH: ${{ github.workspace }}/drive_${{ secrets.RCLONE_DRIVE_NAME }}/${{secrets.RESULT_RCLONE_FOLDER_PATH}}
run: |
if [ ! -d "${{env.RESULT_FOLDER_PATH}}" ];then
mkdir -p "${{env.RESULT_FOLDER_PATH}}"
fi
FILE_NAME=$(comm -23 <(ls ${{ env.WAIT_CONVERT_FOLDER_PATH }} | sed 's/\.[^.]*$//' | sort -u) <(ls ${{ env.RESULT_FOLDER_PATH }} | sed 's/\.[^.]*$//' | sort -u) | head -n 1)
if [ -z "$FILE_NAME" ]; then
echo "No file to convert"
exit 0
fi
FILE_FULL_NAME=$(ls ${{ env.WAIT_CONVERT_FOLDER_PATH }} | grep "$FILE_NAME")
echo "WAIT_CONVERT_FILE_NAME=$FILE_NAME" >> "$GITHUB_OUTPUT"
echo "WAIT_CONVERT_FILE_FULL_NAME=$FILE_FULL_NAME" >> "$GITHUB_OUTPUT"
rclone copy "${{ env.WAIT_CONVERT_FOLDER_PATH }}/$FILE_FULL_NAME" ${{ github.workspace }}
- name: Convert
run: |
${{ github.workspace }}/publish/ConsoleM3U8 -f "${{ github.workspace }}/${{ steps.get_convert_file.outputs.WAIT_CONVERT_FILE_FULL_NAME }}" --keyUrl "${{ secrets.ENCRYPTION_KEY_URL }}" --ivUrl "${{ secrets.ENCRYPTION_IV_URL }}" -u ${{ secrets.UPLOAD_URL }} -t "${{ secrets.UPLOAD_TOKEN }}" -o ${{secrets.ORIGINAL_URL}} -r ${{secrets.REPLACE_URL}}
- name: Upload M3U8
run: |
rclone copy "${{ github.workspace }}/${{steps.get_convert_file.outputs.WAIT_CONVERT_FILE_NAME}}/${{steps.get_convert_file.outputs.WAIT_CONVERT_FILE_NAME}}.m3u8" ${{secrets.RCLONE_DRIVE_NAME}}:/${{secrets.RESULT_RCLONE_FOLDER_PATH}}/