Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/thymeleaf request #33

Merged
merged 8 commits into from
Aug 26, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion demo.iml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@
<orderEntry type="library" name="twitter4j-core-4.0.7" level="project" />
<orderEntry type="library" name="twitter4j-examples-4.0.7" level="project" />
<orderEntry type="library" name="twitter4j-stream-4.0.7" level="project" />
<orderEntry type="library" name="Maven: com.vdurmont:emoji-java:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.json:json:20170516" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:2.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.2.RELEASE" level="project" />
Expand Down Expand Up @@ -177,6 +179,5 @@
<orderEntry type="library" name="Maven: org.seasar.doma:doma:2.18.0" level="project" />
<orderEntry type="library" name="Maven: com.vdurmont:emoji-java:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.json:json:20170516" level="project" />

</component>
</module>
14 changes: 12 additions & 2 deletions docker/pg/1-createTable.sql
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,16 @@ insert into users(name, mail, filterlevel) values
('pinapple.chocomint', '[email protected]', 3)
;

insert into emolog(userid, friendid, name, latestemolog)
values (1, 2, 'hoge', 'emojihoge')
insert into friend(userid, friendid, name, latestemolog) values
(1, 2, 'hoge', 'emojihoge'),
(2, 1, 'Trump', ':smile:'),
(1, 3, 'kim jyoung-un', ':sad:')
;

insert into emolog(userid, friendid, create_at, contents) values
(1, 2, current_timestamp, ':mountain:'),
(2, 1, current_timestamp, ':hotel:'),
(1, 3, current_timestamp, ':gorilla:'),
(3, 1, current_timestamp, ':space:')
;

74 changes: 74 additions & 0 deletions src/main/java/com/example/demo/controller/HtmlController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.example.demo.controller;

import com.vdurmont.emoji.EmojiManager;
import org.springframework.ui.ModelMap;
import com.vdurmont.emoji.EmojiParser;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import twitter4j.TwitterException;

import java.util.ArrayList;
import java.util.List;


@Controller
@RequestMapping(path = "/")
public class HtmlController {
@RequestMapping(path = "/", method = RequestMethod.GET)
public String index() {
return "index";
}

@RequestMapping(path = "/enter", method = RequestMethod.GET)
public String crawling(
ModelMap modelMap
) throws Exception {

List<String> keyword_tweets = new ArrayList<String>();
List<String> keyword_images = new ArrayList<String>();

keyword_tweets = ViewController.get_NLU_keywords("CNN", 100000);
keyword_images = ViewController.get_image_keywords("CNN", 100000);

List<String> emojiList = new ArrayList<String>();

// TODO: ここでDBアクセスかなんかlook upする??。->つかささんのやつくっつける。

// 文字列整形の方(テキトーに::をつける方)
for( String keyword : keyword_tweets){
try{
String tmp = EmojiParser.parseToHtmlDecimal(":" + keyword + ":");
emojiList.add(tmp);
}
catch (NullPointerException ignored){}
}

for( String keyword : keyword_images){
try{
String tmp = EmojiParser.parseToHtmlDecimal(":" + keyword + ":");
emojiList.add(tmp);
}
catch (NullPointerException ignored){}
}

// で、:hoge:みたいなんが得られたらEmologにパースして、それをaddAttributeする.->データがdbに入っていないとThymeleaf側で取り出せん模様。
// modelMap.addAttribute("emologs", emojiList);


// emojiList : ["&#128515", "&#128515", "&#128515"] みたいな感じ。
// emojiListから一つの文字列に直す。
String emolog = String.join("", emojiList);


//TODO: ここで得られたemologをdbに登録する処理…
// emolog(userid, friendid, create_at, contents)
// userid = 1, friendid = 2, create_at = TIMESTAMP??, contents = emolog





return "friendlist";
}
}
46 changes: 43 additions & 3 deletions src/main/java/com/example/demo/controller/ViewController.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public class ViewController {
@Autowired
JdbcTemplate jdbcTemplate;


@RequestMapping(path = "/users", method = RequestMethod.GET)
public String index() {
List<Map<String, Object>> list;
Expand Down Expand Up @@ -94,7 +95,7 @@ public List<String> collect_image_keywords_from_tweets(

// コントローラは関数として呼び出すのはキツイっぽいのでとりま関数として取り出してる。。
//TODO: TwitterControllerやNLUControllerから共通部分を分離して別クラスとして保持。
private QueryResult search_user(String username, long tweet_id) throws TwitterException {
private static QueryResult search_user(String username, long tweet_id) throws TwitterException {
// 初期化
Twitter twitter = new TwitterFactory().getInstance();
Query query = new Query();
Expand All @@ -106,7 +107,7 @@ private QueryResult search_user(String username, long tweet_id) throws TwitterEx
return twitter.search(query);
}

private String NLU(String text) {
private static String NLU(String text) {
IamAuthenticator authenticator = new IamAuthenticator("fVfaYMA7tCh4zInWBhTBb5t69xQryK7ObKl42nampynG");
NaturalLanguageUnderstanding naturalLanguageUnderstanding = new NaturalLanguageUnderstanding("2019-07-12", authenticator);
naturalLanguageUnderstanding.setServiceUrl("https://api.jp-tok.natural-language-understanding.watson.cloud.ibm.com/instances/ac3df365-93f6-4255-beb8-620d66041251");
Expand Down Expand Up @@ -140,7 +141,7 @@ private String NLU(String text) {
}


private String ImageProcessing(String url) throws FileNotFoundException {
private static String ImageProcessing(String url) throws FileNotFoundException {

IamAuthenticator authenticator = new IamAuthenticator("8nwN0eKp7eZ73So4DLdPndp_yv-vtlI27pN1wK2TjVg1");
VisualRecognition visualRecognition = new VisualRecognition("2019-07-12", authenticator);
Expand All @@ -161,4 +162,43 @@ private String ImageProcessing(String url) throws FileNotFoundException {

}

//関数もおいちゃえ
public static List<String> get_NLU_keywords(String username, long tweet_id) throws TwitterException {
QueryResult result = search_user(username, tweet_id);
ArrayList<String> NLU_results = new ArrayList<>();

for (Status status : result.getTweets()) {
String tmp = NLU(status.getText());
if(tmp != null) {
// System.out.println(tmp);
NLU_results.add(tmp);
}
}

return NLU_results;
//TODO: 整形する必要あるかも?
}


public static List<String> get_image_keywords(String username, long tweet_id) throws Exception {
QueryResult result = search_user(username, tweet_id);
ArrayList<String> imageprocessing_results = new ArrayList<>();

for (Status status : result.getTweets()) {
if(status.getMediaEntities().length > 0) {
// System.out.println(status.getMediaEntities()[0].getMediaURL());

String tmp = ImageProcessing(status.getMediaEntities()[0].getMediaURL());
if (tmp != null) {
// System.out.println(tmp);
imageprocessing_results.add(tmp);
}
}
}

return imageprocessing_results;
// ["call center", "people", "newsreader"]みたいなんがくる。

}

}
76 changes: 65 additions & 11 deletions src/main/resources/static/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,39 @@ a:hover {
height: 100%;
background-color: #fffacd;
}

.global-nav {
height: 10%;
width: 100%;

width: 960px;
margin: 0 auto;
position: fixed;
bottom: 0;
}

.global-nav li{
background-color: #f0f8ff;
width: 33%;
float: left;
margin: 5px 1px;
text-align: center;
font-size: 20px;
list-style: none;
font-family: 'Bitter',serif;
}

.global-nav li a{
padding: 5px 5%;
}


.global-nav li a:hover{
border-bottom: 2px solid;
padding-bottom: 3px;
text-decoration: none;
}

/* chat.html 部分*/

.friend-name {
Expand All @@ -81,11 +114,11 @@ ul.header_ul{
width: 100%;
}
ul.header_ul li{
display: inline-block;
vertical-align:middle;
margin: 0;
padding: 0;
width: 45%;
display: inline-block;
vertical-align:middle;
margin: 0;
padding: 0;
width: 45%;
}

.emolog {
Expand All @@ -109,16 +142,16 @@ ul.header_ul li{
}

.emolog_ul {
width: 100%;
width: 100%;

}

.emolog_ul li {
text-align: center;
display: inline-block;
vertical-align:middle;
margin: 0;
padding: 0;
text-align: center;
display: inline-block;
vertical-align:middle;
margin: 0;
padding: 0;
}
.emolog_ul li.emolog-date-cover {
vertical-align:top;
Expand All @@ -144,3 +177,24 @@ ul.header_ul li{
font-size: 20px;
font-family: 'Bitter',serif;
}

/* emologlist.html*/
.emolog-list {
height: 90%;
background-color: #f5f5f5;
overflow: auto;
}
.emolog-list li {
border-bottom: solid 1px #000000;
list-style: none;
text-align: center;
}
.emolog-date {
float: left;
text-align: left;
margin: 5px 5px 0 0;
font-size: 18px;
font-family: 'Bitter',serif;
}

/* emologlist.html 終わり*/
2 changes: 1 addition & 1 deletion src/main/resources/templates/chat.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<div class="header">
<ul class="header_ul">
<li>
<a href="emologlist.html"> <img th:src="@{../static/images/arrow_left_24.png}" alt="backbutton"></a>
<a href="emologlist.html"> <img th:src="@{/images/arrow_left_24.png}" alt="backbutton"></a>
</li>
<li>
<div class="friend-name">
Expand Down
39 changes: 12 additions & 27 deletions src/main/resources/templates/emologlist.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,33 +22,18 @@
<div class="emolog-list">

<!-- 本当はjava でデータを取ってきてすべて表示 例を書く-->
<ul>
<li><a href="chat.html">
<p class="emolog-date">8月18日<p>
<!--相手のエモログの表示-->
<p class="emoji">&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;</p>
<img src="../static/images/arrow.png" alt="emolog_arrow">
</a>
</li>
<li>
<p class="emolog-date">8月17日<p>
<!--相手のエモログの表示-->
<p class="emoji">&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;</p>
<img src="../static/images/arrow.png" alt="emolog_arrow">
</li>
<li>
<p class="emolog-date">8月16日<p>
<!--相手のエモログの表示-->
<p class="emoji">&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;</p>
<img src="../static/images/arrow.png" alt="emolog_arrow">
</li>
<li>
<p class="emolog-date">8月15日<p>
<!--相手のエモログの表示-->
<p class="emoji">&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;&#x1f349;</p>
<img src="../static/images/arrow.png" alt="emolog_arrow">
</li>
</ul>
<ul th:each = "emolog : ${emologs}">
<!-- <div th:object="${emolog}">-->
<!-- <p class="emolog-date" th:text="*{create_at}"></p>-->
<p class="emolog-date" th:text="${emolog}"></p>
<a href="chat.html">
<!--相手のエモログの表示-->
<!-- <div class="emoji" ><p th:utext = "*{contents}"></p></div>-->
<div class="emoji" ><p th:utext = "*{emolog}"></p></div>
<img src="../static/images/arrow.png" alt="emolog_arrow">
</a>
</div>
</ul>
</div>

<!-- ナビゲーションバーを表示-->
Expand Down
Loading