Blame view

insight/url.py 5.34 KB
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
1
2
3
4
  # -*- coding: utf-8 -*-
  
  import requests
  from base62 import Base62
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
5
  import json
24d172161   Noah   r.piki 에서 자동으로 클릭...
6
  import re
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
7
8
  
  class Url() :
9a37ba221   Noah   fr 부서진 링크도 수집
9
      server = "http://10.128.0.20/"
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
10
11
      def url2dic(self, links):
          data = []
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
12
          if (True):
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
13
              for link in links:
b11b0e38b   Noah   fr 부서진 링크도 수집
14
15
                  link = link.replace('
  '," ").replace('\r'," ").replace('\'',"")
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
16
                  print link
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
17
18
                  if len(link) < 5:
                      continue
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
19
20
21
22
23
24
25
26
27
28
29
                  if self.isdeep(link) :
  
                      data.append({
                           'bitly_url' : "",
                           'origin_url': str(link),
                           'bitly_click': "0",
                           'piki_cid' : str(self.Url2Cid(link)),
                           'rpiki_click' : "0"
                      })
  
                  elif self.isrpiki(link) :
9a37ba221   Noah   fr 부서진 링크도 수집
30
                      print link
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
31
32
33
34
                      data.append({
                           'bitly_url' : "",
                           'origin_url': str(link),
                           'bitly_click': "0",
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
35
36
                           'piki_cid' : str(self.Url2Cid(link)),
                           'rpiki_click' : str(self.rpiki2click(link))
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
37
38
39
                      })
  
                  elif self.isbitly(link):
24d172161   Noah   r.piki 에서 자동으로 클릭...
40
                      try:
b11b0e38b   Noah   fr 부서진 링크도 수집
41
                          link = "http://bit.ly/" + re.compile('[^./a-zA-Z0-9]+').sub("",link.split("//bit.ly/")[1].split(" ")[0])
24d172161   Noah   r.piki 에서 자동으로 클릭...
42
43
44
  
                          link_meta = link + "+"
                          txt = requests.get(link_meta).text
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
45

24d172161   Noah   r.piki 에서 자동으로 클릭...
46
47
                          source_tag_op = "\"long_url\": \""
                          source_tag_cl = "\""
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
48

24d172161   Noah   r.piki 에서 자동으로 클릭...
49
50
                          clicks_tag_op = "\"user_clicks\": "
                          clicks_tag_cl = ","
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
51

24d172161   Noah   r.piki 에서 자동으로 클릭...
52
53
54
55
56
57
58
                          source_bgn = txt.find(source_tag_op) + len(source_tag_op)
                          source_end = source_bgn + txt[source_bgn:(source_bgn + 500)].find(source_tag_cl)
                          clicks_bgn = txt.find(clicks_tag_op) + len(clicks_tag_op)
                          clicks_end = clicks_bgn + txt[clicks_bgn:(clicks_bgn + 50)].find(clicks_tag_cl)
  
                      except:
                          data.append({'bitly_url' : "",'origin_url': "",'bitly_click': "0",'piki_cid' : "0",'rpiki_click' : "0"})
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
59
60
61
62
63
  
                      try:
                          piki_url = str(txt[source_bgn:source_end]).split("cid=")[1].split("&")[0]
                      except:
                          piki_url = str(0)
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
64
                      print self.rpiki2click(txt[source_bgn:source_end])
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
65
66
67
68
69
70
71
72
73
74
                      if self.isrpiki(txt[source_bgn:source_end]) :
                          data.append({
                           'bitly_url' : str(link),
                           'origin_url': str(txt[source_bgn:source_end]),
                           'bitly_click': str(txt[clicks_bgn:clicks_end]),
                           'piki_cid' : str(Base62().decode(piki_url)),
                           'rpiki_click' : str(self.rpiki2click(txt[source_bgn:source_end]))
                          })
  
                      else:
077e29190   Noah   r.piki 에서 자동으로 클릭...
75
                          #print link
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
76
77
78
79
80
81
82
                          data.append({
                           'bitly_url' : str(link),
                           'origin_url': str(txt[source_bgn:source_end]),
                           'bitly_click': str(txt[clicks_bgn:clicks_end]),
                           'piki_cid' : str(Base62().decode(piki_url)),
                           'rpiki_click' : "0"
                          })
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
83
84
  
          if len(data) == 0:
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
85
              data.append({'bitly_url' : "",'origin_url': "",'bitly_click': "0",'piki_cid' : "0",'rpiki_click' : "0"})
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
86

cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
87
          return data
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
88
      def Url2Cid(self,url):
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
89

47237816c   Noah   fr 부서진 링크도 수집
90
91
92
93
          try:
              if self.isrpiki(url):
                  return Base62().decode(url.split("cid=")[1].split("&")[0])
              elif self.isdeep(url):
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
94
                  return requests.get(url).text.split("http://www.pikicast.com/share/")[1].split('"')[0]
47237816c   Noah   fr 부서진 링크도 수집
95
96
          except :
              return "0"
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
97

9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
98
      def rpiki2click(self,url):
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
99
          print url
9a37ba221   Noah   fr 부서진 링크도 수집
100
          api = self.server + "contents_RPIKI_api/"
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
101
102
  
          try:
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
103
              fr = url.split("fr=")[1].split("&")[0]
9a37ba221   Noah   fr 부서진 링크도 수집
104
105
          except:
              fr = ""
9a37ba221   Noah   fr 부서진 링크도 수집
106
107
          try:
              cid = url.split("cid=")[1].split("&")[0]
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
108
109
110
          except:
              cid = ""
          try:
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
111
              m = url.split("m=")[1].split("&")[0]
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
112
113
114
          except:
              m = ""
          try:
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
115
              c = url.split("c=")[1].split("&")[0]
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
116
117
118
          except:
              c =""
          try:
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
119
              v = url.split("v=")[1].split("&")[0]
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
120
121
122
          except:
              v = ""
          try:
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
123
              t = url.split("t=")[1].split("&")[0]
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
124
125
126
127
          except:
              t = ""
  
          try:
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
128
              data = json.loads(requests.get(api + cid + '_' + fr + '_' + m + '_' + c + '_' + v + '_' + t).text)
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
129

9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
130
131
132
              ret = data['data']['real']
              if ret == "":
                  ret = "0"
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
133
134
          except Exception as e:
              print e
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
135
136
137
              ret = "0"
  
          return ret
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
138
139
  
      def getText2bitly(self,text):
c3f034c75   Noah   단일 컨텐츠를 수동 반영 가능
140
141
142
143
          try:
              return "http://bit.ly/" + text.split("http://bit.ly/")[1].split(" ")[0]
          except:
              return ""
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
144
145
146
147
148
149
150
151
152
  
      def isdeep(self, url):
  
          if url.find("//fb.me/") > 0 :
              return True
          else:
              return False
  
      def isrpiki(self, url):
cd3f2b98c   Noah   링크 본문 댓글 포함 모든 ur...
153
154
155
156
157
158
159
160
161
162
163
          if url.find("//r.pikicast.com/") > 0 :
              return True
          else:
              return False
  
      def isbitly(self, url):
  
          if url.find("//bit.ly/") > 0 :
              return True
          else:
              return False
9a4ce3987   Noah   r.piki 에서 자동으로 클릭...
164