はじめに
hkob の雑記録の第463回目(通算36日目)は、moodle_extract スクリプトの年度更新です。
トリガーは Alfred
moodle_extract のトリガーは Alfred にしています。以前はターミナルでコマンドを実行していたのですが、いちいちブラウザからターミナルに切り替えるのも面倒なので、Alfred から me とタイプするだけにしています。

Run Script は moodle_extract を呼んでいるだけです。そもそも query 受け取る必要もないですね。

moodle_extract.rb の修正
昨年度書いたスクリプトは年度を示す 25 という数字があちこちに記載されていました。今回、年度更新するにあたり全部定数 YEAR に変換しました。本来は最初からそう書くべきでしたね。また、今回はフォルダを作成していないことも想定して、mkdir_p も追加しています。
#!/usr/bin/env ruby require "fileutils" YEAR=26 DOWNLOAD_DIR = "/Users/hkob/Downloads".freeze STORE_DIR = "/Users/hkob/Library/CloudStorage/Dropbox/by_kind/00.Lecture.localized/Lecture20#{YEAR}".freeze def extract(file) file =~ %r{^(.*)\/#{YEAR}-([^-]+)-(.*)\.zip} dir = Regexp.last_match(1) lec = Regexp.last_match(2) name = Regexp.last_match(3) p [file, dir, lec, name] system("open '#{file}'") sleep 3 Dir.chdir "#{DOWNLOAD_DIR}/#{YEAR}-#{lec}-#{name}" move_dir = { "pr2" => "024.プログラミングII", "pr1" => "023.プログラミングI", "exp1" => "022.情報システム実験実習", "db" => "025.データベース", "mp" => "017.マルチメディア処理6000", }[lec] dir = "#{STORE_DIR}/#{move_dir}" FileUtils.mkdir_p(dir) FileUtils.rm_rf("#{dir}/#{YEAR}-#{lec}-#{name}") FileUtils.mv("#{DOWNLOAD_DIR}/#{YEAR}-#{lec}-#{name}", dir) FileUtils.rm("#{file}") system(%Q[open "#{dir}/#{YEAR}-#{lec}-#{name}"]) end TUS_DIR = "/Users/hkob/Library/CloudStorage/Dropbox/99.tus.localized/report2025" def extract_tus(file) file =~ %r{^.*\/(.*)\.zip} name = Regexp.last_match(1) system("open '#{file}'") sleep 3 Dir.chdir "#{DOWNLOAD_DIR}/#{name}" FileUtils.rm_rf("#{TUS_DIR}/#{name}") FileUtils.mv("#{DOWNLOAD_DIR}/#{name}", TUS_DIR) FileUtils.rm("#{file}") system(%Q[open "#{TUS_DIR}/#{name}"]) end Dir.glob("#{DOWNLOAD_DIR}/#{YEAR}-*.zip").each do |file| extract file end Dir.glob("#{DOWNLOAD_DIR}/マルチ*.zip").each do |file| extract_tus file end
実行結果
moodle で課題をダウンロードすると Downloads フォルダに zip ファイルが保存されます。そこで、Alfred から me とアクションを起動すると、zip を展開し該当する授業のフォルダに自動保存されます。後から課題が再提出されることもあるので、その場合にはフォルダ全体を削除して差し替えています。

おまけ: フォルダのローカライズ
このスクリプトを見て、Mac OS X 10.2 の頃に使っていた .localized のフォルダが未だに残っているのに気づきました。ターミナルからは ASCII のフォルダなのですが、Finder からは日本語で見える機能です。当時は 2002年の新居さんのスクリプトを使っていました。
この記事を探すために Google 検索したら、見たことあるようなテキストを見つけました。4年前に書いた私の記事でした。そういえば macOS Tips のようなシリーズを書いていた頃もあったんですね。ここに示していた localize-folder はいつの間にかなくなっていたので、また追加しておきました。今は ~/bin も Dropbox で管理しているので、全てのマシンでこのスクリプトを利用可能になりました。
おわりに
単に moodle_extract.rb の年度更新だけの簡単な内容になる予定でしたが、4年前の自分に出会うという面白い体験をしました。いつの間にかなくしてしまったおもちゃが、玩具箱の隅から見つかったような感覚です。気になったらフォルダの localize 化を進めて行こうと思います。
https://hkob.notion.site/hkob-16dd8e4e98ab807cbe3cf3cc94cdfe0f?pvs=4hkob.notion.site