AlfredWorkflowで遊ぶページ

Lesson7.MXLをパースする

開発メモ

ワークフロー

1.まずは『ヤフーゆるネタ』でScriptFilterを試作してみる

 このワークフローには7つのScriptFilterがありますが作りは全て同じ
 まずは『(ヤフー ゆるネタ)』のコードを見てください

 変数queryにアクセスするURLを格納しています
 後で、この部分変えれば他にも使い回しができるかなという魂胆です

 続いて配列変数title,desc,linkを作ります
 cURLでソースを取得して、grepとsedで抽出・整形しています
 
 初めはxmllintで解析する方法を試したのですが、うまく行きませんでした
 空白があってパースが途切れる感じです
 どうせ空白を取る必要があるのであればと思い、sedとgrepを選択しました
 インターネットからのコピペなのでオプションやパラメータは吟味していません
 そう、動いたからいいやのノリです
 
 URLからRSS取得、空白削除、タグ抽出、タグの中身の取り出しという4段階を
 パイプで繋いでいます
 テスト中に気が付いたのですが、descriptionタグには<や>でaタグが
 埋め込まれていたので、空白削除の後に<から>に囲まれた部分も削除しています
 
 ちょっと気になるのが、それぞれのタグごとにcURLを利用しているので、無駄なコードに
 なっている点。色々と試してみたのですが、うまくいきませんでした(力量不足です)
 
 最後はJSONフォーマットの記述
 はじめはサンプル通りEOBで書いてみました
 ただ、せっかく配列を利用したので、ループ処理で文字列をつなげてみました
 (線が繋がっているScriptFilterを見てくださいな)
 こちらはEOBではないのですが、最後にechoをしてみたらうまくAlfredに表示させる
 ことができました
 
 兎にも角にも、これでコア部分の完成です
 
 RunScript
 

2.初めにRSSのカテゴリーを選択させたい

 ヤフーニュース『みんなの意見』にはカテゴリがあるので、
 はじめにカテゴリーを選択させて、次に詳細のタイトルを選ばせたいと思い
 試行錯誤した結果、複数のScriptFilterを並列するという方法をとりました
 具体的にはScriptFilterのキーワードを『ヤフー 〇〇〇〇』とするだけ
 こうすることで、『ヤフー』と入力すると、全てのカテゴリーが表示できます
 実際に動かしてみてください。サンプル動画もどうぞ

背景

 AlfredのJSONフォーマットのサンプルとしてScriptFilterが準備されていたので、
 何かに利用できないかと考えたらすぐにRSSフィードが思い浮かびました
 よくあるニュースサイトのRSSなどをみていたら、ヤフーのRSS一覧を発見
  https://news.yahoo.co.jp/rss
 下の方にあったみんなの意見という一連のRSSをインタラクティブにAlfredで表現してみました
 もし皆さんがRSSをよく利用するのであれば、RSS xxxをキーワードとしてAlfredで
 まとめてみてはいかかでしょう

取扱説明

機能:

 ヤフーニュースの『みんなの意見』を表示させる

インストール:

 1.alfredworkflowをダウンロード
 2.ファイルをダブルクリックしてワークフローに登録

使い方:

 Alfredからキーワード起動『ヤフー』

修正履歴

ver1.1(2021-03-28):

・ScriptFilterのJSONフォーマットの編集をワンライナーから1行1プロパティーに変更
 修正前

 json=$json'{"title":"'${title[i]}'","subtitle":"'${desc[i]}'","arg":"'${link[i]}'"}'  


修正後

  json=$json'{"title":"'${title[i]}'",'
  json=$json'"subtitle":"'${desc[i]}'",'
  json=$json'"arg":"'${link[i]}'"}'  

ver1.2(2021-04-04):

・シェルスクリプトをbashからzshに変更



トップページに戻る