オクシディアン10月のテンプラ


私は2つ小さなTemplater スクリプトObsidian October *, 両方の独自のPythonのマイクロAPIです.つは、YouTubeのビデオを転写し、1つから1日の引用を取得DailyZen . プラグインの人々が提出しているようにどこにも複雑ではありませんが、すべて同じに参加することが良い感じです.
* Obsidian ノートを一緒にメモをリンクし、それらを視覚化する小説の方法がたくさんあるアプリを取っている.それは完全に無料ですので、もしあなたに興味をそそられるそれを試してください.

あなたのジャーナルの毎日の禅引用
最初にAPIが来て、Replitでホストされ、Pythonとフラスコで書かれています.私はJavaScriptのために人気があるウェブスクレーパーより簡単に働くために、美しいスープ(ウェブ掻き取りのためのパイソン図書館)を見つけます.
import requests
from bs4 import BeautifulSoup
from markdownify import markdownify as markdownify
from flask import Flask
from flask_cors import CORS
import re
import prettierfier

app = Flask("app")
CORS(app)

@app.route("/")
def output():
  URL = "https://dailyzen.com"
  page = requests.get(URL)
  soup = BeautifulSoup(page.content, "html.parser")
  html = f"{soup('blockquote')[0]}{soup('cite')[0]}"
  pretty_html = prettierfier.prettify_html(html)
  markdown = markdownify(pretty_html, convert=['blockquote', 'cite'])
  quote = re.sub(">", "", markdown)
  print(quote) 
  return f">  {quote.lstrip().rstrip()}"

app.run(host="0.0.0.0", port=8080)
私は、何かを構成しなければならないことなく特定のサーバーを「常に」維持します.
何もこれに渡される必要がないので、それはかなり簡単です.
async function dailyzen() {
  const result = await fetch("https://DailyZen.bathrobe.repl.co");
  const reader = result.body.getReader();
  const { value } = await reader.read();
  const quote = new TextDecoder().decode(value);
  return quote;
}
module.exports = dailyzen;
返信してくださいReadableStream , それで、あなたは通常、それをバイトサイズのチャンクでファイルにインポートする必要があります.引用符が短いので、完全に最初のチャンクに来る.
その後テンプルでちょうどそれを呼び出すtp.user.dailyzen() . Voila

あなたのノートでYouTubeの転写物を取得
これは少しトリッキーです.
まず、テンプラのシステムプロンプトは、YouTubeのURLを取得します.それから、URLは確かめられます、我々がビデオへのリンクであることを確認してください、そして、ビデオのIDはサーバーに送られます.
舞台裏では、Replitは大きなReadableStreamをchunkでトランスクリプトとともに送り返します.それらのチャンクは、ストリームが完了するまで集められます.
async function transcript(str) {
  let url = new URL(str);
  let videoID;
  //test and make sure it's a youtube URL
  if (url.host == "www.youtube.com" && url.pathname == "/watch") {
    videoID = url.search.slice(3);
    //send videoID as POST request to replit
    const res = await fetch("https://YTTranscript.bathrobe.repl.co", {
      method: "post",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        ID: videoID,
      }),
    });
    //replit returns a readablestream
    const reader = res.body.getReader();
    let result = "";
    let transcriptOutput = "";
    await reader.read().then(function processText({ done, value }) {
      if (done) {
        transcriptOutput = result;
        return transcriptOutput;
      }
      let stringValue = new TextDecoder("utf-8").decode(value);
      result += stringValue;
      return reader.read().then(processText);
    });
    return transcriptOutput;
  } else {
    console.log("nope");
    return "I can't recognize this as a YouTube link, sorry!";
  }
  //get the markdown transcript back and return it
}
module.exports = transcript;
舞台裏では、ここで我々は、トランスクリプトを取得返信です.があるpip パッケージは本当に簡単です.
from flask import Flask
from flask import request
from flask_cors import CORS
from youtube_transcript_api import YouTubeTranscriptApi

app = Flask("app")
CORS(app)

@app.route("/", methods=["POST"])
def output():
  ytID = request.json.get("ID")
  transcriptData = YouTubeTranscriptApi.get_transcript(ytID)
  transcript = ""
  for dict in transcriptData:
    transcript += dict["text"] + " \n"
  return transcript

app.run(host="0.0.0.0", port=8080)
トランスクリプトパッケージによって返されるすべての文字列の最後に改行が存在することに注意してください.
これを行うにはいくつかの方法がありますが、テンプテーターのマークダウンファイル自体のURLをユーザに促すのが最も簡単です.<% await tp.user.transcript(tp.system.prompt("YouTube URL Here"))%> .


それらを試してください!
私のサーバーを使用する場合は、自分自身を助けて!このチュートリアルのJavaScript部分だけをコード化します.もちろん、彼らはいつでも消えるかもしれません--これらはちょうど楽しいプロジェクトのためにありました.