Ver Fonte

add subtitle

guoziyun há 1 ano atrás
pai
commit
6d27954ee9

BIN
dist/anc/favicon.ico


BIN
dist/anc/images/button_App_Store@3x.png


BIN
dist/anc/images/button_Google_Play@3x.png


BIN
dist/anc/images/icon_fb.png


BIN
dist/anc/images/icon_mail.png


+ 142 - 0
dist/anc/images/logo.svg

@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 26.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="160px"
+	 height="60px" viewBox="0 0 160 60" style="enable-background:new 0 0 160 60;" xml:space="preserve">
+<style type="text/css">
+	.st0{display:none;fill:#5555FF;}
+	.st1{fill:#5555FF;}
+	.st2{fill:#FFFFFF;}
+	.st3{fill:#F70000;}
+	.st4{fill:#FFC921;}
+	.st5{fill:#009245;}
+	.st6{display:none;fill:#FFC921;}
+	.st7{fill:#D81E1E;}
+	.st8{fill:#F94936;}
+	.st9{display:none;fill:#FFFFFF;}
+	.st10{display:none;fill:#F94936;}
+	.st11{fill:#FF4081;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+</g>
+<g id="图层_3">
+</g>
+<g id="图层_4">
+</g>
+<g id="图层_6">
+</g>
+<g id="图层_5">
+</g>
+<g id="图层_7">
+	<g>
+		<g>
+			<path class="st8" d="M22.5,34.9l-2.2-10.5c-0.7-3.4-3.7-5.9-7.2-5.9c-3.5,0-6.5,2.4-7.2,5.9L3.6,34.9c-0.5,2.3,1.3,4.4,3.6,4.4
+				c1.4,0,2.6-0.7,3.2-1.9l1.2-2.3c0.6-1.1,2.2-1.1,2.8,0l1.1,2.2c0.6,1.2,1.9,2,3.3,2h0.1C21.3,39.4,23,37.2,22.5,34.9z M14.5,30.2
+				c-1.1-0.5-1.2-2-2.3-1.6c-0.9,0.3-0.4,1.1-1.2,1.2c-2.1,0.2-3-4-1-6c2.1-2.1,6.4-1.5,7.2,2.7C17.5,28.5,15.9,30.9,14.5,30.2z"/>
+		</g>
+		<g>
+			<path class="st8" d="M25.4,37.8c-0.3,0-0.6-0.2-0.8-0.5c-0.2-0.3-0.4-0.7-0.5-1.3c-0.1-0.5-0.2-1.2-0.2-1.8
+				c0-0.7-0.1-1.4-0.1-2.1c0-0.5,0-1,0-1.5c0-0.5,0.1-1,0.1-1.4c0.1-0.4,0.2-0.8,0.4-1.1c0.2-0.3,0.5-0.4,0.9-0.4
+				c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.4,0.4,0.4,0.8c0.2-0.3,0.5-0.5,0.9-0.6c0.4-0.1,0.7-0.2,1.1-0.2c0.3,0,0.6,0.1,1,0.3
+				c0.3,0.2,0.6,0.5,0.8,0.9c0.2,0.4,0.3,0.8,0.3,1.3c0,0.4-0.1,0.8-0.3,1.2c-0.2,0.4-0.5,0.6-0.9,0.6c-0.2,0-0.3,0-0.4-0.1
+				c-0.1-0.1-0.2-0.1-0.3-0.2c-0.1-0.1-0.2-0.1-0.4-0.1c-0.4,0-0.7,0.2-1,0.6s-0.5,1-0.5,1.7c0,0.4,0,0.8,0,1.2
+				c0,0.4-0.1,0.8-0.1,1.2c-0.1,0.4-0.2,0.7-0.4,1C26,37.7,25.8,37.8,25.4,37.8z"/>
+			<path class="st8" d="M36,37.8c-0.3,0-0.7-0.1-1.1-0.3c-0.4-0.2-0.7-0.5-1-0.9c-0.3-0.4-0.5-0.8-0.6-1.4c-0.1-0.4-0.2-0.8-0.2-1.3
+				c0-0.5-0.1-1.1-0.1-1.7c0-0.6,0-1.2,0-1.7c-0.4,0-0.8-0.1-1.1-0.1c-0.4-0.1-0.6-0.2-0.9-0.5c-0.2-0.2-0.3-0.6-0.3-1
+				c0-0.6,0.1-1,0.3-1.2c0.2-0.3,0.5-0.5,0.8-0.6c0.4-0.1,0.7-0.1,1.2-0.2c0-0.4,0-0.9,0.1-1.3c0-0.5,0.1-0.9,0.2-1.3
+				c0.1-0.4,0.3-0.7,0.5-1c0.2-0.2,0.5-0.4,0.8-0.4c0.4,0,0.7,0.2,0.9,0.6c0.2,0.4,0.3,0.9,0.4,1.5c0,0.6,0.1,1.2,0.1,1.9
+				c0.5,0,1,0,1.4,0.1c0.4,0.1,0.7,0.2,0.9,0.5s0.3,0.6,0.3,1.1c0,0.5-0.1,0.9-0.4,1.2c-0.3,0.3-0.6,0.4-1,0.5s-0.9,0.1-1.3,0.2
+				c0,0.3,0,0.5,0,0.8c0,0.3,0,0.6,0,0.9c0,0.8,0,1.4,0.1,1.7c0.1,0.3,0.1,0.4,0.2,0.5c0.1,0.1,0.2,0.1,0.4,0.1
+				c0.2,0,0.4,0.1,0.6,0.1c0.2,0.1,0.4,0.2,0.5,0.5c0.1,0.3,0.2,0.6,0.2,1.1c0,0.5-0.2,0.9-0.5,1.1C37,37.7,36.5,37.8,36,37.8z"/>
+			<path class="st8" d="M45.8,37.8c-0.3,0-0.6-0.2-0.8-0.5c-0.2-0.4-0.4-0.8-0.6-1.4c-0.2-0.6-0.3-1.2-0.4-1.9
+				c-0.1-0.7-0.2-1.4-0.2-2.1c0-0.7-0.1-1.3-0.1-1.9c0-0.7,0-1.5,0.1-2.3c0.1-0.8,0.2-1.6,0.4-2.3c0.2-0.7,0.5-1.3,0.8-1.8
+				c0.3-0.5,0.8-0.7,1.3-0.7c0.4,0,0.7,0.2,1,0.5c0.3,0.3,0.5,0.8,0.8,1.4c0.2,0.6,0.4,1.3,0.7,2.1c0.2,0.8,0.4,1.6,0.7,2.5
+				c0-1.2,0-2.3,0.1-3.3c0.1-1,0.3-1.8,0.6-2.4c0.3-0.6,0.7-0.9,1.3-0.9c0.5,0,0.8,0.2,1.1,0.7c0.3,0.5,0.5,1,0.6,1.8
+				c0.1,0.7,0.2,1.5,0.3,2.3c0.1,0.8,0.1,1.6,0.1,2.3c0,0.6,0,1.2-0.1,1.9c-0.1,0.7-0.2,1.4-0.3,2.1c-0.1,0.7-0.3,1.3-0.6,1.9
+				c-0.2,0.6-0.5,1-0.9,1.4c-0.3,0.4-0.8,0.5-1.2,0.5c-0.4,0-0.8-0.2-1.1-0.6c-0.3-0.4-0.6-0.9-0.8-1.5c-0.2-0.6-0.4-1.4-0.6-2.1
+				c-0.2-0.8-0.4-1.6-0.6-2.3c0,1,0,1.9,0,2.7s-0.1,1.5-0.2,2.1c-0.1,0.6-0.3,1-0.5,1.3C46.6,37.7,46.2,37.8,45.8,37.8z"/>
+			<path class="st8" d="M57.7,37.8c-0.7,0-1.4-0.3-1.9-0.8c-0.5-0.5-1-1.2-1.3-2.2c-0.3-0.9-0.4-2-0.4-3.2c0-1.2,0.1-2.1,0.4-2.8
+				c0.3-0.7,0.6-1,1.1-1c0.3,0,0.6,0.1,0.8,0.3c0.2,0.2,0.3,0.4,0.4,0.7c0.1,0.3,0.1,0.6,0.1,0.9c0,0.4,0,0.8-0.1,1.2
+				c0,0.4-0.1,0.8-0.1,1.3c0,0.7,0.1,1.2,0.3,1.5c0.2,0.3,0.4,0.5,0.6,0.5c0.2,0,0.5-0.2,0.6-0.5c0.2-0.3,0.3-0.8,0.3-1.5
+				c0-0.5,0-0.9,0-1.3c0-0.4,0-0.8,0-1.3c0-0.5,0.1-0.9,0.3-1.3c0.2-0.4,0.5-0.6,1-0.6c0.5,0,0.9,0.3,1.1,1c0.3,0.7,0.4,1.6,0.4,2.8
+				c0,1.2-0.1,2.3-0.4,3.2c-0.3,0.9-0.7,1.6-1.2,2.2C59.2,37.6,58.5,37.8,57.7,37.8z"/>
+			<path class="st8" d="M67,37.8c-0.5,0-0.8-0.2-1-0.7c-0.2-0.5-0.2-1.1-0.2-2c0-0.7,0-1.3,0-1.8c0-0.5-0.2-0.7-0.4-0.7
+				c-0.2,0-0.4,0.1-0.4,0.3c-0.1,0.2-0.1,0.5-0.1,0.9c0,0.4,0,0.8,0,1.3c0,0.5,0,0.9-0.1,1.3c0,0.4-0.1,0.7-0.3,1
+				c-0.2,0.2-0.4,0.4-0.8,0.4c-0.3,0-0.6-0.2-0.8-0.5c-0.2-0.4-0.4-0.8-0.5-1.4c-0.1-0.6-0.2-1.2-0.2-1.9c0-0.7-0.1-1.3-0.1-2
+				c0-1.2,0.1-2.2,0.2-3c0.1-0.8,0.5-1.3,1-1.5c0.3-0.1,0.6-0.1,0.8,0c0.3,0.1,0.4,0.3,0.5,0.6c0.1-0.1,0.2-0.1,0.4-0.2
+				c0.1-0.1,0.4-0.1,0.7-0.1c0.3,0,0.6,0.1,0.9,0.3c0.3,0.2,0.5,0.5,0.6,0.9c0.2-0.4,0.5-0.7,0.8-0.9c0.3-0.2,0.6-0.3,1.1-0.3
+				c0.6,0,1.2,0.3,1.6,0.8c0.4,0.5,0.8,1.2,1,2.1c0.2,0.9,0.4,1.9,0.4,2.9c0,0.7,0,1.4-0.1,2c-0.1,0.6-0.2,1.1-0.5,1.5
+				c-0.2,0.4-0.5,0.6-0.9,0.6c-0.4,0-0.6-0.1-0.8-0.4c-0.2-0.2-0.3-0.6-0.3-1c0-0.4-0.1-0.9-0.1-1.3c0-0.5,0-0.9,0-1.3
+				c0-0.4-0.1-0.7-0.1-0.9c-0.1-0.2-0.2-0.3-0.4-0.3c-0.2,0-0.3,0.1-0.3,0.3c-0.1,0.2-0.1,0.5-0.1,0.9c0,0.4,0,0.8,0,1.3
+				c0,0.8-0.1,1.5-0.3,2C67.8,37.6,67.5,37.8,67,37.8z"/>
+			<path class="st8" d="M76.5,37.8c-0.7,0-1.3-0.1-1.8-0.4c-0.5-0.3-0.9-0.7-1.2-1.1c-0.3-0.5-0.6-1-0.7-1.5
+				c-0.2-0.6-0.3-1.1-0.4-1.6c-0.1-0.5-0.1-1-0.1-1.5c0-0.4,0-0.8,0-1c0-0.7,0-1.3,0.1-2c0-0.7,0.1-1.4,0.2-2.1s0.3-1.3,0.4-1.8
+				c0.2-0.5,0.4-1,0.7-1.3c0.3-0.3,0.6-0.5,0.9-0.5c0.3,0,0.6,0.1,0.9,0.4c0.3,0.3,0.4,0.8,0.4,1.4c0,0.6-0.1,1.2-0.2,1.8
+				c-0.1,0.6-0.2,1.2-0.3,1.8c0.2-0.2,0.5-0.3,0.7-0.4c0.3-0.1,0.5-0.1,0.8-0.1c0.5,0,1,0.2,1.5,0.5c0.5,0.3,0.9,0.9,1.2,1.6
+				c0.3,0.7,0.5,1.6,0.5,2.7c0,0.9-0.1,1.7-0.4,2.5c-0.3,0.8-0.7,1.4-1.2,1.9C77.9,37.6,77.2,37.8,76.5,37.8z M76.4,34.5
+				c0.3,0,0.5-0.1,0.7-0.4c0.2-0.3,0.3-0.6,0.3-1c0-0.4-0.1-0.7-0.3-1c-0.2-0.3-0.4-0.4-0.7-0.4s-0.5,0.1-0.7,0.4
+				c-0.2,0.3-0.3,0.6-0.3,1c0,0.4,0.1,0.7,0.3,1C75.9,34.3,76.2,34.5,76.4,34.5z"/>
+			<path class="st8" d="M84.3,37.8c-0.7,0-1.4-0.2-2-0.6c-0.6-0.4-1-1-1.3-1.7s-0.5-1.6-0.5-2.5c0-0.9,0.2-1.8,0.5-2.5
+				c0.3-0.8,0.7-1.4,1.3-1.9c0.6-0.5,1.2-0.7,1.9-0.7c0.7,0,1.2,0.2,1.7,0.6c0.5,0.4,0.8,0.9,1.1,1.5c0.3,0.6,0.4,1.2,0.4,1.9
+				c0,0.7-0.1,1.2-0.3,1.6c-0.2,0.4-0.5,0.7-0.8,1c-0.3,0.2-0.7,0.4-1.1,0.4c-0.4,0.1-0.7,0.1-1.1,0c-0.3,0-0.6-0.1-0.9-0.2
+				c0.2,0.4,0.4,0.7,0.7,0.8c0.3,0.1,0.6,0.2,0.9,0.2c0.3,0,0.6-0.1,0.8-0.1c0.3-0.1,0.6-0.1,0.8,0.1s0.3,0.4,0.3,0.7
+				c0,0.3-0.1,0.5-0.2,0.8c-0.1,0.3-0.4,0.5-0.7,0.6C85.4,37.7,84.9,37.8,84.3,37.8z M83.3,31.9c0.1,0.2,0.2,0.4,0.4,0.5
+				c0.2,0.1,0.4,0.1,0.6,0.1c0.2,0,0.4-0.1,0.5-0.2c0.1-0.1,0.2-0.3,0.2-0.5c0-0.2-0.1-0.5-0.2-0.6c-0.1-0.2-0.3-0.3-0.6-0.3
+				c-0.3,0-0.5,0.1-0.6,0.4C83.3,31.4,83.3,31.7,83.3,31.9z"/>
+			<path class="st8" d="M89.6,37.8c-0.3,0-0.6-0.2-0.8-0.5c-0.2-0.3-0.4-0.7-0.5-1.3c-0.1-0.5-0.2-1.2-0.2-1.8
+				c0-0.7-0.1-1.4-0.1-2.1c0-0.5,0-1,0-1.5c0-0.5,0.1-1,0.1-1.4c0.1-0.4,0.2-0.8,0.4-1.1c0.2-0.3,0.5-0.4,0.9-0.4
+				c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.4,0.4,0.4,0.8c0.2-0.3,0.5-0.5,0.9-0.6c0.4-0.1,0.7-0.2,1.1-0.2c0.3,0,0.6,0.1,1,0.3
+				c0.3,0.2,0.6,0.5,0.8,0.9c0.2,0.4,0.3,0.8,0.3,1.3c0,0.4-0.1,0.8-0.3,1.2c-0.2,0.4-0.5,0.6-0.9,0.6c-0.2,0-0.3,0-0.4-0.1
+				c-0.1-0.1-0.2-0.1-0.3-0.2c-0.1-0.1-0.2-0.1-0.4-0.1c-0.4,0-0.7,0.2-1,0.6s-0.5,1-0.5,1.7c0,0.4,0,0.8,0,1.2s-0.1,0.8-0.1,1.2
+				c-0.1,0.4-0.2,0.7-0.4,1C90.2,37.7,89.9,37.8,89.6,37.8z"/>
+			<path class="st8" d="M105,37.8c-0.9,0-1.8-0.3-2.6-0.8c-0.8-0.5-1.4-1.4-1.8-2.5c-0.5-1.1-0.7-2.5-0.7-4.1c0-1,0.1-1.9,0.4-2.8
+				c0.2-0.9,0.6-1.7,1-2.4c0.4-0.7,0.9-1.2,1.5-1.6c0.6-0.4,1.2-0.6,1.9-0.6c0.9,0,1.7,0.2,2.3,0.7c0.7,0.5,1.2,1.1,1.6,1.9
+				c0.4,0.8,0.6,1.7,0.6,2.7c0,0.4-0.1,0.7-0.2,1.1c-0.1,0.3-0.3,0.6-0.5,0.9c-0.2,0.2-0.5,0.3-0.8,0.3c-0.3,0-0.6-0.1-0.8-0.2
+				c-0.2-0.1-0.3-0.3-0.5-0.5c-0.1-0.2-0.3-0.4-0.4-0.6c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.8-0.2c-0.3,0-0.6,0.1-0.8,0.3
+				c-0.3,0.2-0.5,0.5-0.6,0.9s-0.2,0.8-0.2,1.3c0,0.7,0.1,1.4,0.4,1.9c0.3,0.6,0.7,0.8,1.2,0.8c0.4,0,0.7-0.1,0.9-0.3
+				s0.4-0.4,0.6-0.6c0.2-0.2,0.3-0.4,0.5-0.6c0.2-0.2,0.4-0.3,0.8-0.3c0.4,0,0.8,0.2,1,0.6c0.2,0.4,0.3,0.9,0.3,1.5
+				c0,0.6-0.2,1.2-0.6,1.7c-0.3,0.6-0.8,1-1.3,1.3C106.4,37.6,105.8,37.8,105,37.8z"/>
+			<path class="st8" d="M113.1,37.8c-0.7,0-1.4-0.2-1.9-0.6c-0.6-0.4-1-1.1-1.3-1.8c-0.3-0.8-0.5-1.6-0.5-2.6c0-1,0.1-1.8,0.5-2.6
+				c0.3-0.7,0.8-1.3,1.3-1.8s1.2-0.7,1.9-0.7c0.7,0,1.3,0.2,1.9,0.6c0.6,0.4,1,1,1.3,1.8c0.3,0.7,0.5,1.6,0.5,2.6
+				c0,0.9-0.1,1.8-0.5,2.5c-0.3,0.8-0.8,1.4-1.3,1.8C114.5,37.6,113.8,37.8,113.1,37.8z M113.1,34.8c0.3,0,0.5-0.1,0.7-0.4
+				c0.2-0.3,0.3-0.6,0.3-1c0-0.4-0.1-0.7-0.3-1c-0.2-0.3-0.4-0.4-0.7-0.4s-0.5,0.1-0.7,0.4c-0.2,0.3-0.3,0.6-0.3,1
+				c0,0.4,0.1,0.7,0.3,1C112.6,34.6,112.8,34.8,113.1,34.8z"/>
+			<path class="st8" d="M119.3,37.8c-0.5,0-0.9-0.3-1.1-0.8c-0.2-0.5-0.4-1.4-0.5-2.5c-0.1-1.1-0.1-2.5-0.1-4.1c0-1.1,0-2.1,0-3
+				c0-0.9,0.1-1.7,0.2-2.3c0.1-0.7,0.3-1.2,0.5-1.5c0.2-0.4,0.6-0.5,1-0.5s0.8,0.2,1,0.5c0.2,0.4,0.4,0.9,0.5,1.5
+				c0.1,0.7,0.2,1.4,0.2,2.3c0,0.9,0,1.9,0,3c0,2.5-0.1,4.3-0.4,5.6C120.5,37.2,120,37.8,119.3,37.8z"/>
+			<path class="st8" d="M125.2,37.8c-0.7,0-1.4-0.2-1.9-0.6c-0.6-0.4-1-1.1-1.3-1.8c-0.3-0.8-0.5-1.6-0.5-2.6c0-1,0.1-1.8,0.5-2.6
+				s0.8-1.3,1.3-1.8s1.2-0.7,1.9-0.7c0.7,0,1.3,0.2,1.9,0.6c0.6,0.4,1,1,1.3,1.8c0.3,0.7,0.5,1.6,0.5,2.6c0,0.9-0.1,1.8-0.5,2.5
+				c-0.3,0.8-0.8,1.4-1.3,1.8C126.6,37.6,126,37.8,125.2,37.8z M125.3,34.8c0.3,0,0.5-0.1,0.7-0.4c0.2-0.3,0.3-0.6,0.3-1
+				c0-0.4-0.1-0.7-0.3-1c-0.2-0.3-0.4-0.4-0.7-0.4s-0.5,0.1-0.7,0.4c-0.2,0.3-0.3,0.6-0.3,1c0,0.4,0.1,0.7,0.3,1
+				C124.8,34.6,125,34.8,125.3,34.8z"/>
+			<path class="st8" d="M131.2,37.8c-0.3,0-0.6-0.2-0.8-0.5c-0.2-0.3-0.4-0.7-0.5-1.3c-0.1-0.5-0.2-1.2-0.2-1.8
+				c0-0.7-0.1-1.4-0.1-2.1c0-0.5,0-1,0-1.5c0-0.5,0.1-1,0.1-1.4c0.1-0.4,0.2-0.8,0.4-1.1c0.2-0.3,0.5-0.4,0.9-0.4
+				c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.4,0.4,0.4,0.8c0.2-0.3,0.5-0.5,0.9-0.6c0.4-0.1,0.7-0.2,1.1-0.2c0.3,0,0.6,0.1,1,0.3
+				c0.3,0.2,0.6,0.5,0.8,0.9c0.2,0.4,0.3,0.8,0.3,1.3c0,0.4-0.1,0.8-0.3,1.2c-0.2,0.4-0.5,0.6-0.9,0.6c-0.2,0-0.3,0-0.4-0.1
+				c-0.1-0.1-0.2-0.1-0.3-0.2c-0.1-0.1-0.2-0.1-0.4-0.1c-0.4,0-0.7,0.2-1,0.6c-0.3,0.4-0.5,1-0.5,1.7c0,0.4,0,0.8,0,1.2
+				s-0.1,0.8-0.1,1.2c-0.1,0.4-0.2,0.7-0.4,1C131.8,37.7,131.5,37.8,131.2,37.8z"/>
+			<path class="st8" d="M138.4,27.5c-0.5,0-0.9-0.3-1.2-0.8c-0.3-0.5-0.5-1.1-0.5-1.8c0-0.5,0.1-0.9,0.2-1.3
+				c0.2-0.4,0.4-0.7,0.6-0.9c0.3-0.2,0.6-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4c0.3,0.2,0.5,0.5,0.6,0.9c0.2,0.4,0.2,0.8,0.2,1.3
+				c0,0.5-0.1,0.9-0.2,1.3c-0.2,0.4-0.4,0.7-0.6,0.9C139,27.4,138.7,27.5,138.4,27.5z M138.4,37.8c-0.4,0-0.7-0.2-0.9-0.5
+				c-0.2-0.3-0.3-0.8-0.4-1.5c-0.1-0.7-0.1-1.5-0.1-2.6c0-1.1,0-1.9,0.1-2.6c0.1-0.7,0.2-1.2,0.4-1.5c0.2-0.3,0.5-0.5,0.9-0.5
+				c0.4,0,0.7,0.2,0.9,0.5c0.2,0.3,0.3,0.8,0.4,1.5c0.1,0.7,0.1,1.5,0.1,2.6c0,1.1,0,1.9-0.1,2.6c-0.1,0.7-0.2,1.2-0.4,1.5
+				C139.1,37.7,138.8,37.8,138.4,37.8z"/>
+			<path class="st8" d="M146.6,37.8c-0.4,0-0.7-0.2-0.8-0.5c-0.2-0.3-0.3-0.7-0.3-1.2c0-0.5,0-1,0-1.5c0-0.7-0.1-1.4-0.2-1.8
+				c-0.1-0.5-0.4-0.7-0.8-0.7c-0.3,0-0.6,0.2-0.7,0.7c-0.2,0.5-0.2,1.1-0.2,1.8c0,0.5,0,1,0,1.5c0,0.5-0.1,0.9-0.3,1.2
+				c-0.2,0.3-0.4,0.5-0.9,0.5c-0.3,0-0.6-0.2-0.8-0.5c-0.2-0.3-0.4-0.7-0.5-1.3c-0.1-0.5-0.2-1.1-0.2-1.7c0-0.6-0.1-1.2-0.1-1.8
+				s0-1.1,0.1-1.7c0-0.6,0.1-1.1,0.2-1.7c0.1-0.5,0.3-0.9,0.5-1.2c0.2-0.3,0.5-0.5,0.8-0.5c0.6,0,0.9,0.4,1.1,1.1
+				c0.1-0.2,0.3-0.4,0.6-0.5c0.3-0.2,0.6-0.2,0.9-0.2c0.8,0,1.4,0.3,1.9,0.8c0.5,0.6,0.8,1.3,1.1,2.3s0.3,2.1,0.3,3.4
+				c0,0.7,0,1.2-0.1,1.8c-0.1,0.5-0.2,1-0.4,1.3C147.2,37.7,147,37.8,146.6,37.8z"/>
+			<path class="st8" d="M151.7,41.5c-0.6,0-1-0.2-1.4-0.5c-0.4-0.3-0.6-0.7-0.6-1.2c0-0.5,0.2-1,0.5-1.3c0.3-0.3,0.7-0.4,1.2-0.3
+				c0.5,0.1,1,0.1,1.5-0.1c0.4-0.2,0.7-0.5,0.8-0.9c-0.2,0.1-0.4,0.2-0.7,0.3c-0.3,0.1-0.6,0.1-0.9,0.1c-0.7,0-1.2-0.1-1.7-0.4
+				c-0.5-0.3-0.8-0.7-1.1-1.1c-0.3-0.5-0.5-0.9-0.6-1.5c-0.1-0.5-0.2-1-0.2-1.4c0-1.2,0.2-2.1,0.5-2.9c0.4-0.8,0.8-1.4,1.3-1.8
+				c0.5-0.4,1.1-0.6,1.7-0.6c0.2,0,0.4,0,0.7,0.1c0.3,0,0.5,0.1,0.7,0.2c0.1-0.4,0.2-0.6,0.4-0.9c0.2-0.2,0.5-0.3,0.9-0.3
+				c0.4,0,0.7,0.2,0.9,0.5c0.2,0.3,0.4,0.8,0.6,1.4c0.1,0.6,0.2,1.2,0.3,2c0.1,0.7,0.1,1.5,0.1,2.2c0,0.8,0,1.5-0.1,2.1
+				c-0.1,1.3-0.4,2.5-0.8,3.4c-0.4,1-0.9,1.7-1.6,2.2C153.4,41.2,152.6,41.5,151.7,41.5z M152.3,34.4c0.3,0,0.6-0.2,0.8-0.5
+				c0.2-0.3,0.3-0.7,0.3-1.1c0-0.4-0.1-0.8-0.3-1.1c-0.2-0.3-0.5-0.5-0.8-0.5c-0.3,0-0.6,0.2-0.8,0.5c-0.2,0.3-0.3,0.7-0.3,1.1
+				c0,0.4,0.1,0.8,0.3,1.1C151.7,34.3,152,34.4,152.3,34.4z"/>
+		</g>
+	</g>
+</g>
+</svg>

BIN
dist/anc/images/screentshot_01.png


+ 70 - 0
dist/anc/index.html

@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>Art Number Coloring</title>
+    <link rel="stylesheet" href="./reset.css">
+    <link rel="stylesheet" href="./main.css">
+    <link rel="shortcut icon" href="./favicon.ico">
+</head>
+<body>
+    <header class="header">
+        <div class="header-container">
+            <div class="logo">Art Number Coloring</div>
+            <div class="logo-name">Art Number Coloring</div>
+            <div class="header-link">
+                <a href="https://www.facebook.com/artnumbercoloring/" class="link-fb"></a>
+                <a href="mailto:ares.nju@gmail.com" class="link-email"></a>
+            </div>
+        </div>
+    </header>
+    <div class="container">
+        <section class="section-main clearfix">
+            <div class="left">
+                <div class="title">Enjoy the Fun of Number Coloring!</div>
+                <div class="content" style="margin-top: 40px;">
+
+                  🎨 Art Number Coloring - Color by Number 🎨 is one of the best paint by number coloring book with various categories of coloring pages. Coloring Pages are update everyday, you can always find images suite to you. It is 💯 Free! We offer this free coloring book as a color therapy to release your stress. Share your artworks to your friends and color anytime & anywhere.
+
+
+                </div>
+                <div class="content" style="margin-top: 90px;">Use it on your phone or tablet.</div>
+                <div class="store-link">
+                    <a target="_blank" href="https://apps.apple.com/gb/app/art-number-coloring-book/id1575480118" class="appstore"></a>
+                    <a target="_blank" href="https://play.google.com/store/apps/details?id=com.pcoloring.art.puzzle.color.by.number" class="googleplay"></a>
+                </div>
+                <div class="content" style="margin-top: 90px;">Or visit our website:.</div>
+                <div class="store-link">
+                    <a target="_blank" href="https://art.pcoloring.com" class="website"></a>
+                </div>
+            </div>
+            <div class="right"></div>
+        </section>
+
+        <footer class="footer">
+            <div class="line"></div>
+            <ul class="footer-nav">
+                <li>Follow us on 
+                    <a class="icon-blue-fb" href="https://www.facebook.com/artnumbercoloring/"></a>
+                </li>
+                <li>
+                    <a href="/color_number_policy.html">Privacy Policy</a>
+                </li>
+                <li>
+                    <a href="mailto:ares.nju@gmail.com">Contact us</a>
+                </li>
+            </ul>
+            <div class="store-link">
+                    <a target="_blank" href="https://apps.apple.com/gb/app/art-number-coloring-book/id1575480118" class="appstore"></a>
+                    <a target="_blank" href="https://play.google.com/store/apps/details?id=com.pcoloring.art.puzzle.color.by.number" class="googleplay"></a>
+ 
+            </div>
+            <div class="copyright">
+                Copyright © Art Number Coloring
+            </div>
+        </footer>
+    </div>
+</body>
+</html>

BIN
dist/anc/logo.webp


+ 254 - 0
dist/anc/main.css

@@ -0,0 +1,254 @@
+html{
+    font-family: Rubik;
+}
+.container{
+    max-width: 1440px;
+    padding-top: 120px;
+    margin: 0 auto;
+}
+/* header */
+.header{
+    height: 120px;
+    padding: 30px;
+    position: fixed;
+    top: 0;
+    width: 100%;
+    background-color: #fff;
+    border-bottom: #e6e6e6 solid 1px;
+    z-index: 999;
+}
+.header .header-container{
+    max-width: 1440px;
+    margin: 0 auto;
+}
+.header .logo{
+    width: 60px;
+    height: 60px;
+    background-image: url('./logo.webp');
+    border-radius:10px;
+    background-size: 100%;
+    background-repeat: no-repeat;
+    text-indent: -1000px;
+    float: left;
+}
+.header .logo-name{
+    font-size: 24px;
+    line-height: 60px;
+    text-indent: 20px;
+    float: left;
+}
+.header .header-link{
+    height: 60px;
+    float: right;
+}
+.header .header-link a{
+    display: inline-block;
+    margin: 15px 20px 15px 30px;
+    width: 30px;
+    height: 30px;
+    background-size: 100%;
+    background-repeat: no-repeat;
+}
+.header .header-link a.link-fb{
+    background-image: url('./images/icon_fb.png');
+}
+.header .header-link a.link-email{
+    background-image: url('./images/icon_mail.png');
+}
+/* first screen */
+.section-main{
+    padding: 20px 70px 400px;
+    background-image: url('../images/img_Yellow@3x.png'), url('../images/img_Blue@3x.png'), url('../images/img_Red@3x.png');
+    background-repeat: no-repeat;
+    background-position: 97% 70%, 69% -5%, 0 80%;
+    background-size: 156px 156px, 219px 219px, 352px 613px;
+}
+.section-main .left{
+    padding: 80px 0 0 110px;
+    width: 46%;
+    float: left;
+}
+.section-main .left .title{
+    line-height: 85px;
+    font-size: 52px;
+    font-weight: bold;
+}
+.section-main .left .content{
+    color: #292929;
+    font-size: 18px;
+    line-height: 22px;
+}
+.section-main .left .store-link{
+    margin-top: 30px;
+    display: flex;
+    justify-content: space-between;
+    flex-wrap: nowrap;
+}
+.section-main .left .store-link a{
+    display: inline-block;
+    width: 46%;
+    max-width: 210px;
+    height: 80px;
+    max-height: 80px;
+    margin-right: 36px;
+    background-size: 100% auto;
+    background-repeat: no-repeat;
+}
+.section-main .left .store-link a:last-child{
+    margin-right: 0;
+}
+.section-main .left .store-link a.appstore{
+    background-image: url('./images/button_App_Store@3x.png')
+}
+.section-main .left .store-link a.googleplay{
+    background-image: url('./images/button_Google_Play@3x.png')
+}
+.section-main .left .store-link a.website{
+    background-image: url('./images/logo.svg')
+}
+.section-main .right{
+    width: 54%;
+    height: 990px;
+    background-image: url('./images/screentshot_01.png');
+    background-repeat: no-repeat;
+    background-size: 80%;
+    background-position: center;
+    float: right;
+}
+
+/* section list show 4 feature */
+.section-repeat{
+    margin-top: 180px;
+    display: flex;
+    justify-content: space-between;
+    flex-wrap: nowrap;
+}
+.section-repeat:nth-child(2){
+    margin-top: 0;
+}
+.section-repeat .theme-img{
+    width: 50%;
+    min-height: 720px;
+    height: auto;
+    background-size: 100% auto;
+    background-repeat: no-repeat;
+    background-position: center;
+}
+.section-repeat .theme-content{
+    width: 50%;
+    padding: 0 135px;
+}
+.section-repeat .theme-content .icon{
+    margin-top: 105px;
+    width: 80px;
+    height: 80px;
+    background-size: 100%;
+    background-repeat: no-repeat;
+}
+.section-repeat .theme-content .title{
+    margin-top: 30px;
+    line-height: 42px;
+    font-size: 36px;
+    font-weight: bold;
+}
+.section-repeat .theme-content .content{
+    margin-top: 40px;
+    line-height: 22px;
+    font-size: 18px;
+}
+.section-repeat .theme-content .content:last-child{
+    margin-bottom: 105px;
+}
+.icon.innovation{
+    background-image: url('./images/icon_Innovation@3x.png');
+}
+.theme-img.innovation{
+    background-image: url('./images/img_Innovation@3x.png');
+}
+.icon.secret{
+    background-image: url('./images/icon_Secret@3x.png');
+}
+.theme-img.secret{
+    background-image: url('./images/img_Secret@3x.png');
+}
+.icon.coloring{
+    background-image: url('./images/icon_Coloring@3x.png');
+}
+.theme-img.coloring{
+    background-image: url('./images/img_Coloring@3x.png');
+}
+.icon.community{
+    background-image: url('./images/icon_Community@3x.png');
+}
+.theme-img.community{
+    background-image: url('./images/img_Community@3x.png');
+}
+
+.icon-blue-fb{
+    margin-left: 10px;
+    vertical-align: middle;
+    display: inline-block;
+    width: 28px;
+    height: 28px;
+    background-image: url('./images/icon_fb.png');
+    background-size: 100%;
+    background-repeat: no-repeat;
+}
+/* footer */
+.footer{
+    position: relative;
+    margin-top: 380px;
+    padding: 0 135px;
+    min-height: 530px;
+}
+.footer .line{
+    border-top: 2px solid #292929;
+}
+.footer .footer-nav{
+    color: #292929;
+    font-weight: bold;
+    margin-top: 124px;
+    font-size: 18px;
+    line-height: 22px;
+    float: left;
+}
+.footer .footer-nav li:first-child{
+    margin-bottom: 50px;
+}
+.footer .footer-nav li{
+    margin-bottom: 10px;
+}
+.footer .footer-nav li a{
+    color: #292929;
+    
+}
+.footer .store-link{
+    margin-top: 100px;
+    float: right;
+}
+.footer .store-link a{
+    display: inline-block;
+    width: 210px;
+    height: 80px;
+    margin-right: 36px;
+    background-size: 100%;
+    background-repeat: no-repeat;
+}
+.footer .store-link a:last-child{
+    margin-right: 0;
+}
+.footer .store-link a.appstore{
+    background-image: url('./images/button_App_Store@3x.png')
+}
+.footer .store-link a.googleplay{
+    background-image: url('./images/button_Google_Play@3x.png')
+}
+.footer .copyright{
+    font-size: 18px;
+    line-height: 22px;
+    color: #9B9B9B;
+    position: absolute;
+    bottom: 40px;
+    left: 50%;
+    transform: translateX(-50%);
+}

+ 48 - 0
dist/anc/reset.css

@@ -0,0 +1,48 @@
+/* reset */
+html{
+    -webkit-text-size-adjust:none;
+    -webkit-user-select:none;
+    -webkit-touch-callout: none;
+    font-family: Helvetica;
+}
+body {
+    font-size:12px;
+}
+body,h1,h2,h3,h4,h5,h6,p,dl,dd,ul,ol,pre,form,input,textarea,th,td,select{
+    margin:0; padding:0;
+    font-weight: normal;text-indent: 0;
+}
+a,button,input,textarea,select,div,img{
+    background: none;
+    -webkit-tap-highlight-color:rgba(255,0,0,0);
+    outline:none;
+    -webkit-appearance:none;
+}
+em{
+    font-style:normal
+}
+li {
+    list-style:none;
+}
+a{
+    text-decoration:none;
+}
+img{
+    border:none; vertical-align:top;
+}
+table{
+    border-collapse:collapse;
+}
+textarea{
+    resize:none; overflow:auto;
+}
+*{
+    box-sizing: border-box;
+}
+/* end reset */
+
+.clearfix::after {
+    display: block;
+    clear: both;
+    content: "";
+}

+ 5 - 3
models/schema-art.js

@@ -57,9 +57,11 @@ let artSchema = new Schema({
   height: { type: Number, index: true, required: true, desc: '高' },
   name: { type: String, required: true, desc: '作品名', searchable: true },
   // 网站seo meta  description, 160个字符以内
-  desc: { type: String, desc: '作品描述', searchable: true },  // json字符串,形如: {zh: '中国', en: 'China'}
-  // 新增字段,网站title,60个字符以内
-  title: { type: String, desc: '作品标题', searchable: true }, // json字符串,形如: {zh: '中国', en: 'China'}
+  desc: { type: String, desc: '作品描述', },  // json字符串,形如: {zh: '中国', en: 'China'}
+  // 新增字段,网站seo title,60个字符以内
+  title: { type: String, desc: '作品标题', }, // json字符串,形如: {zh: '中国', en: 'China'}
+  // 新增字段,小标题
+  subtitle: { type: String, desc: '小标题', searchable: true }, // json字符串,形如: {zh: '中国', en: 'China'}
   // 文案描述, 200字左右
   copy: { type: String, desc: '文案描述', searchable: true }, // json字符串,形如: {zh: '中国', en: 'China'}
   use: { type: String, required: true, index: true, default: 'normal', lowercase: true, trim: true, desc: '用途', searchable: true },

+ 5 - 2
service/cron-jobs/fetch-meta.js

@@ -22,7 +22,7 @@ async function fetchMetaByImageFromDoubao(imageUrl) {
         "role": "user", "content": [
           {
             "type": "text",
-            "text": "根据图片生成标题(title, 60个字符以内)、简要描述(description, 用于网站SEO的meta description,160个字符以内,尽量包含Coloring Page关键字)、文案描述(copy, 200字左右,尽量包含Coloring Page 关键字)。 以json格式输出,支持语言中文(zh)、英语(en)、西班牙语(es)、葡萄牙语(pt)、日语(ja),形如: { title: {zh:'', en:'', es: '', pt: '', ja: ''}, description: {zh:'', en:'', es: '', pt: '', ja: ''}, copy:{zh:'', en:'', es: '', pt: '', ja: ''} }"
+            "text": "这是一张填色页图片,根据图片生成简短标题(title,无需包含填色页关键字)、SEO标题(seotitle, 用于网站SEO 60个字符以内,包含填色页关键字)、简要描述(description, 用于网站SEO的meta description,160个字符以内,包含填色页关键字)、文案描述(copy, 200字左右)。以json格式输出,支持语言中文(zh)、英语(en)、西班牙语(es)、葡萄牙语(pt)、日语(ja),形如: { title: {zh:'', en:'', es: '', pt: '', ja: ''}, description: {zh:'', en:'', es: '', pt: '', ja: ''}, copy:{zh:'', en:'', es: '', pt: '', ja: ''} }"
           },
           {
             "type": "image_url",
@@ -216,13 +216,16 @@ async function runArtMeta() {
       console.log(metaInfo);
       let metaInfoJson = JSON.parse(metaInfo);
       let titleJson = metaInfoJson.title;
+      let seotitleJson = metaInfoJson.seotitle;
       let descJson = metaInfoJson.description;
       let copyJson = metaInfoJson.copy;
       let title = JSON.stringify(titleJson);
+      let seotitle = JSON.stringify(seotitleJson);
       let desc = JSON.stringify(descJson);
       let copy = JSON.stringify(copyJson);
 
-      doc.title = title;
+      doc.title = seotitle;
+      doc.subtitle = title;
       doc.desc = desc;
       doc.copy = copy;
       await doc.save();

+ 130 - 0
service/cron-jobs/fetch-meta_tmp.js

@@ -0,0 +1,130 @@
+const models = require('../../models');
+const fetch = require('node-fetch');
+
+let apiKey = require('process').env.ARK_API_KEY;
+const url = "https://ark.cn-beijing.volces.com/api/v3/chat/completions";
+let headers = {
+  'Authorization': `Bearer ${apiKey}`,
+  'Content-Type': 'application/json'
+}
+
+/**
+ * 豆包视觉API
+ * 从豆包获取图片的标题和文案描述
+ * @param {*} imageUrl 
+ */
+async function fetchMetaByImageFromDoubao(imageUrl) {
+  let data = {
+    "model": "ep-20250206115552-7qg5c", // Doubao-1.5...ion-pro-32k 当前最新,贵,响应慢,效果好
+    // "model": "ep-20250204231910-4phb8", // Doubao-vision-lite-32k  便宜点,相应速度快
+    "messages": [
+      {
+        "role": "user", "content": [
+          {
+            "type": "text",
+            "text": "根据图片生成一个简短标题(title), 以json格式输出,支持语言中文(zh)、英语(en)、西班牙语(es)、葡萄牙语(pt)、日语(ja),形如: { title: {zh:'', en:'', es: '', pt: '', ja: ''}}"
+          },
+          {
+            "type": "image_url",
+            "image_url": {
+              "url": `${imageUrl}`
+            }
+          }
+        ]
+      }
+    ]
+  }
+
+  console.log(data);
+
+  const jsonData = JSON.stringify(data);
+
+  const response = await fetch(url, { method: 'POST', headers, body: jsonData });
+
+  let responseJson = await response.json();
+
+  console.log(responseJson);
+
+  return responseJson.choices[0].message.content;
+}
+
+async function runArtMeta() {
+  let done = 0;
+  let duration = 0;
+  let hour, minute, second;
+  let start = Date.now();
+
+
+  // 筛选出所有已经ready并且还没有title的图
+  let query = { status: { $gte: 7000 }, $or: [{ subtitle: { $exists: false } }, { subtitle: null }] };
+  let docs = await models.Art.find(query).limit(1000).sort({ publishTime: 'desc' });  // 内存有限,每次跑1000个
+
+
+  let total = docs.length;
+  console.log('total:', total);
+  if (total <= 0) return;
+
+  for (let doc of docs) {
+    console.log(`process ${doc._id}`);
+
+    let thumbUrl = `http://color.jccytech.cn/thumbs/v2/work/320/${doc._id}.png`;
+    if (doc.hasSpecial) {
+      thumbUrl = `http://color.jccytech.cn/thumbs/v2/special/320/${doc._id}.png`;
+    }
+
+    console.time(doc._id);
+
+    try {
+      let metaInfo = await fetchMetaByImageFromDoubao(thumbUrl);
+      console.log(metaInfo);
+      let metaInfoJson = JSON.parse(metaInfo);
+      let titleJson = metaInfoJson.title;
+      let title = JSON.stringify(titleJson);
+
+      doc.subtitle = title;
+      await doc.save();
+
+    } catch (e) {
+      console.error(e.message);
+    }
+
+    console.timeEnd(doc._id);
+
+    done++;
+    duration = (Date.now() - start) / 1000;
+    hour = (Math.floor(duration / 60 / 60)).toString().padStart(2, '0');
+    minute = (Math.floor(duration / 60) % 60).toString().padStart(2, '0');
+    second = (Math.floor(duration) % 60).toString().padStart(2, '0');
+
+    console.log('progress: ' + Math.floor((100 * done / total)) + '% used time: ' + hour + ':' + minute + ':' + second);
+
+  }
+
+  runArtMeta();
+
+}
+
+async function run() {
+  await runArtMeta();
+}
+
+
+async function test() {
+  let metaInfo = await fetchMetaByImageFromDoubao("https://color.jccytech.cn/thumbs/v2/work/640/67a254ec4f9d65537938e5c5.png");
+  console.log(metaInfo);
+  let metaInfoJson = JSON.parse(metaInfo);
+  let titleJson = metaInfoJson.title;
+  let descJson = metaInfoJson.copy;
+  let title = JSON.stringify(titleJson);
+  let desc = JSON.stringify(descJson);
+  console.log(title);
+  console.log(desc);
+}
+
+
+module.exports = { run }
+
+
+if (require.main == module) {
+  run();
+}