m3g4p0p commited on
Commit
cfd74ee
·
1 Parent(s): 3d78d34

add qr code

Browse files
Files changed (4) hide show
  1. myapp/app.py +61 -3
  2. pyproject.toml +5 -0
  3. requirements.txt +154 -0
  4. uv.lock +15 -0
myapp/app.py CHANGED
@@ -1,11 +1,69 @@
 
 
 
1
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
 
 
3
 
4
- def greet(name):
5
- return "Hello " + name + "!!"
 
 
 
 
 
6
 
 
7
 
8
- demo = gr.Interface(fn=greet, inputs="text", outputs="text")
9
 
10
  if __name__ == "__main__":
11
  demo.launch()
 
1
+ from pathlib import Path
2
+ from tempfile import NamedTemporaryFile
3
+
4
  import gradio as gr
5
+ import segno
6
+ from huggingface_hub import InferenceClient
7
+ from PIL import Image
8
+ from qrcode_artistic import write_artistic
9
+
10
+ if gr.NO_RELOAD:
11
+ try:
12
+ import dotenv
13
+
14
+ dotenv.load_dotenv()
15
+ except ImportError:
16
+ pass
17
+
18
+ client = InferenceClient()
19
+
20
+ with gr.Blocks() as demo:
21
+ with gr.Row():
22
+ with gr.Column():
23
+ text = gr.Textbox(
24
+ "https://wheelingvultures.bandcamp.com/album/ep", label="Text"
25
+ )
26
+ prompt = gr.Textbox("A vulture in black and white", label="Prompt")
27
+ button = gr.Button()
28
+ with gr.Column():
29
+ background = gr.Image(visible=False, type="filepath")
30
+ output = gr.Image()
31
+
32
+ @gr.on(
33
+ triggers=[button.click, prompt.submit],
34
+ inputs=prompt,
35
+ outputs=background,
36
+ )
37
+ def generate_background(prompt):
38
+ return client.text_to_image(
39
+ prompt,
40
+ model="black-forest-labs/FLUX.1-schnell",
41
+ width=400,
42
+ height=400,
43
+ )
44
+
45
+ @gr.on(
46
+ triggers=[background.change, text.submit],
47
+ inputs=[text, background],
48
+ outputs=output,
49
+ )
50
+ def generate_code(text, background):
51
+ if background is None:
52
+ return None
53
 
54
+ qr_code = segno.make(text, error="h")
55
+ suffix = Path(background).suffix
56
 
57
+ with NamedTemporaryFile(suffix=suffix) as temp_file:
58
+ write_artistic(
59
+ qr_code,
60
+ background=background,
61
+ target=temp_file,
62
+ scale=8,
63
+ )
64
 
65
+ return Image.open(temp_file.name)
66
 
 
67
 
68
  if __name__ == "__main__":
69
  demo.launch()
pyproject.toml CHANGED
@@ -11,5 +11,10 @@ dependencies = [
11
  "segno>=1.6.1",
12
  ]
13
 
 
 
 
 
 
14
  [tool.setuptools.packages.find]
15
  include = ["myapp"]
 
11
  "segno>=1.6.1",
12
  ]
13
 
14
+ [project.optional-dependencies]
15
+ develop = [
16
+ "python-dotenv>=1.0.1",
17
+ ]
18
+
19
  [tool.setuptools.packages.find]
20
  include = ["myapp"]
requirements.txt ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv pip compile pyproject.toml -o requirements.txt
3
+ aiofiles==23.2.1
4
+ # via gradio
5
+ annotated-types==0.7.0
6
+ # via pydantic
7
+ anyio==4.8.0
8
+ # via
9
+ # gradio
10
+ # httpx
11
+ # starlette
12
+ certifi==2024.12.14
13
+ # via
14
+ # httpcore
15
+ # httpx
16
+ # requests
17
+ charset-normalizer==3.4.1
18
+ # via requests
19
+ click==8.1.8
20
+ # via
21
+ # typer
22
+ # uvicorn
23
+ fastapi==0.115.6
24
+ # via gradio
25
+ ffmpy==0.5.0
26
+ # via gradio
27
+ filelock==3.16.1
28
+ # via huggingface-hub
29
+ fsspec==2024.12.0
30
+ # via
31
+ # gradio-client
32
+ # huggingface-hub
33
+ gradio==5.12.0
34
+ # via myapp (pyproject.toml)
35
+ gradio-client==1.5.4
36
+ # via gradio
37
+ h11==0.14.0
38
+ # via
39
+ # httpcore
40
+ # uvicorn
41
+ httpcore==1.0.7
42
+ # via httpx
43
+ httpx==0.28.1
44
+ # via
45
+ # gradio
46
+ # gradio-client
47
+ # safehttpx
48
+ huggingface-hub==0.27.1
49
+ # via
50
+ # myapp (pyproject.toml)
51
+ # gradio
52
+ # gradio-client
53
+ idna==3.10
54
+ # via
55
+ # anyio
56
+ # httpx
57
+ # requests
58
+ jinja2==3.1.5
59
+ # via gradio
60
+ markdown-it-py==3.0.0
61
+ # via rich
62
+ markupsafe==2.1.5
63
+ # via
64
+ # gradio
65
+ # jinja2
66
+ mdurl==0.1.2
67
+ # via markdown-it-py
68
+ numpy==2.2.2
69
+ # via
70
+ # gradio
71
+ # pandas
72
+ orjson==3.10.15
73
+ # via gradio
74
+ packaging==24.2
75
+ # via
76
+ # gradio
77
+ # gradio-client
78
+ # huggingface-hub
79
+ pandas==2.2.3
80
+ # via gradio
81
+ pillow==11.1.0
82
+ # via
83
+ # gradio
84
+ # qrcode-artistic
85
+ pydantic==2.10.5
86
+ # via
87
+ # fastapi
88
+ # gradio
89
+ pydantic-core==2.27.2
90
+ # via pydantic
91
+ pydub==0.25.1
92
+ # via gradio
93
+ pygments==2.19.1
94
+ # via rich
95
+ python-dateutil==2.9.0.post0
96
+ # via pandas
97
+ python-multipart==0.0.20
98
+ # via gradio
99
+ pytz==2024.2
100
+ # via pandas
101
+ pyyaml==6.0.2
102
+ # via
103
+ # gradio
104
+ # huggingface-hub
105
+ qrcode-artistic==3.0.2
106
+ # via myapp (pyproject.toml)
107
+ requests==2.32.3
108
+ # via huggingface-hub
109
+ rich==13.9.4
110
+ # via typer
111
+ ruff==0.9.2
112
+ # via gradio
113
+ safehttpx==0.1.6
114
+ # via gradio
115
+ segno==1.6.1
116
+ # via
117
+ # myapp (pyproject.toml)
118
+ # qrcode-artistic
119
+ semantic-version==2.10.0
120
+ # via gradio
121
+ shellingham==1.5.4
122
+ # via typer
123
+ six==1.17.0
124
+ # via python-dateutil
125
+ sniffio==1.3.1
126
+ # via anyio
127
+ starlette==0.41.3
128
+ # via
129
+ # fastapi
130
+ # gradio
131
+ tomlkit==0.13.2
132
+ # via gradio
133
+ tqdm==4.67.1
134
+ # via huggingface-hub
135
+ typer==0.15.1
136
+ # via gradio
137
+ typing-extensions==4.12.2
138
+ # via
139
+ # anyio
140
+ # fastapi
141
+ # gradio
142
+ # gradio-client
143
+ # huggingface-hub
144
+ # pydantic
145
+ # pydantic-core
146
+ # typer
147
+ tzdata==2024.2
148
+ # via pandas
149
+ urllib3==2.3.0
150
+ # via requests
151
+ uvicorn==0.34.0
152
+ # via gradio
153
+ websockets==14.2
154
+ # via gradio-client
uv.lock CHANGED
@@ -364,10 +364,16 @@ dependencies = [
364
  { name = "segno" },
365
  ]
366
 
 
 
 
 
 
367
  [package.metadata]
368
  requires-dist = [
369
  { name = "gradio", specifier = ">=5.12.0" },
370
  { name = "huggingface-hub", specifier = ">=0.27.1" },
 
371
  { name = "qrcode-artistic", specifier = ">=3.0.2" },
372
  { name = "segno", specifier = ">=1.6.1" },
373
  ]
@@ -608,6 +614,15 @@ wheels = [
608
  { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
609
  ]
610
 
 
 
 
 
 
 
 
 
 
611
  [[package]]
612
  name = "python-multipart"
613
  version = "0.0.20"
 
364
  { name = "segno" },
365
  ]
366
 
367
+ [package.optional-dependencies]
368
+ develop = [
369
+ { name = "python-dotenv" },
370
+ ]
371
+
372
  [package.metadata]
373
  requires-dist = [
374
  { name = "gradio", specifier = ">=5.12.0" },
375
  { name = "huggingface-hub", specifier = ">=0.27.1" },
376
+ { name = "python-dotenv", marker = "extra == 'develop'", specifier = ">=1.0.1" },
377
  { name = "qrcode-artistic", specifier = ">=3.0.2" },
378
  { name = "segno", specifier = ">=1.6.1" },
379
  ]
 
614
  { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
615
  ]
616
 
617
+ [[package]]
618
+ name = "python-dotenv"
619
+ version = "1.0.1"
620
+ source = { registry = "https://pypi.org/simple" }
621
+ sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115 }
622
+ wheels = [
623
+ { url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 },
624
+ ]
625
+
626
  [[package]]
627
  name = "python-multipart"
628
  version = "0.0.20"