mirror of
https://github.com/TeamNewPipe/NewPipe.git
synced 2024-11-22 11:02:35 +01:00
Merge pull request #10166 from TeamNewPipe/fix/image-workflow
Add support for new GitHub assets URLs in image minimizer workflow
This commit is contained in:
commit
e765343162
81
.github/workflows/image-minimizer.js
vendored
81
.github/workflows/image-minimizer.js
vendored
@ -30,10 +30,12 @@ module.exports = async ({github, context}) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Regex for finding images (simple variant) ![ALT_TEXT](https://*.githubusercontent.com/<number>/<variousHexStringsAnd->.<fileExtension>)
|
// Regex for finding images (simple variant) ![ALT_TEXT](https://*.githubusercontent.com/<number>/<variousHexStringsAnd->.<fileExtension>)
|
||||||
const REGEX_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm;
|
const REGEX_USER_CONTENT_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm;
|
||||||
|
const REGEX_ASSETS_IMAGE_LOCKUP = /\!\[(.*)\]\((https:\/\/github\.com\/[-\w\d]+\/[-\w\d]+\/assets\/\d+\/[\-0-9a-f]{32,512})\)/gm;
|
||||||
|
|
||||||
// Check if we found something
|
// Check if we found something
|
||||||
let foundSimpleImages = REGEX_IMAGE_LOOKUP.test(initialBody);
|
let foundSimpleImages = REGEX_USER_CONTENT_IMAGE_LOOKUP.test(initialBody)
|
||||||
|
|| REGEX_ASSETS_IMAGE_LOCKUP.test(initialBody);
|
||||||
if (!foundSimpleImages) {
|
if (!foundSimpleImages) {
|
||||||
console.log('Found no simple images to process');
|
console.log('Found no simple images to process');
|
||||||
return;
|
return;
|
||||||
@ -47,7 +49,45 @@ module.exports = async ({github, context}) => {
|
|||||||
var wasMatchModified = false;
|
var wasMatchModified = false;
|
||||||
|
|
||||||
// Try to find and replace the images with minimized ones
|
// Try to find and replace the images with minimized ones
|
||||||
let newBody = await replaceAsync(initialBody, REGEX_IMAGE_LOOKUP, async (match, g1, g2) => {
|
let newBody = await replaceAsync(initialBody, REGEX_USER_CONTENT_IMAGE_LOOKUP, minimizeAsync);
|
||||||
|
newBody = await replaceAsync(newBody, REGEX_ASSETS_IMAGE_LOCKUP, minimizeAsync);
|
||||||
|
|
||||||
|
if (!wasMatchModified) {
|
||||||
|
console.log('Nothing was modified. Skipping update');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the corresponding element
|
||||||
|
if (context.eventName == 'issue_comment') {
|
||||||
|
console.log('Updating comment with id', context.payload.comment.id);
|
||||||
|
await github.rest.issues.updateComment({
|
||||||
|
comment_id: context.payload.comment.id,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: newBody
|
||||||
|
})
|
||||||
|
} else if (context.eventName == 'issues') {
|
||||||
|
console.log('Updating issue', context.payload.issue.number);
|
||||||
|
await github.rest.issues.update({
|
||||||
|
issue_number: context.payload.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: newBody
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Asnyc replace function from https://stackoverflow.com/a/48032528
|
||||||
|
async function replaceAsync(str, regex, asyncFn) {
|
||||||
|
const promises = [];
|
||||||
|
str.replace(regex, (match, ...args) => {
|
||||||
|
const promise = asyncFn(match, ...args);
|
||||||
|
promises.push(promise);
|
||||||
|
});
|
||||||
|
const data = await Promise.all(promises);
|
||||||
|
return str.replace(regex, () => data.shift());
|
||||||
|
}
|
||||||
|
|
||||||
|
async function minimizeAsync(match, g1, g2) {
|
||||||
console.log(`Found match '${match}'`);
|
console.log(`Found match '${match}'`);
|
||||||
|
|
||||||
if (g1.endsWith(IGNORE_ALT_NAME_END)) {
|
if (g1.endsWith(IGNORE_ALT_NAME_END)) {
|
||||||
@ -93,40 +133,5 @@ module.exports = async ({github, context}) => {
|
|||||||
|
|
||||||
console.log(`Match '${match}' is ok/will not be modified`);
|
console.log(`Match '${match}' is ok/will not be modified`);
|
||||||
return match;
|
return match;
|
||||||
});
|
|
||||||
|
|
||||||
if (!wasMatchModified) {
|
|
||||||
console.log('Nothing was modified. Skipping update');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the corresponding element
|
|
||||||
if (context.eventName == 'issue_comment') {
|
|
||||||
console.log('Updating comment with id', context.payload.comment.id);
|
|
||||||
await github.rest.issues.updateComment({
|
|
||||||
comment_id: context.payload.comment.id,
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
body: newBody
|
|
||||||
})
|
|
||||||
} else if (context.eventName == 'issues') {
|
|
||||||
console.log('Updating issue', context.payload.issue.number);
|
|
||||||
await github.rest.issues.update({
|
|
||||||
issue_number: context.payload.issue.number,
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
body: newBody
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Asnyc replace function from https://stackoverflow.com/a/48032528
|
|
||||||
async function replaceAsync(str, regex, asyncFn) {
|
|
||||||
const promises = [];
|
|
||||||
str.replace(regex, (match, ...args) => {
|
|
||||||
const promise = asyncFn(match, ...args);
|
|
||||||
promises.push(promise);
|
|
||||||
});
|
|
||||||
const data = await Promise.all(promises);
|
|
||||||
return str.replace(regex, () => data.shift());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user