mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-04-05 14:41:27 +03:00
Compare commits
9 Commits
archive-im
...
gh-actions
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21463762ce | ||
|
|
b06f6a81bb | ||
|
|
82c8146032 | ||
|
|
6f13eab550 | ||
|
|
9d2d70b194 | ||
|
|
4e04ceae16 | ||
|
|
5eec5ac082 | ||
|
|
5253ce8793 | ||
|
|
9a08fc6140 |
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
|||||||
- name: setup node
|
- name: setup node
|
||||||
uses: actions/setup-node@v2
|
uses: actions/setup-node@v2
|
||||||
with:
|
with:
|
||||||
node-version: '14'
|
node-version: '16'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
- name: install dependencies
|
- name: install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
26
README.md
26
README.md
@@ -28,13 +28,29 @@ Dark mode:
|
|||||||
|
|
||||||
NOTE: If you would like to use Docker, you can skip down to the [Docker](#Docker) section for a setup guide.
|
NOTE: If you would like to use Docker, you can skip down to the [Docker](#Docker) section for a setup guide.
|
||||||
|
|
||||||
Debian/Ubuntu:
|
Required dependencies:
|
||||||
|
|
||||||
|
* Node.js 16
|
||||||
|
* Python
|
||||||
|
|
||||||
|
Optional dependencies:
|
||||||
|
|
||||||
|
* AtomicParsley (for embedding thumbnails, package name `atomicparsley`)
|
||||||
|
* [tcd](https://github.com/PetterKraabol/Twitch-Chat-Downloader) (for downloading Twitch VOD chats)
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Debian/Ubuntu</summary>
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
|
||||||
sudo apt-get install nodejs youtube-dl ffmpeg unzip python npm
|
sudo apt-get install nodejs youtube-dl ffmpeg unzip python npm
|
||||||
```
|
```
|
||||||
|
|
||||||
CentOS 7:
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>CentOS 7</summary>
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo yum install epel-release
|
sudo yum install epel-release
|
||||||
@@ -42,13 +58,11 @@ sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfu
|
|||||||
sudo yum install centos-release-scl-rh
|
sudo yum install centos-release-scl-rh
|
||||||
sudo yum install rh-nodejs12
|
sudo yum install rh-nodejs12
|
||||||
scl enable rh-nodejs12 bash
|
scl enable rh-nodejs12 bash
|
||||||
|
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
|
||||||
sudo yum install nodejs youtube-dl ffmpeg ffmpeg-devel
|
sudo yum install nodejs youtube-dl ffmpeg ffmpeg-devel
|
||||||
```
|
```
|
||||||
|
|
||||||
Optional dependencies:
|
</details>
|
||||||
|
|
||||||
* AtomicParsley (for embedding thumbnails, package name `atomicparsley`)
|
|
||||||
* [tcd](https://github.com/PetterKraabol/Twitch-Chat-Downloader) (for downloading Twitch VOD chats)
|
|
||||||
|
|
||||||
### Installing
|
### Installing
|
||||||
|
|
||||||
|
|||||||
@@ -220,7 +220,8 @@ const DEFAULT_CONFIG = {
|
|||||||
"telegram_bot_token": "",
|
"telegram_bot_token": "",
|
||||||
"telegram_chat_id": "",
|
"telegram_chat_id": "",
|
||||||
"webhook_URL": "",
|
"webhook_URL": "",
|
||||||
"discord_webhook_URL": ""
|
"discord_webhook_URL": "",
|
||||||
|
"slack_webhook_URL": "",
|
||||||
},
|
},
|
||||||
"Themes": {
|
"Themes": {
|
||||||
"default_theme": "default",
|
"default_theme": "default",
|
||||||
|
|||||||
@@ -162,6 +162,10 @@ exports.CONFIG_ITEMS = {
|
|||||||
'key': 'ytdl_discord_webhook_url',
|
'key': 'ytdl_discord_webhook_url',
|
||||||
'path': 'YoutubeDLMaterial.API.discord_webhook_URL'
|
'path': 'YoutubeDLMaterial.API.discord_webhook_URL'
|
||||||
},
|
},
|
||||||
|
'ytdl_slack_webhook_url': {
|
||||||
|
'key': 'ytdl_slack_webhook_url',
|
||||||
|
'path': 'YoutubeDLMaterial.API.slack_webhook_URL'
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
// Themes
|
// Themes
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ exports._connectToDB = async (custom_connection_string = null) => {
|
|||||||
|
|
||||||
exports.setVideoProperty = async (file_uid, assignment_obj) => {
|
exports.setVideoProperty = async (file_uid, assignment_obj) => {
|
||||||
// TODO: check if video exists, throw error if not
|
// TODO: check if video exists, throw error if not
|
||||||
await db_api.updateRecord('files', {uid: file_uid}, assignment_obj);
|
await exports.updateRecord('files', {uid: file_uid}, assignment_obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.getFileDirectoriesAndDBs = async () => {
|
exports.getFileDirectoriesAndDBs = async () => {
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ exports.sendNotification = async (notification) => {
|
|||||||
if (config_api.getConfigItem('ytdl_discord_webhook_url')) {
|
if (config_api.getConfigItem('ytdl_discord_webhook_url')) {
|
||||||
sendDiscordNotification(data);
|
sendDiscordNotification(data);
|
||||||
}
|
}
|
||||||
|
if (config_api.getConfigItem('ytdl_slack_webhook_url')) {
|
||||||
|
sendSlackNotification(data);
|
||||||
|
}
|
||||||
|
|
||||||
await db_api.insertRecordIntoTable('notifications', notification);
|
await db_api.insertRecordIntoTable('notifications', notification);
|
||||||
return notification;
|
return notification;
|
||||||
@@ -174,6 +177,65 @@ async function sendDiscordNotification({body, title, type, url, thumbnail}) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sendSlackNotification({body, title, type, url, thumbnail}) {
|
||||||
|
const slack_webhook_url = config_api.getConfigItem('ytdl_slack_webhook_url');
|
||||||
|
logger.verbose(`Sending slack notification to ${slack_webhook_url}`);
|
||||||
|
const data = {
|
||||||
|
blocks: [
|
||||||
|
{
|
||||||
|
type: "section",
|
||||||
|
text: {
|
||||||
|
type: "mrkdwn",
|
||||||
|
text: `*${title}*`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "section",
|
||||||
|
text: {
|
||||||
|
type: "plain_text",
|
||||||
|
text: body
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
// add thumbnail if exists
|
||||||
|
if (thumbnail) {
|
||||||
|
data['blocks'].push({
|
||||||
|
type: "image",
|
||||||
|
image_url: thumbnail,
|
||||||
|
alt_text: "notification_thumbnail"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
data['blocks'].push(
|
||||||
|
{
|
||||||
|
type: "section",
|
||||||
|
text: {
|
||||||
|
type: "mrkdwn",
|
||||||
|
text: `<${url}|${url}>`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "context",
|
||||||
|
elements: [
|
||||||
|
{
|
||||||
|
type: "mrkdwn",
|
||||||
|
text: `*ID:* ${type}`
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
fetch(slack_webhook_url, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
},
|
||||||
|
body: JSON.stringify(data),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function sendGenericNotification(data) {
|
function sendGenericNotification(data) {
|
||||||
const webhook_url = config_api.getConfigItem('ytdl_webhook_url');
|
const webhook_url = config_api.getConfigItem('ytdl_webhook_url');
|
||||||
logger.verbose(`Sending generic notification to ${webhook_url}`);
|
logger.verbose(`Sending generic notification to ${webhook_url}`);
|
||||||
|
|||||||
@@ -17,6 +17,10 @@
|
|||||||
"bugs": {
|
"bugs": {
|
||||||
"url": ""
|
"url": ""
|
||||||
},
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^16",
|
||||||
|
"npm": "6.14.4"
|
||||||
|
},
|
||||||
"homepage": "",
|
"homepage": "",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/builders": "^1.6.1",
|
"@discordjs/builders": "^1.6.1",
|
||||||
|
|||||||
@@ -387,9 +387,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-12 mb-2 mt-3">
|
<div class="col-12 mb-2 mt-3">
|
||||||
<mat-form-field class="text-field" color="accent">
|
<mat-form-field class="text-field" color="accent">
|
||||||
<mat-label i18n="Discord webhook URL">Discord Webhook URL</mat-label>
|
<mat-label i18n="Discord Webhook URL">Discord Webhook URL</mat-label>
|
||||||
<input placeholder="https://discord.com/api/webhooks/<webhook_id>/<webhook_token>" [(ngModel)]="new_config['API']['discord_webhook_URL']" matInput>
|
<input placeholder="https://discord.com/api/webhooks/<webhook_id>/<webhook_token>" [(ngModel)]="new_config['API']['discord_webhook_URL']" matInput>
|
||||||
<mat-hint><a target="_blank" href="https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks"><ng-container i18n="Gotify API setting hint">See docs here.</ng-container></a></mat-hint>
|
<mat-hint><a target="_blank" href="https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks"><ng-container i18n="Discord API setting hint">See docs here.</ng-container></a></mat-hint>
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 mb-2 mt-3">
|
||||||
|
<mat-form-field class="text-field" color="accent">
|
||||||
|
<mat-label i18n="Slack Webhook URL">Slack Webhook URL</mat-label>
|
||||||
|
<input placeholder="https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX" [(ngModel)]="new_config['API']['slack_webhook_URL']" matInput>
|
||||||
|
<mat-hint><a target="_blank" href="https://api.slack.com/messaging/webhooks"><ng-container i18n="Slack API setting hint">See docs here.</ng-container></a></mat-hint>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 mt-3">
|
<div class="col-12 mt-3">
|
||||||
|
|||||||
Reference in New Issue
Block a user