Python3シリーズダウンロード拡張機能のサポート

はじめに、macOSを使用しているため、いくつかのパーツを使用することをお勧めします。



このOSに固有です。 ただし、プロジェクトに興味がある場合は、いくつかのパスを変更し、いくつかの関数をわずかに修正して、このコードを通知システム、yaml、たとえばクローネで動作させるようにするのは難しくないと思います。


だからポイントに。


お気に入りのテレビ番組の更新についてトラッカーをチェックし、新しいエピソードがいつ出てきたか、前のエピソードを見たかどうかを思い出すのは退屈です。 さらに、ご存知のように、2回以上行う必要があるのは自動化だけです。 プロジェクトは急いで開始され、改善される可能性があります。


何が含まれていますか?


  1. parser.pyのパーサークラス
  2. core.pyのローダークラス
  3. プラグインディレクトリ内のローダークラスを継承するプラグイン
  4. configsディレクトリ内の構成プラグイン構成ファイル
  5. 通知アイコンのアイコンディレクトリ
  6. プラグインをプルするmain.pyファイル
  7. Install.pyファイル

解析クラス


ほとんどすべてのシリーズサイトには独自のRSSフィードがあるため、プラグインを記述するプロセスを簡略化して、リンクによってrssを自動的に解析し、エンコードを指定する機能を持つペアのリスト(タイトル、リンク)を表示できる解析関数を作成することにしました。


少し後に、htmlの単純な解析が必要になり、次に、いくつかのサイトはjson形式のapiを介してリンクを提供できると考えられました。


そのため、関数は、承認が必要なサイトのセッションを保存する(セッションを要求する)クラスになり、 html()rss()json()およびauto()メソッドで応答オブジェクトを返します。 後者は、コンテンツ(xml、html、またはjson)と 'Content-Type'ヘッダーによるエンコードを推測しようとします。 デフォルトは「utf-8」およびhtmlです。



ブートローダークラス


プラグインにparse()およびdownload()メソッドを提供します。



プラグイン


予想されるパラメーターでdownload()メソッドを解析して呼び出すstart()メソッドを実装するブートローダークラスを継承するクラス。


プラグイン構成ファイル


* .plist


含む:



ディレクトリアイコン


関連するソースからのエピソードのダウンロードのロード/完了を通知するときに使用されるアイコンファイルを置くことができるフォルダー。 アイコンの名前はプラグインの名前と一致する必要がありますが、拡張子はjpg / ico / pngです。


main.py


pluginsディレクトリ内のすべてのプラグインのstart()メソッドが1つずつプルされます。


install.py



オートロード


install.pyファイルはあなたのためにそれを行いますが、あなたがすべてを手動で行うことに決めた場合は、...


取扱説明書

launchdに$ HOMEを伝えることができませんでした。したがって、$ HOMEの下のテキストをユーザーのホームディレクトリ/ユーザー/ユーザー名へのパスに置き換え、スクリプトディレクトリへのパスを別の場所に配置する場合は変更する必要があります。


<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/local/bin</string> </dict> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> <key>Label</key> <string>series_downloader</string> <key>ProgramArguments</key> <array> <string>python3</string> <string>$HOME/.NB-series-downloader/main.py</string> </array> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>900</integer> <key>WorkingDirectory</key> <string>$HOME/.NB-series-downloader</string> </dict> </plist> 

これらのコンテンツを含むファイルは、 series_downloader.plistという名前で、 〜/ Library / LaunchAgents /に配置する必要があります。
次のコマンドを使用して、このファイルで説明されているタスクをすぐにダウンロードできます。


 launchctl load ~/Library/LaunchAgents/series_downloader.plist 

それ以外の場合、タスクはコンピューターの次回起動時にアクティブになります。
これらのアクションにより、 $ HOME / .NB-series-downloader /ディレクトリにあるmain.pyが 900秒(15分)ごとに実行されます。


合計


Githubにリンクします。


正直なところ、私がそこに最初に置いたので、私は台無しにできました。 何か問題があれば教えてください。


ダウンロード開始通知:


ダウンロード開始通知
ダウンロード後、「ダウンロード開始」の碑文が「ダウンロード完了」に変わります。
プラグインの結果として表示されるのはこれだけです。エピソードはきちんとパパに折り畳まれ、翼で待ちます。


私の場合、シリーズは同じディレクトリのシリーズに追加されます( core.pyの ダウンローダークラスのself.series_dirで別の場所を指定できます)。


ダウンロードしたシリーズを表示するために、 Alfred 3のワークフローを書きました。
テレビ番組表
各シリーズを見た後、彼は以下を提供します。



しかし、それだけです-それは完全に異なる話です...



Source: https://habr.com/ru/post/J304770/


All Articles