[feat] Dockerfileの更新とREADMEの改善
Browse files以下の変更を行いました:
- Dockerfileを更新し、ユーザー権限の設定とパッケージのインストールを改善
- READMEにプロジェクトのロゴ、タイトル、説明を追加し、見た目を向上
- app.pyを更新し、Streamlitアプリケーションの機能を改善
- docker-compose.ymlにユーザー設定を追加
- docs/SlideNova_icon.pngを追加しプロジェクトのアイコンを設定
- run_slidev.pyを更新し、slidevコマンドの実行方法を改善
これらの変更により、プロジェクトのセットアップと使用がより簡単になり、ドキュメントの見た目も向上しました。
[docs] READMEの改善
README.mdを更新し、以下の改善を行いました:
- プロジェクトのロゴとタイトルを追加
- プロジェクトの説明を追加
- バッジを追加してプロジェクトの情報を表示
- コードブロックのフォーマットを改善
これにより、プロジェクトの概要がわかりやすくなり、READMEの見た目が向上しました。
[feat] Streamlitアプリケーションの機能改善
app.pyを更新し、以下の機能改善を行いました:
- マークダウンの内容を入力するテキストエリアを追加
- スライドを生成するボタンを追加
- 生成されたスライドを表示する機能を追加
- 一時ファイルを利用してスライドを生成するように変更
これにより、ユーザーがマークダウンを入力し、スライドを生成して表示できるようになりました。
[chore] docker-compose.ymlにユーザー設定を追加
docker-compose.ymlを更新し、以下の変更を行いました:
- servicesセクションにuser: userを追加し、コンテナ内で使用するユーザーを指定
これにより、コンテナ内で適切なユーザー権限が設定されるようになりました。
[docs] プロジェクトアイコンの追加
docs/SlideNova_icon.pngを追加し、プロジェクトのアイコンを設定しました。
これにより、プロジェクトの視覚的なアイデンティティが確立されました。
[refactor] run_slidev.pyの改善
run_slidev.pyを更新し、以下の改善を行いました:
- 不要なコメントアウトされたコードを削除
- slidevコマンドの実行方法を変更し、エクスポートオプションを追加
これにより、コードの可読性が向上し、slidevコマンドの実行方法が改善されました。
- Dockerfile +11 -1
- README.md +12 -2
- app.py +27 -30
- docker-compose.yml +2 -1
- docs/SlideNova_icon.png +3 -0
- run_slidev.py +1 -9
@@ -1,6 +1,11 @@
|
|
1 |
# Dockerfile
|
2 |
FROM node:18
|
3 |
|
|
|
|
|
|
|
|
|
|
|
4 |
# Pythonのインストール
|
5 |
RUN apt-get update && apt-get install -y python3 python3-pip
|
6 |
|
@@ -11,9 +16,14 @@ WORKDIR /app
|
|
11 |
RUN npm install -g @slidev/cli@latest
|
12 |
RUN npm install -D playwright-chromium
|
13 |
RUN npx playwright install-deps
|
|
|
14 |
|
15 |
# Pythonスクリプトのコピー
|
16 |
COPY run_slidev.py .
|
17 |
|
18 |
# スライドディレクトリの作成
|
19 |
-
RUN mkdir slides
|
|
|
|
|
|
|
|
|
|
1 |
# Dockerfile
|
2 |
FROM node:18
|
3 |
|
4 |
+
USER root
|
5 |
+
RUN useradd -m -u 1001 user
|
6 |
+
WORKDIR /app
|
7 |
+
RUN chown -R user:user /app
|
8 |
+
|
9 |
# Pythonのインストール
|
10 |
RUN apt-get update && apt-get install -y python3 python3-pip
|
11 |
|
|
|
16 |
RUN npm install -g @slidev/cli@latest
|
17 |
RUN npm install -D playwright-chromium
|
18 |
RUN npx playwright install-deps
|
19 |
+
RUN npx playwright install
|
20 |
|
21 |
# Pythonスクリプトのコピー
|
22 |
COPY run_slidev.py .
|
23 |
|
24 |
# スライドディレクトリの作成
|
25 |
+
RUN mkdir slides
|
26 |
+
|
27 |
+
RUN chown -R user:user /app
|
28 |
+
RUN chown -R user:user /usr/local/lib/node_modules/@slidev/
|
29 |
+
USER user
|
@@ -1,11 +1,21 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
```bash
|
5 |
npx slidev slides/demo.md --remote
|
6 |
```
|
7 |
|
8 |
```bash
|
9 |
-
npx slidev export slides/demo.md --format png --output slides/out/ --dark
|
10 |
```
|
11 |
|
|
|
1 |
+
<p align="center">
|
2 |
+
<img src="https://media.githubusercontent.com/media/Sunwood-ai-labs/SlideNova/main/docs/icon.png" width="100%">
|
3 |
+
<br>
|
4 |
+
<h1 align="center">SlideNova</h1>
|
5 |
+
<h3 align="center">
|
6 |
+
~Your Timeline, Your Way~
|
7 |
|
8 |
+
[![Hugging Face Spaces](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue)](https://huggingface.co/spaces/Sunwood-ai-labs/SlideNova)[![](https://img.shields.io/github/stars/Sunwood-ai-labs/SlideNova)](https://github.com/Sunwood-ai-labs/SlideNova)[![](https://img.shields.io/github/last-commit/Sunwood-ai-labs/SlideNova)](https://github.com/Sunwood-ai-labs/SlideNova)[![](https://img.shields.io/github/languages/top/Sunwood-ai-labs/SlideNova)](https://github.com/Sunwood-ai-labs/SlideNova)[![GitHub Release](https://img.shields.io/github/v/release/Sunwood-ai-labs/SlideNova?sort=date&color=red)
|
9 |
+
](https://github.com/Sunwood-ai-labs/SlideNova)
|
10 |
+
</h3>
|
11 |
+
|
12 |
+
</p>
|
13 |
|
14 |
```bash
|
15 |
npx slidev slides/demo.md --remote
|
16 |
```
|
17 |
|
18 |
```bash
|
19 |
+
npx slidev export slides/demo.md --format png --output slides/out/ --dark -t
|
20 |
```
|
21 |
|
@@ -1,38 +1,35 @@
|
|
|
|
1 |
import streamlit as st
|
2 |
-
|
3 |
-
import
|
4 |
-
from io import BytesIO
|
5 |
|
6 |
def main():
|
7 |
-
st.title("
|
8 |
-
|
9 |
-
#
|
10 |
-
markdown_text = st.text_area("Enter your markdown
|
11 |
-
|
|
|
12 |
if st.button("Generate Slides"):
|
13 |
-
#
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
for slide in slides:
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
st.subheader("Generated Slides")
|
27 |
-
for i, image in enumerate(images):
|
28 |
-
st.image(image, caption=f"Slide {i+1}", use_column_width=True)
|
29 |
-
|
30 |
-
# 画像をダウンロード可能なリンクとして提供
|
31 |
-
buffered = BytesIO()
|
32 |
-
image.save(buffered, format="PNG")
|
33 |
-
img_str = base64.b64encode(buffered.getvalue()).decode()
|
34 |
-
href = f'<a href="data:file/png;base64,{img_str}" download="slide_{i+1}.png">Download Slide {i+1}</a>'
|
35 |
-
st.markdown(href, unsafe_allow_html=True)
|
36 |
|
37 |
if __name__ == "__main__":
|
38 |
main()
|
|
|
1 |
+
# app.py
|
2 |
import streamlit as st
|
3 |
+
import os
|
4 |
+
import subprocess
|
|
|
5 |
|
6 |
def main():
|
7 |
+
st.title("Markdown to Slidev")
|
8 |
+
|
9 |
+
# マークダウンファイルの内容を入力するテキストエリア
|
10 |
+
markdown_text = st.text_area("Enter your markdown content here:", height=400)
|
11 |
+
|
12 |
+
# スライドを生成するボタン
|
13 |
if st.button("Generate Slides"):
|
14 |
+
# 一時ファイルにマークダウンの内容を書き込む
|
15 |
+
with open("temp.md", "w") as f:
|
16 |
+
f.write(markdown_text)
|
17 |
+
|
18 |
+
# slidevコマンドを実行してスライドを生成
|
19 |
+
subprocess.run(["npx", "slidev", "export", "temp.md", "--format", "png", "--output", "slides/out/", "--dark", "-t"])
|
20 |
+
|
21 |
+
# 生成されたスライドを表示
|
22 |
+
slides = []
|
23 |
+
for filename in os.listdir("slides/out"):
|
24 |
+
if filename.endswith(".png"):
|
25 |
+
slides.append(filename)
|
26 |
+
slides.sort()
|
27 |
+
|
28 |
for slide in slides:
|
29 |
+
st.image(f"slides/out/{slide}")
|
30 |
+
|
31 |
+
# 一時ファイルを削除
|
32 |
+
os.remove("temp.md")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
if __name__ == "__main__":
|
35 |
main()
|
@@ -10,4 +10,5 @@ services:
|
|
10 |
ports:
|
11 |
- "3030:3030"
|
12 |
# command: python3 run_slidev.py
|
13 |
-
tty: true
|
|
|
|
10 |
ports:
|
11 |
- "3030:3030"
|
12 |
# command: python3 run_slidev.py
|
13 |
+
tty: true
|
14 |
+
user: user
|
Git LFS Details
|
@@ -2,14 +2,6 @@
|
|
2 |
import os
|
3 |
import subprocess
|
4 |
|
5 |
-
# Slideを格納するディレクトリを指定
|
6 |
-
slide_dir = "./slides"
|
7 |
-
|
8 |
-
# Slideのエントリーポイントを指定
|
9 |
-
slide_entry = "slides.md"
|
10 |
-
|
11 |
-
# slidevコマンドを実行してスライドを開発モードで起動
|
12 |
-
# subprocess.run(["npx", "slidev", slide_entry])
|
13 |
|
14 |
# slidevコマンドを実行してスライドをビルド
|
15 |
-
subprocess.run(["npx
|
|
|
2 |
import os
|
3 |
import subprocess
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
# slidevコマンドを実行してスライドをビルド
|
7 |
+
subprocess.run(["npx slidev export slides/demo.md --format png --output slides/out/ --dark -t"])
|