Maki commited on
Commit
2470061
1 Parent(s): dde65e8

[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コマンドの実行方法が改善されました。

Files changed (6) hide show
  1. Dockerfile +11 -1
  2. README.md +12 -2
  3. app.py +27 -30
  4. docker-compose.yml +2 -1
  5. docs/SlideNova_icon.png +3 -0
  6. run_slidev.py +1 -9
Dockerfile CHANGED
@@ -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
README.md CHANGED
@@ -1,11 +1,21 @@
1
- # SlideNova
 
 
 
 
 
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
 
app.py CHANGED
@@ -1,38 +1,35 @@
 
1
  import streamlit as st
2
- from marp import Marp
3
- import base64
4
- from io import BytesIO
5
 
6
  def main():
7
- st.title("Marp Slide Generator")
8
-
9
- # マークダウン入力欄
10
- markdown_text = st.text_area("Enter your markdown text here:", height=400)
11
-
 
12
  if st.button("Generate Slides"):
13
- # Marpオブジェクトの作成
14
- marp = Marp()
15
-
16
- # マークダウンからスライドを生成
17
- slides = marp.convert(markdown_text)
18
-
19
- # スライドを画像に変換
20
- images = []
 
 
 
 
 
 
21
  for slide in slides:
22
- image_data = slide.render(format="png")
23
- images.append(image_data)
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()
docker-compose.yml CHANGED
@@ -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
docs/SlideNova_icon.png ADDED

Git LFS Details

  • SHA256: b3c34e8b731934bc29848fa4ab1ce1024b9246c01765b7937a7d144afe6ed7fa
  • Pointer size: 131 Bytes
  • Size of remote file: 667 kB
run_slidev.py CHANGED
@@ -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", "slidev", "build", slide_entry])
 
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"])