@@ -167,10 +167,12 @@ const convertBlogList = async ({
167167 : _ . compact (
168168 _ . map ( pic_infos , ( picInfo , picKey ) => {
169169 const url = picInfo ?. large ?. url || undefined
170+ const largest = picInfo ?. largest ?. url || undefined
170171 if ( ! url ) return undefined
171172 return {
172173 picName : matchImageOrVideoFromUrl ( url ) || `${ picKey } .jpg` ,
173174 url,
175+ largest,
174176 }
175177 } )
176178 )
@@ -179,9 +181,11 @@ const convertBlogList = async ({
179181 const { type, data } = item || { }
180182 if ( type == `pic` ) {
181183 const url = data ?. large ?. url || undefined
184+ const largest = data ?. largest ?. url || undefined
182185 picShows . push ( {
183186 picName : matchImageOrVideoFromUrl ( url ) || `${ data ?. pic_id } .jpg` ,
184187 url,
188+ largest,
185189 } )
186190 }
187191 if ( type == `video` ) {
@@ -208,7 +212,8 @@ const convertBlogList = async ({
208212 weiboCount : _count ,
209213 weiboPicCount : _count_pic_count ,
210214 } )
211- const picBlob = await fetchToGetImageBlobByXHR ( { imageUrl : picShow ?. url } )
215+ // const picBlob = await fetchToGetImageBlobByXHR({ imageUrl: picShow?.url })
216+ const picBlob = await getImageRetry ( { imageUrl : picShow ?. url , picName : picShow . picName } )
212217 if ( picBlob ) {
213218 imageFolder ?. file ( picShow . picName , picBlob )
214219 }
@@ -222,10 +227,12 @@ const convertBlogList = async ({
222227 : _ . compact (
223228 _ . map ( retweeted_status . pic_infos , ( picInfo , picKey ) => {
224229 const url = picInfo ?. large ?. url || undefined
230+ const largest = picInfo ?. largest ?. url || undefined
225231 if ( ! url ) return undefined
226232 return {
227233 picName : matchImageOrVideoFromUrl ( url ) || `${ picKey } .jpg` ,
228234 url,
235+ largest,
229236 }
230237 } )
231238 )
@@ -234,9 +241,11 @@ const convertBlogList = async ({
234241 const { type, data } = item || { }
235242 if ( type == `pic` ) {
236243 const url = data ?. large ?. url || undefined
244+ const largest = data ?. largest ?. url || undefined
237245 retweeted_status_picShows . push ( {
238246 picName : matchImageOrVideoFromUrl ( url ) || `${ data ?. pic_id } .jpg` ,
239247 url,
248+ largest,
240249 } )
241250 }
242251 if ( type == `video` ) {
@@ -256,7 +265,8 @@ const convertBlogList = async ({
256265 weiboCount : _count ,
257266 weiboPicCount : _count_pic_count ,
258267 } )
259- const picBlob = await fetchToGetImageBlobByXHR ( { imageUrl : retweetPicShow ?. url } )
268+ // const picBlob = await fetchToGetImageBlobByXHR({ imageUrl: retweetPicShow?.url })
269+ const picBlob = await getImageRetry ( { imageUrl : retweetPicShow ?. url , picName : retweetPicShow . picName } )
260270 if ( picBlob ) {
261271 imageFolder ?. file ( retweetPicShow . picName , picBlob )
262272 }
@@ -440,3 +450,22 @@ const getFileStringFromExtension = async (): Promise<Blob> => {
440450export const matchImageOrVideoFromUrl = ( url : string ) => {
441451 return url ?. match ( / \/ ( [ \d a - z A - Z ] + \. [ a - z 0 - 9 ] { 3 , 4 } ) ( \? | $ ) / ) ?. [ 1 ] || ''
442452}
453+
454+ // 新增补偿下载
455+ const getImageRetry = async ( { imageUrl, picName } : { imageUrl : string ; picName ?: string } ) => {
456+ const picBlob = await fetchToGetImageBlobByXHR ( { imageUrl : imageUrl } )
457+ if ( picBlob ) {
458+ return picBlob
459+ }
460+
461+ if ( picName ) {
462+ const randomImageCDN = Math . floor ( Math . random ( ) * 3 ) + 1
463+ const retryUrl = `https://wx${ randomImageCDN } .sinaimg.cn/large/${ picName } `
464+ const retryPicBlob = await fetchToGetImageBlobByXHR ( { imageUrl : retryUrl } )
465+ if ( retryPicBlob ) {
466+ return retryPicBlob
467+ }
468+ }
469+
470+ return null
471+ }
0 commit comments