1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00

feat(moodle-dl): use module and package from nixpkgs fork

This commit is contained in:
2021-03-30 23:19:40 +02:00
parent 5eaee95ba1
commit a128813990
4 changed files with 54 additions and 126 deletions

View File

@@ -1,59 +1,54 @@
{ config, pkgs, lib, ... }:
let
inherit (import <niveum/lib>) kieran;
moodle-dl = pkgs.callPackage <niveum/packages/moodle-dl> {};
moodle-dl-config = {
telegram = {
token = lib.strings.fileContents <system-secrets/telegram/moodle-dl.token>;
chat_id = "18980945";
send_error_msg = true;
};
token = lib.strings.fileContents <system-secrets/moodle.token>;
moodle_domain = "moodle.hu-berlin.de";
moodle_path = "/";
download_course_ids = [
99881 # Dialektologie
100183 # Onomastik
100353 # Sanskrit I
100692 # Sanskrit Tutorium
99832 # Germanisch
99823 # Gotisch
99813 # Altalbanisch
98681 # Geistliche Lyrik von Luther bis Lehnert
99667 # Antike Mythologie
# 52365 # FSR KlassPhil
];
download_submissions = true;
download_descriptions = true;
download_links_in_descriptions = false;
download_databases = false;
download_forums = false;
download_linked_files = false;
download_also_with_cookie = false;
nixpkgs-kmein = builtins.fetchGit {
url = "https://github.com/kmein/nixpkgs";
ref = "refs/heads/feature/moodle-dl-module";
rev = "98ec084fe4dd9608769d592318d211dff3d32d86";
};
moodle-dl-json = pkgs.writeText "moodle-dl.json" (builtins.toJSON moodle-dl-config);
moodle-dl-directory = "/var/lib/moodle";
moodle-dl-package = (import nixpkgs-kmein {}).moodle-dl.overrideAttrs (old: old // {
patches = old.patches ++ [ <niveum/packages/moodle-dl/telegram-format.patch> ];
});
in
{
users.extraUsers.moodle = {
isNormalUser = false;
home = moodle-dl-directory;
createHome = true;
openssh.authorizedKeys.keys = [
# for sshfs mount
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDtIFmbspaBHaSkLEx43V0uaVd7l9NUFiwt2VOP++KzLjvRMLkyF2hg2HjmogTjUvTyoDs7RHwEH/cHZlJ5JQkM1jRqQpnYwGfkZEwYvmXAl6LY9+vQMP36gNPfXmKX3y3LelO7oD2uhUs0guTtg0tHUyN5/UY5u+VinyD6djxDkHaCUn3S7CS/odBcs/4flXT654wsvzgYicnSKH9R4W+7C0YsckZ/NoIkA4jnuwtWZYWrUkxd4/290buX6pAc5+zVVZqyy0sI4i8s6pO9RL5W7xvYt+w+U0u0dMxm5ckiRmLVKfIbMN4YtDxsZbZDajlQ1nDbOsEsrSXWz4H4cSNot7J820x1qh5SSxL4GSQlcT+6xCFk9kKyflxoS3oLoPLttx3rmOMkZKJWxF/IKLW47orxV6wkG5mHxdeR3cf6jX4j3nkwFVyC9R+WG4w2Z4vKONVE7uWGYU3y4OpR1e6MGHVShkNKqEvC/Kjcc/6v7I7AKRAuPZB0WEw36tA65/8= root@wilde"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFFPHt+FPQ6gq8Ev65YsBZrafdtpWGpCNnlVvy67S1BK root@manakish"
];
useDefaultShell = true;
imports = [ "${nixpkgs-kmein}/nixos/modules/services/networking/moodle-dl.nix" ];
services.moodle-dl = {
enable = true;
startAt = "hourly";
package = moodle-dl-package;
config = {
telegram = {
token = lib.strings.fileContents <system-secrets/telegram/moodle-dl.token>;
chat_id = "18980945";
send_error_msg = true;
};
token = lib.strings.fileContents <system-secrets/moodle.token>;
moodle_domain = "moodle.hu-berlin.de";
moodle_path = "/";
download_course_ids = [
99881 # Dialektologie
100183 # Onomastik
100353 # Sanskrit I
100692 # Sanskrit Tutorium
99832 # Germanisch
99823 # Gotisch
99813 # Altalbanisch
98681 # Geistliche Lyrik von Luther bis Lehnert
99667 # Antike Mythologie
# 52365 # FSR KlassPhil
];
download_submissions = true;
download_descriptions = true;
download_links_in_descriptions = false;
download_databases = false;
download_forums = false;
download_linked_files = false;
download_also_with_cookie = false;
};
};
system.activationScripts.moodle-dl-config = "ln -sfn ${toString moodle-dl-json} ${config.users.extraUsers.moodle.home}/config.json";
services.syncthing = {
services.syncthing = let moodle-dl-directory = config.services.moodle-dl.directory; in {
enable = true;
user = "moodle"; # config.users.extraUsers.moodle.name;
openDefaultPorts = true;
@@ -71,16 +66,4 @@ in
};
};
};
systemd.services.moodle-dl = {
enable = true;
startAt = "hourly";
serviceConfig = {
Type = "oneshot";
User = config.users.extraUsers.moodle.name;
WorkingDirectory = config.users.extraUsers.moodle.home;
};
wants = [ "network-online.target" ];
script = "${moodle-dl}/bin/moodle-dl";
};
}

View File

@@ -1,33 +0,0 @@
{ stdenv, lib, python3Packages }:
python3Packages.buildPythonApplication rec {
pname = "moodle-dl";
version = "2.1.1.1";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "0nv2gm4x6mfsa0wywm4xbsx6nf6hx4kb63s4lczaxb9m4ybjd45h";
};
patches = [
./readchar-version.patch
./telegram-format.patch
];
propagatedBuildInputs = with python3Packages; [
sentry-sdk
colorama
readchar
youtube-dl
certifi
html2text
requests
];
meta = with stdenv.lib; {
homepage = "https://github.com/C0D3D3V/Moodle-Downloader-2";
maintainers = [ maintainers.kmein ];
description = "A Moodle downloader that downloads course content fast from Moodle";
license = licenses.gpl3;
platforms = platforms.all;
};
}

View File

@@ -1,13 +0,0 @@
diff --git a/setup.py b/setup.py
index 180139d..5582359 100644
--- a/setup.py
+++ b/setup.py
@@ -32,7 +32,7 @@ setup(
install_requires=[
'sentry_sdk>=0.13.5',
'colorama>=0.4.3',
- 'readchar>=2.0.1',
+ 'readchar>=2.0.0',
'youtube_dl>=2020.9.20',
'certifi>=2020.4.5.2',
'html2text>=2020.1.16',

View File

@@ -1,8 +1,8 @@
diff --git a/moodle_dl/notification_services/telegram/telegram_formater.py b/moodle_dl/notification_services/telegram/telegram_formater.py
index 05180b6..33009b0 100644
index 470ff32..9ff1fa4 100644
--- a/moodle_dl/notification_services/telegram/telegram_formater.py
+++ b/moodle_dl/notification_services/telegram/telegram_formater.py
@@ -15,10 +15,10 @@ def create_full_moodle_diff_message(changed_courses: [Course]) -> [str]:
@@ -37,24 +37,24 @@ def create_full_moodle_diff_messages(changed_courses: [Course]) -> [str]:
diff_count += len(course.files)
result_list = []
@@ -10,36 +10,27 @@ index 05180b6..33009b0 100644
+ one_msg_content = "%s changes in Moodle!" % (diff_count)
for course in changed_courses:
- new_line = '\r\n\r\n\r\n> <b>' + course.fullname + '</b>\r\n'
- new_line = '\r\n\r\n\r\n> **' + course.fullname + '**\r\n'
+ new_line = "\r\n\r\n<b>" + course.fullname + "</b>"
if len(one_msg_content) + len(new_line) >= 4096:
result_list.append(one_msg_content)
one_msg_content = new_line
@@ -27,16 +27,16 @@ def create_full_moodle_diff_message(changed_courses: [Course]) -> [str]:
one_msg_content = append_with_limit(new_line, one_msg_content, result_list)
for file in course.files:
if file.modified:
- new_line = '\r\n<i>* Modified:</i> ' + file.saved_to
- new_line = '\r\n__* Modified:__ ' + file.saved_to
+ new_line = "\r\n✍ " + file.saved_to
elif file.moved:
if file.new_file is not None:
- new_line = '\r\n<i>* Moved:</i> ' + file.new_file.saved_to
- new_line = '\r\n__* Moved:__ ' + file.new_file.saved_to
+ new_line = "\r\n📂 " + file.new_file.saved_to
else:
- new_line = '\r\n<i>* Moved:</i> ' + file.saved_to
- new_line = '\r\n__* Moved:__ ' + file.saved_to
+ new_line = "\r\n📂 " + file.saved_to
elif file.deleted:
- new_line = '\r\n<i>- Deleted:</i> ' + file.saved_to
- new_line = '\r\n__- Deleted:__ ' + file.saved_to
+ new_line = "\r\n🗑 " + file.saved_to
else:
- new_line = '\r\n<i>+ Added:</i> ' + file.saved_to
- new_line = '\r\n__+ Added:__ ' + file.saved_to
+ new_line = "\r\n🎉 " + file.saved_to
if len(one_msg_content) + len(new_line) >= 4096:
result_list.append(one_msg_content)
@@ -52,4 +52,4 @@ def create_full_error_message(details) -> (str, {str: str}):
"""
Creates an error message
"""
- return 'The following error occurred during execution:' + details
+ return "The following error occurred during execution:" + details
one_msg_content = append_with_limit(new_line, one_msg_content, result_list)