Browse Source

python project add

tobby48 5 years ago
parent
commit
17b1dd9837

+ 67
- 104
src/main/java/kr/co/swh/lecture/opensource/twitter/TwitterBasic.java View File

@@ -1,104 +1,67 @@
1
-package kr.co.swh.lecture.opensource.twitter; 
2
-
3
-import java.util.ArrayList;
4
-import java.util.List;
5
-
6
-import twitter4j.Query;
7
-import twitter4j.QueryResult;
8
-import twitter4j.Status;
9
-import twitter4j.Twitter;
10
-import twitter4j.TwitterException;
11
-import twitter4j.TwitterFactory;
12
-import twitter4j.conf.ConfigurationBuilder;
13
-
14
-/**
15
- * <pre>
16
- * kr.co.swh.lecture.opensource.twitter 
17
- * TwitterBasic.java
18
- *
19
- * 설명 :	https://github.com/Twitter4J/Twitter4J
20
- * </pre>
21
- * 
22
- * @since : 2019. 12. 13.
23
- * @author : tobby48
24
- * @version : v1.0
25
- */
26
-public class TwitterBasic {
27
-
28
-	private Twitter getInstance() {
29
-		//	twitter 계정이 있다면 앱을 만들어서 등록
30
-		//	그렇지 않을 시에는 데이터베이스에 있는 정보 등록
31
-		String consumerKey = "xx";
32
-        String consumerSecret = "xx";
33
-        String acessToken = "xx";
34
-        String acessTokenSecret = "xx";
35
-
36
-        ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
37
-        configurationBuilder.setDebugEnabled(true)
38
-                .setOAuthConsumerKey(consumerKey)
39
-                .setOAuthConsumerSecret(consumerSecret)
40
-                .setOAuthAccessToken(acessToken)
41
-                .setOAuthAccessTokenSecret(acessTokenSecret);
42
-        TwitterFactory tf = new TwitterFactory(configurationBuilder.build());
43
-        Twitter twitter = tf.getInstance();
44
-        return twitter;
45
-	}
46
-	
47
-	public List<Status> getTwitterContents(Query query, int totalCount){
48
-		List<Status> tweetList = null;
49
-	    if(totalCount < 100){
50
-	        query.setCount(totalCount);
51
-	        tweetList = this.getTweetBlock(query);
52
-	    }else{
53
-	    	//	Quiz.
54
-	    	// 	따로 만들어야 함. 트위터는 한번에 100개씩 제한
55
-	    	//	Status 클래스의 객체 내 id값을 통해 가능
56
-//	    	query.setCount(100);    //트위터 API 에서 한번에 가져올 수 있는 양이 100개
57
-//	    	long lowestStatusId = Long.MAX_VALUE;
58
-//	    	List<Status> statuses = this.getTweetBlock(query);
59
-//			for (Status status : statuses) {
60
-//				lowestStatusId = Math.min(status.getId(), lowestStatusId);
61
-//				result.add(status);
62
-//			}
63
-//			query.setMaxId(lowestStatusId - 1);
64
-	    }
65
-		return tweetList;
66
-	}
67
-	
68
-	private List<Status> getTweetBlock(Query query){
69
-        if(query.getMaxId() != 0){
70
-            query.setMaxId(query.getMaxId());
71
-        }
72
-        List<Status> result = null;
73
-        QueryResult queryResult = null;
74
-        try{
75
-        	Twitter twitter = getInstance();
76
-            queryResult = twitter.search(query);
77
-        }catch (TwitterException e){
78
-            e.printStackTrace();
79
-        }
80
-
81
-        if(queryResult != null){
82
-            result = new ArrayList<>();
83
-            for (Status status : queryResult.getTweets()) {
84
-                result.add(status);
85
-            }
86
-        }
87
-        return result;
88
-    }
89
-
90
-	public static void main(String[] args) {
91
-		// TODO Auto-generated method stub
92
-		TwitterBasic twitter = new TwitterBasic();
93
-        Query query = new Query();
94
-        query.setLang("ko");
95
-        query.setQuery("손흥민");
96
-        query.setSince("2019-09-28");
97
-        
98
-        List<Status> result = twitter.getTwitterContents(query, 90);
99
-        for(Status s : result) {
100
-        	System.out.println(s);
101
-        	//	VO 클래스로 객체형태로 변환하여 다양하게 활용
102
-        }
103
-	}
104
-}
1
+package kr.co.swh.lecture.opensource.twitter; 
2
+
3
+import java.util.ArrayList;
4
+
5
+import twitter4j.Query;
6
+import twitter4j.QueryResult;
7
+import twitter4j.Status;
8
+import twitter4j.Twitter;
9
+import twitter4j.TwitterException;
10
+import twitter4j.TwitterFactory;
11
+import twitter4j.conf.ConfigurationBuilder;
12
+
13
+/**
14
+ * <pre>
15
+ * kr.co.swh.lecture.opensource.twitter 
16
+ * TwitterBasic.java
17
+ *
18
+ * 설명 :	https://github.com/Twitter4J/Twitter4J
19
+ * </pre>
20
+ * 
21
+ * @since : 2019. 12. 13.
22
+ * @author : tobby48
23
+ * @version : v1.0
24
+ */
25
+public class TwitterBasic {
26
+
27
+	public static void main(String[] args) {
28
+		// TODO Auto-generated method stub
29
+		String consumerKey = "xx";
30
+        String consumerSecret = "xx";
31
+        String acessToken = "xx";
32
+        String acessTokenSecret = "xx";
33
+
34
+        ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
35
+        configurationBuilder.setDebugEnabled(true)
36
+                .setOAuthConsumerKey(consumerKey)
37
+                .setOAuthConsumerSecret(consumerSecret)
38
+                .setOAuthAccessToken(acessToken)
39
+                .setOAuthAccessTokenSecret(acessTokenSecret);
40
+        TwitterFactory tf = new TwitterFactory(configurationBuilder.build());
41
+        Twitter twitter = tf.getInstance();
42
+        
43
+        
44
+        Query query = new Query();
45
+        query.setLang("ko");
46
+        query.setQuery("손흥민");
47
+        query.setSince("2019-09-28");
48
+        
49
+        QueryResult queryResult = null;
50
+		try {
51
+			queryResult = twitter.search(query);
52
+		} catch (TwitterException e) {
53
+			// TODO Auto-generated catch block
54
+			e.printStackTrace();
55
+		}
56
+        
57
+        ArrayList<Status> result = new ArrayList<>();
58
+        for (Status status : queryResult.getTweets()) {
59
+            result.add(status);
60
+        }
61
+        
62
+        for(Status s : result) {
63
+        	System.out.println(s);
64
+        	//	VO 클래스로 객체형태로 변환하여 다양하게 활용
65
+        }
66
+	}
67
+}

+ 104
- 67
src/main/java/kr/co/swh/lecture/opensource/twitter/TwitterBasic2.java View File

@@ -1,67 +1,104 @@
1
-package kr.co.swh.lecture.opensource.twitter; 
2
-
3
-import java.util.ArrayList;
4
-
5
-import twitter4j.Query;
6
-import twitter4j.QueryResult;
7
-import twitter4j.Status;
8
-import twitter4j.Twitter;
9
-import twitter4j.TwitterException;
10
-import twitter4j.TwitterFactory;
11
-import twitter4j.conf.ConfigurationBuilder;
12
-
13
-/**
14
- * <pre>
15
- * kr.co.swh.lecture.opensource.twitter 
16
- * TwitterBasic.java
17
- *
18
- * 설명 :	https://github.com/Twitter4J/Twitter4J
19
- * </pre>
20
- * 
21
- * @since : 2019. 12. 13.
22
- * @author : tobby48
23
- * @version : v1.0
24
- */
25
-public class TwitterBasic2 {
26
-
27
-	public static void main(String[] args) {
28
-		// TODO Auto-generated method stub
29
-		String consumerKey = "xx";
30
-        String consumerSecret = "xx";
31
-        String acessToken = "xx";
32
-        String acessTokenSecret = "xx";
33
-
34
-        ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
35
-        configurationBuilder.setDebugEnabled(true)
36
-                .setOAuthConsumerKey(consumerKey)
37
-                .setOAuthConsumerSecret(consumerSecret)
38
-                .setOAuthAccessToken(acessToken)
39
-                .setOAuthAccessTokenSecret(acessTokenSecret);
40
-        TwitterFactory tf = new TwitterFactory(configurationBuilder.build());
41
-        Twitter twitter = tf.getInstance();
42
-        
43
-        
44
-        Query query = new Query();
45
-        query.setLang("ko");
46
-        query.setQuery("손흥민");
47
-        query.setSince("2019-09-28");
48
-        
49
-        QueryResult queryResult = null;
50
-		try {
51
-			queryResult = twitter.search(query);
52
-		} catch (TwitterException e) {
53
-			// TODO Auto-generated catch block
54
-			e.printStackTrace();
55
-		}
56
-        
57
-        ArrayList<Status> result = new ArrayList<>();
58
-        for (Status status : queryResult.getTweets()) {
59
-            result.add(status);
60
-        }
61
-        
62
-        for(Status s : result) {
63
-        	System.out.println(s);
64
-        	//	VO 클래스로 객체형태로 변환하여 다양하게 활용
65
-        }
66
-	}
67
-}
1
+package kr.co.swh.lecture.opensource.twitter; 
2
+
3
+import java.util.ArrayList;
4
+import java.util.List;
5
+
6
+import twitter4j.Query;
7
+import twitter4j.QueryResult;
8
+import twitter4j.Status;
9
+import twitter4j.Twitter;
10
+import twitter4j.TwitterException;
11
+import twitter4j.TwitterFactory;
12
+import twitter4j.conf.ConfigurationBuilder;
13
+
14
+/**
15
+ * <pre>
16
+ * kr.co.swh.lecture.opensource.twitter 
17
+ * TwitterBasic2.java
18
+ *
19
+ * 설명 :	https://github.com/Twitter4J/Twitter4J
20
+ * </pre>
21
+ * 
22
+ * @since : 2019. 12. 13.
23
+ * @author : tobby48
24
+ * @version : v1.0
25
+ */
26
+public class TwitterBasic2 {
27
+
28
+	private Twitter getInstance() {
29
+		//	twitter 계정이 있다면 앱을 만들어서 등록
30
+		//	그렇지 않을 시에는 데이터베이스에 있는 정보 등록
31
+		String consumerKey = "xx";
32
+        String consumerSecret = "xx";
33
+        String acessToken = "xx";
34
+        String acessTokenSecret = "xx";
35
+
36
+        ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
37
+        configurationBuilder.setDebugEnabled(true)
38
+                .setOAuthConsumerKey(consumerKey)
39
+                .setOAuthConsumerSecret(consumerSecret)
40
+                .setOAuthAccessToken(acessToken)
41
+                .setOAuthAccessTokenSecret(acessTokenSecret);
42
+        TwitterFactory tf = new TwitterFactory(configurationBuilder.build());
43
+        Twitter twitter = tf.getInstance();
44
+        return twitter;
45
+	}
46
+	
47
+	public List<Status> getTwitterContents(Query query, int totalCount){
48
+		List<Status> tweetList = null;
49
+	    if(totalCount < 100){
50
+	        query.setCount(totalCount);
51
+	        tweetList = this.getTweetBlock(query);
52
+	    }else{
53
+	    	//	Quiz.
54
+	    	// 	따로 만들어야 함. 트위터는 한번에 100개씩 제한
55
+	    	//	Status 클래스의 객체 내 id값을 통해 가능
56
+//	    	query.setCount(100);    //트위터 API 에서 한번에 가져올 수 있는 양이 100개
57
+//	    	long lowestStatusId = Long.MAX_VALUE;
58
+//	    	List<Status> statuses = this.getTweetBlock(query);
59
+//			for (Status status : statuses) {
60
+//				lowestStatusId = Math.min(status.getId(), lowestStatusId);
61
+//				result.add(status);
62
+//			}
63
+//			query.setMaxId(lowestStatusId - 1);
64
+	    }
65
+		return tweetList;
66
+	}
67
+	
68
+	private List<Status> getTweetBlock(Query query){
69
+        if(query.getMaxId() != 0){
70
+            query.setMaxId(query.getMaxId());
71
+        }
72
+        List<Status> result = null;
73
+        QueryResult queryResult = null;
74
+        try{
75
+        	Twitter twitter = getInstance();
76
+            queryResult = twitter.search(query);
77
+        }catch (TwitterException e){
78
+            e.printStackTrace();
79
+        }
80
+
81
+        if(queryResult != null){
82
+            result = new ArrayList<>();
83
+            for (Status status : queryResult.getTweets()) {
84
+                result.add(status);
85
+            }
86
+        }
87
+        return result;
88
+    }
89
+
90
+	public static void main(String[] args) {
91
+		// TODO Auto-generated method stub
92
+		TwitterBasic2 twitter = new TwitterBasic2();
93
+        Query query = new Query();
94
+        query.setLang("ko");
95
+        query.setQuery("손흥민");
96
+        query.setSince("2019-09-28");
97
+        
98
+        List<Status> result = twitter.getTwitterContents(query, 90);
99
+        for(Status s : result) {
100
+        	System.out.println(s);
101
+        	//	VO 클래스로 객체형태로 변환하여 다양하게 활용
102
+        }
103
+	}
104
+}

+ 4
- 4
src/main/python/kr/co/swh/lecture/opensource/project/naver-blog-nlp-ranking-d3.py View File

@@ -52,15 +52,15 @@ import requests
52 52
 from bs4 import BeautifulSoup
53 53
 
54 54
 app = Flask(__name__)
55
-app.config['JSON_AS_ASCII'] = False
55
+# app.config['JSON_AS_ASCII'] = False
56 56
 countList = ""
57 57
 
58 58
 @app.route("/")
59 59
 def view():
60
-    return render_template("naver-blog-nlp-ranking-d3.html", value=countList)
60
+    return render_template("naver-blog-nlp-ranking-d3.html", values=countList)
61 61
 
62 62
 if __name__ == "__main__":
63 63
     countResultList = nlp_process()
64
-    print(str(countResultList).replace("'", ""))
65
-    countList = str(countResultList).replace("'", "")
64
+    print(countResultList)
65
+    countList = countResultList;
66 66
     app.run(host="127.0.0.1", port="8080")

+ 14
- 5
src/main/python/kr/co/swh/lecture/opensource/project/templates/naver-blog-nlp-ranking-d3.html View File

@@ -1,13 +1,22 @@
1 1
 <html>
2
+	<!-- Body tag is where we will append our SVG and SVG objects-->
3
+	<body>
4
+	</body>
2 5
     <head>
3 6
         <title>블로그 검색어 Word Cloud</title>
4 7
         <script src="https://d3js.org/d3.v3.min.js"></script>
5 8
 		<script src="https://rawgit.com/jasondavies/d3-cloud/master/build/d3.layout.cloud.js" type="text/JavaScript"></script>
6 9
 		<script type="text/JavaScript">
7
-			var datas = {{ value }};
8
-			
10
+			var datasToDraw = new Array();
11
+			{% for value in values %}
12
+				var person = {}; //또는 var person = new Object();
13
+				person.text = '{{ value['text'] }}';
14
+				person.size = {{ value['size'] }} * 5;
15
+	        	datasToDraw.push(person);
16
+	        {% endfor %}
17
+
9 18
 			// Next you need to use the layout script to calculate the placement, rotation and size of each word:
10
-			
19
+
11 20
 			var width = 960;
12 21
 			var height = 500;
13 22
 			var fill = d3.scale.category20();
@@ -34,7 +43,7 @@
34 43
 			    .on("end", drawSkillCloud)
35 44
 			    .start();
36 45
 			}
37
-			showCloud(datas);
46
+			showCloud(datasToDraw);
38 47
 			
39 48
 			// Finally implement `drawSkillCloud`, which performs the D3 drawing:
40 49
 			
@@ -68,7 +77,7 @@
68 77
 			
69 78
 			// set the viewbox to content bounding box (zooming in on the content, effectively trimming whitespace)
70 79
 			setInterval(function() {
71
-			  showCloud(skillsToDraw);
80
+			  showCloud(datasToDraw);
72 81
 			}, 2000)
73 82
 		</script>
74 83
     </head>