Home | First | Prev | Next | Last |
<script type="text/javascript"> 'use strict'; var playlist = [ 'audiofile1.mp3', 'audiofile2.mp3', 'audiofile3.mp3', 'audiofile4.mp3', 'audiofile5.mp3', 'audiofile6.mp3', ]; var audio = document.createElement('audio'); document.body.appendChild(audio); audio.controls = true; audio.src = playlist[0]; audio.play(); var index = 0; audio.addEventListener('ended', function(){ index++; if (index < playlist.length) { audio.src = playlist[index]; audio.play(); } audio.stop(); }); </script>
var audio = document.createElement('audio');で、<audio> タグを作り、playlist から一つづつ読み込んで演奏するようにしています。Firefox で試したら、連続再生がうまくいきました。
<audio controls src='audiofile1.mp3'></audio>としても、プレーヤは表示されるものの、プレイボタンをクリックしてもファイルが再生されませんでした。何かが足らないのだろうと思いますが、まだ解決していません。
<!DOCTYPE html> <html lang='ja'> <head> <meta charset='utf-8'> <script src="../js/jwplayer.js"></script> <title>連続再生</title> </head> <body> <div id="Player"></div> <script type="text/javascript"> jwplayer("Player").setup({ width: -1, height: 40, playlist: [ { "file": "music1.mp3" }, { "file": "music2.mp3" }, { "file": "music3.mp3" }, ] }); </script>
<script src="https://cdn.jsdelivr.net/npm/howler@2.2.0/dist/howler.min.js"></script>オーディオファイルは、次のように指定しました。
var sound = new Howl({ src: ['sample_music.mp3'] });
<button id="js-play">play</button> <button id="js-stop">stop</button>それから、次のようにボタンのクリックを検知したとき、演奏や停止機能が働くようにしました。
//再生ボタンを押すと再生 const playButton = document.getElementById("js-play"); playButton.addEventListener('click', () => { //'sample_music.mp3'を再生 sound.play(); }); //停止ボタンを押すと停止 const stopButton = document.getElementById("js-stop"); stopButton.addEventListener('click', () => { //'sample_music.mp3'を停止 sound.stop(); });
08/14/2024 10:04:18 George 08/14/2024 07:49:36 James 08/13/2024 16:10:13 James 08/12/2024 20:19:44 Andrew 08/12/2024 20:10:01 Andrew 08/12/2024 18:45:25 John 08/11/2024 16:54:07 Martin 08/01/2024 15:11:51 George 08/01/2024 07:34:29 James 07/30/2024 01:07:18 George 07/17/2024 10:34:55 James 07/17/2024 09:23:25 Abraham 07/12/2024 14:18:14 James 07/12/2024 11:31:49 George 07/12/2024 08:33:03 John 07/12/2024 08:05:10 William 07/12/2024 07:53:56 James 07/12/2024 04:04:19 Zachary 07/11/2024 23:24:32 Franklin 07/11/2024 22:55:50 John
$ sort -k 3 accesslog.txt (結果) 07/17/2024 09:23:25 Abraham 08/12/2024 20:10:01 Andrew 08/12/2024 20:19:44 Andrew 07/11/2024 23:24:32 Franklin 07/12/2024 11:31:49 George 07/30/2024 01:07:18 George 08/01/2024 15:11:51 George 08/14/2024 10:04:18 George 07/12/2024 07:53:56 James 07/12/2024 14:18:14 James 07/17/2024 10:34:55 James 08/01/2024 07:34:29 James 08/13/2024 16:10:13 James 08/14/2024 07:49:36 James 07/11/2024 22:55:50 John 07/12/2024 08:33:03 John 08/12/2024 18:45:25 John 08/11/2024 16:54:07 Martin 07/12/2024 08:05:10 William 07/12/2024 04:04:19 Zacharyこれでは具合が悪いので、-r オプション(逆順にする)を加えてみました。
$ sort -r -k 3 accesslog.txt (結果) 07/12/2024 04:04:19 Zachary 07/12/2024 08:05:10 William 08/11/2024 16:54:07 Martin 08/12/2024 18:45:25 John 07/12/2024 08:33:03 John 07/11/2024 22:55:50 John 08/14/2024 07:49:36 James 08/13/2024 16:10:13 James 08/01/2024 07:34:29 James 07/17/2024 10:34:55 James 07/12/2024 14:18:14 James 07/12/2024 07:53:56 James 08/14/2024 10:04:18 George 08/01/2024 15:11:51 George 07/30/2024 01:07:18 George 07/12/2024 11:31:49 George 07/11/2024 23:24:32 Franklin 08/12/2024 20:19:44 Andrew 08/12/2024 20:10:01 Andrew 07/17/2024 09:23:25 Abraham
$ sort -r -k 3 accesslog.txt | uniq -s 21 (結果) 07/12/2024 04:04:19 Zachary 07/12/2024 08:05:10 William 08/11/2024 16:54:07 Martin 08/12/2024 18:45:25 John 08/14/2024 07:49:36 James 08/14/2024 10:04:18 George 07/11/2024 23:24:32 Franklin 08/12/2024 20:19:44 Andrew 07/17/2024 09:23:25 Abrahamけれども、これでは名前がアルファベット順にならないので、もう一度ソートにかけ、次の結果を得ました。
$ sort -r -k 3 accesslog.txt | uniq -s 21 | sort -k 3 (結果) 07/17/2024 09:23:25 Abraham 08/12/2024 20:19:44 Andrew 07/11/2024 23:24:32 Franklin 08/14/2024 10:04:18 George 08/14/2024 07:49:36 James 08/12/2024 18:45:25 John 08/11/2024 16:54:07 Martin 07/12/2024 08:05:10 William 07/12/2024 04:04:19 Zacharyこういう作業は python でスクリプトを書いていたのですが、コマンドラインを忘れないため、時々、こんなこともやっています。
07/11/2024 22:55:50 John 07/12/2024 04:04:19 Zachary 07/17/2024 09:23:25 Abraham 07/30/2024 01:07:18 George 08/01/2024 15:11:51 George 08/11/2024 16:54:07 Martin 08/12/2024 18:45:25 John 08/13/2024 16:10:13 James 08/14/2024 07:49:36 James最終月を得るには、ログをラインごとに読み込み、最後の行から取り出せばよいので、次のようにしました。
with open("log.txt") as inp: lines = inp.readlines() if m := re.search(r"^([\d]+)\/([\d]+)\/([\d]+)", lines[-1]): last_year = int(m.group(3)) last_month = int(m.group(1)) last_day = int(m.group(2)) else: print("Abort. Check `log.txt`.") exit()
for line in lines: if m := re.search(r"^([\d]+)\/([\d]+)\/([\d]+)", line): year = int(m.group(3)) month = int(m.group(1)) day = int(m.group(2)) if year == last_year and month == last_month: print(line, end="") else: print("Abort. Check `log.txt`.") exit()last_day と day は、ここでは使っていませんが、最終日のデータだけを取り出す場合のため、書いておきました。
def copy_clipboard(clip_text): with Popen(['xclip','-selection', 'clipboard'], stdin=PIPE) as pipe: pipe.communicate(input=msg.encode('utf-8'))copy_clipboard(string) に渡す clip_text を得るために、先のコードに clip_text を付け加えました。
clip_text = "" for line in lines: if m := re.search(r"^([\d]+)\/([\d]+)\/([\d]+)", line): year = int(m.group(3)) month = int(m.group(1)) day = int(m.group(2)) if year == last_year and month == last_month: print(line, end="") clip_text = clip_text + line else: print("Abort. Check `log.txt`.") exit() copy_clipboard(clip_text) print("Data was sent to clipboard.")次のデータがクリップボードに入っていることを確認しました。
08/01/2024 15:11:51 George 08/11/2024 16:54:07 Martin 08/12/2024 18:45:25 John 08/13/2024 16:10:13 James 08/14/2024 07:49:36 James
64-bit quad-core Cortex-A76 processor 8GB LPDDR4X SDRAM 2 micro HDMI ports (supports up to 46Kp60) 2 USB 3.0 ports 2 USB 2.0 ports 2 24-lane connectors for camera or display Gigabite Ethernet port 802.11b/g/n/ wireless Bluetooth 5.0 PoE-capable PCIe expanssion connector 5V/5A USB-C power connector
$ sudo apt install rpi-imagerこれで、Imager の名でソフトウェアに登録されました。これを起動して、「デバイス」、「OS」、「ストレージ」を選択するだけで、OS イメージがダウンロードされインストールされました。とても分かりやすく簡単でした。興味深かったのは、イメージを作る前に「ホスト名 」、「ユーザ名とパスワード」、「WI-FI」、「ロケール」、「サービス」(SSH)などを設定できることでした。事前設定の機能は使いませんでしたが、Ubuntu でも、Imager のようなものがあればよいと思いました。
dtparam=pciex1
$ sudo rpi-eeprom-config --editコマンドを使いました。そこに
BOOT_ORDER=0xf416
f …エラーを通知 4 …外部 USB ドライブからの起動 1 …内部 SD カードからの起動 6 …nvme からの起動で起動時に右から左へと評価されます。
dtparam=pciex1_gen=3と書き換えました。今のところ、このパラメータで不安定になることはないので、このまま使い続けようと思っています。hdparm をインストールして、次のコマンドで nvme へのアクセス速度を測ってみました。
$ sudo hdparm -t --direct /dev/nvme0n1p2結果は 760MB/sec で、メイン PC の3600MB/sec にとうてい及びませんが、SATA SSD と比べれば格段に早く、なによりも十分な容量を確保できるのはうれしいです。この容量を生かした使い方をしてみたいと思っています。
$ apt download fonts-ipafont-gothic fonts-ipafont-minchoすると、それぞれの deb ファイルがダウンロードされたので、それをアーカイヴ・マネージャーで展開して、展開されたフォルダの中から ipam.ttf と ipag.ttf を ~/.local/share/fonts にコピーしました。
$ lsusbコマンドで、このデバイスが認識されているのを確かめました。
$ sudo apt install fswebcamそして、
$ fswebcam image.jpgで、カメラから静止画像が撮れることを確認しました。cheese を apt でインストールし、録画できることを確認しました。
$ sudo snap install thorium-reader-snapよく出来てはいるのですが、Foliate のように EPUB ファイルに関連づけて、ファイルマネージャからすぐに EPUB を読むことはできませんでした。まずは Thorium Reader を立ち上げ、そこに EPUB ファイルをドロップしてから読むようになっています。日本語 EPUB の再現性は良く、ページめくりもうまくいきました。また、設定項目が豊富で、インターフェースを日本語にすることもできました。
https://github.com/caesiumstudio/csBooks-updates/releasesより、deb パッケージをダウンロードして導入しました。これも、Thorium と同じように、まず、ライブラリーを開き、そこにファイルをドロップして読むようになっています。csBooks では EPUB や PDF の他、オーディオブックも扱うことができ、外部ライブラリーも参照できました。
Home | First | Prev | Next | Last |