1
1
import json
2
2
import os
3
- from math import ceil
4
- from typing import List , Dict , Any , Union , Tuple
5
- import json
3
+ from typing import List , Dict , Any
6
4
from urllib .request import Request
7
- from urllib import request , parse , error
5
+ from urllib import request , parse
8
6
from http .client import HTTPResponse
9
7
10
8
@@ -70,29 +68,33 @@ def serialize_record(record: Dict[str, Any]) -> Dict[str, Any]:
70
68
71
69
new = record .get ('dynamodb' , {}).get ('NewImage' )
72
70
title = new .get ('title' , {}).get ('S' , '' )
71
+ new_iine = int (new .get ('iine' , {}).get ('N' , 0 ))
72
+
73
73
return {
74
74
'ids' : ids ,
75
75
'title' : title ,
76
+ 'new_iine' : new_iine ,
76
77
'past_iine' : past_iine
77
78
}
78
79
79
80
80
- def serialize_response_name (response : Response , num : int , title : str ) -> Dict [str , Any ]:
81
+ def serialize_response_name (response : Response , new_size : int , num : int , title : str ) -> Dict [str , Any ]:
81
82
"""serialize iine data of Qiita API v2
82
83
:param response:
83
84
:return:
84
85
"""
85
- size = len ( response . body ) - num
86
+ size = new_size - num
86
87
if size <= 0 :
87
88
users : List [str ] = []
88
-
89
- new_iine = response .body [:size ]
90
- users = [
91
- resp .get ('user' , {}).get ('id' ) for resp in new_iine
92
- ]
89
+ else :
90
+ new_iine = response .body [:size ]
91
+ users = [
92
+ resp .get ('user' , {}).get ('id' ) for resp in new_iine
93
+ ]
93
94
return {
94
95
'title' : title ,
95
- 'users' : users
96
+ 'users' : users ,
97
+ 'size' : size
96
98
}
97
99
98
100
@@ -104,11 +106,13 @@ def get_new_iine(item: Dict[str, Any], token: str) -> Dict[str, Any]:
104
106
headers = {'Authorization' : 'Bearer {}' .format (token )}
105
107
ids = item .get ('ids' , '' )
106
108
past_iine = item .get ('past_iine' , 0 )
109
+ new_iine = item .get ('new_iine' , 0 )
107
110
url = f'https://qiita.com/api/v2/items/{ ids } /likes'
108
111
109
112
response = req_get (url , headers = headers )
110
113
title : str = item .get ('title' , '' )
111
- resp = serialize_response_name (response , past_iine , title )
114
+
115
+ resp = serialize_response_name (response , new_iine , past_iine , title )
112
116
return resp
113
117
114
118
@@ -120,7 +124,8 @@ def deserialize_response_name(response: Dict[str, Any], max_length=20) -> str:
120
124
names = ", " .join (response .get ('users' , []))
121
125
title = response .get ('title' , '' )
122
126
title = f"{ title } " if len (title ) <= max_length else f"{ title [:max_length ]} ..."
123
- return f"\n { names } が「{ title } 」にいいねしました。"
127
+ size = response .get ('size' , 0 )
128
+ return f"\n いいねが{ size } 回押されました。\n { names } が「{ title } 」にいいねしました。"
124
129
125
130
126
131
def send_notification (message : str , token : str ):
0 commit comments