1
0
Fork 0
mirror of https://github.com/sussy-code/smov.git synced 2024-12-20 14:37:43 +01:00

Merge branch 'dev' into feat/subtitle-rendering

This commit is contained in:
Emre Can Minnet 2023-03-10 22:27:30 +03:00 committed by GitHub
commit 007375c1df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 105 additions and 18 deletions

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
* text=auto eol=lf

View file

@ -18,12 +18,13 @@ jobs:
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
node-version: 18 node-version: 18
cache: 'yarn'
- name: Install Yarn packages - name: Install Yarn packages
run: yarn install run: yarn install
- name: Build project - name: Build project
run: npm run build run: yarn build
- name: Upload production-ready build files - name: Upload production-ready build files
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3

48
.github/workflows/linting_annotate.yml vendored Normal file
View file

@ -0,0 +1,48 @@
name: Annotate linting
permissions:
actions: read # download artifact
checks: write # annotate
# this is done as a seperate workflow so
# the annotater has access to write to checks (to annotate)
on:
workflow_run:
workflows: ["Linting and Testing"]
types:
- completed
jobs:
annotate:
name: Annotate linting
runs-on: ubuntu-latest
steps:
- name: Download linting report
uses: actions/github-script@v6
with:
script: |
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
const matchArtifact = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "eslint_report.json"
})[0];
const download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
const fs = require('fs');
fs.writeFileSync('${{github.workspace}}/eslint_report.zip', Buffer.from(download.data));
- run: unzip eslint_report.zip
- name: Annotate linting
uses: ataylorme/eslint-annotate-action@v2
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
report-json: "eslint_report.json"

View file

@ -5,8 +5,7 @@ on:
branches: branches:
- master - master
- dev - dev
pull_request_target: pull_request:
types: [opened, reopened, synchronize]
jobs: jobs:
linting: linting:
@ -21,6 +20,7 @@ jobs:
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
node-version: 18 node-version: 18
cache: 'yarn'
- name: Install Yarn packages - name: Install Yarn packages
run: yarn install run: yarn install
@ -30,11 +30,27 @@ jobs:
# continue on error, so it still reports it in the next step # continue on error, so it still reports it in the next step
continue-on-error: true continue-on-error: true
- name: Annotate Code Linting Results - uses: actions/upload-artifact@v3
uses: ataylorme/eslint-annotate-action@v2
with: with:
repo-token: "${{ secrets.GITHUB_TOKEN }}" name: eslint_report.json
report-json: "eslint_report.json" path: eslint_report.json
building:
name: Build project
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'yarn'
- name: Install Yarn packages
run: yarn install
- name: Build Project - name: Build Project
run: npm run build run: yarn build

View file

@ -1,6 +1,10 @@
import { proxiedFetch } from "../helpers/fetch"; import { proxiedFetch } from "../helpers/fetch";
import { registerProvider } from "../helpers/register"; import { registerProvider } from "../helpers/register";
import { MWStreamQuality, MWStreamType } from "../helpers/streams"; import {
MWCaptionType,
MWStreamQuality,
MWStreamType,
} from "../helpers/streams";
import { MWMediaType } from "../metadata/types"; import { MWMediaType } from "../metadata/types";
const netfilmBase = "https://net-film.vercel.app"; const netfilmBase = "https://net-film.vercel.app";
@ -18,7 +22,6 @@ registerProvider({
displayName: "NetFilm", displayName: "NetFilm",
rank: 15, rank: 15,
type: [MWMediaType.MOVIE, MWMediaType.SERIES], type: [MWMediaType.MOVIE, MWMediaType.SERIES],
disabled: true, // https://github.com/lamhoang1256/netfilm/issues/25
async scrape({ media, episode, progress }) { async scrape({ media, episode, progress }) {
// search for relevant item // search for relevant item
@ -48,20 +51,29 @@ registerProvider({
} }
); );
const { qualities } = watchInfo.data; const data = watchInfo.data;
// get best quality source // get best quality source
const source = qualities.reduce((p: any, c: any) => const source = data.qualities.reduce((p: any, c: any) =>
c.quality > p.quality ? c : p c.quality > p.quality ? c : p
); );
const mappedCaptions = data.subtitles.map((sub: Record<string, any>) => ({
needsProxy: false,
url: sub.url.replace("https://convert-srt-to-vtt.vercel.app/?url=", ""),
type: MWCaptionType.SRT,
langIso: sub.language,
}));
return { return {
embeds: [], embeds: [],
stream: { stream: {
streamUrl: source.url, streamUrl: source.url
.replace("akm-cdn", "aws-cdn")
.replace("gg-cdn", "aws-cdn"),
quality: qualityMap[source.quality as QualityInMap], quality: qualityMap[source.quality as QualityInMap],
type: MWStreamType.HLS, type: MWStreamType.HLS,
captions: [], captions: mappedCaptions,
}, },
}; };
} }
@ -109,20 +121,29 @@ registerProvider({
} }
); );
const { qualities } = episodeStream.data; const data = episodeStream.data;
// get best quality source // get best quality source
const source = qualities.reduce((p: any, c: any) => const source = data.qualities.reduce((p: any, c: any) =>
c.quality > p.quality ? c : p c.quality > p.quality ? c : p
); );
const mappedCaptions = data.subtitles.map((sub: Record<string, any>) => ({
needsProxy: false,
url: sub.url.replace("https://convert-srt-to-vtt.vercel.app/?url=", ""),
type: MWCaptionType.SRT,
langIso: sub.language,
}));
return { return {
embeds: [], embeds: [],
stream: { stream: {
streamUrl: source.url, streamUrl: source.url
.replace("akm-cdn", "aws-cdn")
.replace("gg-cdn", "aws-cdn"),
quality: qualityMap[source.quality as QualityInMap], quality: qualityMap[source.quality as QualityInMap],
type: MWStreamType.HLS, type: MWStreamType.HLS,
captions: [], captions: mappedCaptions,
}, },
}; };
}, },