@@ -61,6 +61,159 @@ setTimeout(() => {
6161 }
6262} , 2000 ) ;
6363}
64+ if ( nowHost === 'weibo.com' ) {
65+ console . log ( '----zhimin spider inject' ) ;
66+
67+ function parseStyleUrl ( str ) {
68+ const regex = / u r l \( \" ( .* ) \" \) / gm;
69+
70+ // Alternative syntax using RegExp constructor
71+ // const regex = new RegExp('url\\(\\"(.*)\\"\\)', 'gm')
72+ let m ;
73+ const save = { } ;
74+
75+ while ( ( m = regex . exec ( str ) ) !== null ) {
76+ // This is necessary to avoid infinite loops with zero-width matches
77+ if ( m . index === regex . lastIndex ) {
78+ regex . lastIndex ++ ;
79+ }
80+
81+ // The result can be accessed through the `m`-variable.
82+ m . forEach ( ( match , groupIndex ) => {
83+ save [ groupIndex ] = match ;
84+ } ) ;
85+ }
86+ return save ;
87+ }
88+
89+ setInterval ( ( ) => {
90+ const saveData = [ ] ;
91+ const content = document . getElementsByClassName ( 'wbpro-scroller-item' ) ;
92+ for ( let i = 0 ; i < content . length ; i += 1 ) {
93+ const oneItem = content [ i ] ;
94+ let videoUrl = '' ;
95+ let videoCover = '' ;
96+
97+ let repost = false ;
98+ // 转发的内容 正文+视频+封面
99+ const originalContent = oneItem . getElementsByClassName ( 'wbpro-feed-reText' ) ;
100+ for ( let iD = 0 ; iD < originalContent . length ; iD += 1 ) {
101+ repost = true ;
102+ const videoContainer = originalContent [ iD ] . nextSibling ;
103+ const videoInfo = videoContainer . getElementsByTagName ( 'video' ) ;
104+ if ( videoInfo . length > 0 ) {
105+ videoUrl = videoInfo [ 0 ] . getAttribute ( 'src' ) ;
106+ }
107+ const coverInfo = videoContainer . getElementsByClassName ( 'wbpv-poster' ) ;
108+ if ( coverInfo . length > 0 ) {
109+ videoCover = coverInfo [ 0 ] . getAttribute ( 'style' ) ;
110+ }
111+ }
112+ let userName = '' ;
113+ for ( let oC = 0 ; oC < originalContent . length ; oC += 1 ) {
114+ if ( oC === 0 ) {
115+ userName = originalContent [ oC ] . innerText ;
116+ }
117+ }
118+
119+ // 原始的内容 正文+视频+封面
120+ const userContent = oneItem . getElementsByClassName ( 'wbpro-feed-ogText' ) ;
121+ let uContent = '' ;
122+ for ( let uC = 0 ; uC < userContent . length ; uC += 1 ) {
123+ if ( uC === 0 ) {
124+ uContent = userContent [ uC ] . innerText ;
125+ }
126+ if ( ! repost ) {
127+ const videoContainer = userContent [ uC ] . nextSibling ;
128+ if ( videoContainer ) {
129+ const videoInfo = videoContainer . getElementsByTagName ( 'video' ) ;
130+ if ( videoInfo . length > 0 ) {
131+ videoUrl = videoInfo [ 0 ] . getAttribute ( 'src' ) ;
132+ }
133+ const coverInfo = videoContainer . getElementsByClassName ( 'wbpv-poster' ) ;
134+ if ( coverInfo . length > 0 ) {
135+ videoCover = coverInfo [ 0 ] . getAttribute ( 'style' ) ;
136+ }
137+ }
138+ }
139+ }
140+
141+ // 获取文本链接
142+ let linkUrl = '' ;
143+ const contentId = oneItem . getElementsByClassName ( 'woo-box-justifyBetween' ) ;
144+ for ( let iC = 0 ; iC < contentId . length ; iC += 1 ) {
145+ if ( iC === 0 ) {
146+ if ( contentId [ iC ] . getElementsByTagName ( 'a' ) . length > 0 ) {
147+ linkUrl = contentId [ iC ] . getElementsByTagName ( 'a' ) [ 0 ] . getAttribute ( 'href' ) ;
148+ }
149+ }
150+ }
151+ if ( linkUrl === '' ) {
152+ const clink = oneItem . getElementsByClassName ( 'woo-box-justifyCenter' ) ;
153+ for ( let iC = 0 ; iC < clink . length ; iC += 1 ) {
154+ if ( iC === 1 ) {
155+ if ( clink [ iC ] . getElementsByTagName ( 'a' ) . length > 0 ) {
156+ linkUrl = clink [ iC ] . getElementsByTagName ( 'a' ) [ 0 ] . getAttribute ( 'href' ) ;
157+ }
158+ }
159+ }
160+ }
161+
162+ // 获取图片或者live photo视频
163+ const imageList = [ ] ;
164+ const videoList = [ ] ;
165+ const orignalPic = oneItem . getElementsByClassName ( 'woo-picture-slot' ) ;
166+ for ( let p = 0 ; p < orignalPic . length ; p += 1 ) {
167+ const oneSmallPic = orignalPic [ p ] . getElementsByTagName ( 'img' ) ;
168+ if ( oneSmallPic . length > 0 ) {
169+ for ( let sP = 0 ; sP < oneSmallPic . length ; sP += 1 ) {
170+ imageList . push ( oneSmallPic [ sP ] . getAttribute ( 'src' ) ) ;
171+ }
172+ }
173+ const vides = orignalPic [ p ] . getElementsByTagName ( 'video' ) ;
174+ if ( vides . length > 0 ) {
175+ for ( let sP = 0 ; sP < vides . length ; sP += 1 ) {
176+ videoList . push ( vides [ sP ] . getAttribute ( 'src' ) ) ;
177+ }
178+ }
179+ }
180+ const exp = userName . split ( '\n' ) ;
181+ let uName = '' ;
182+ let ucContent = '' ;
183+ if ( exp . length >= 2 ) {
184+ [ uName , ucContent ] = exp ;
185+ } else {
186+ ucContent = userName ;
187+ }
188+ let videoCoverUrl = '' ;
189+ if ( videoCover !== '' ) {
190+ const urlArr = parseStyleUrl ( videoCover ) ;
191+ if ( urlArr [ 1 ] !== undefined ) {
192+ videoCoverUrl = urlArr [ 1 ] ;
193+ }
194+ }
195+ saveData . push ( {
196+ link : linkUrl ,
197+ content : uContent ,
198+ post : {
199+ userName : uName ,
200+ content : ucContent ,
201+ } ,
202+ videoInfo : {
203+ videoUrl,
204+ videoCoverUrl,
205+ } ,
206+ images : imageList ,
207+ liveVideo : videoList ,
208+ } ) ;
209+ }
210+ chrome . runtime . sendMessage ( { list : saveData } , ( data ) => {
211+ // if (data.code !== undefined && data.code !== 200) {
212+ console . log ( data ) ;
213+ // }
214+ } ) ;
215+ } , 5000 ) ;
216+ }
64217if ( nowHost === 'www.baidu.com' ) {
65218setTimeout ( ( ) => {
66219 // 右侧百度热榜
0 commit comments