moodle_extract の年度更新 : hkob の雑記録 (463)

はじめに

hkob の雑記録の第463回目(通算36日目)は、moodle_extract スクリプトの年度更新です。

トリガーは Alfred

moodle_extract のトリガーは Alfred にしています。以前はターミナルでコマンドを実行していたのですが、いちいちブラウザからターミナルに切り替えるのも面倒なので、Alfred から me とタイプするだけにしています。

me

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

Run Script

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