@@ -131,7 +131,8 @@ export class Recorder {
131
131
// TODO: Fix this the next time the file is edited.
132
132
// eslint-disable-next-line @typescript-eslint/no-explicit-any
133
133
logDetails : Record < string , any > = { } ;
134
- skipping = false ;
134
+
135
+ pageFinished = false ;
135
136
136
137
gzip = true ;
137
138
@@ -170,6 +171,7 @@ export class Recorder {
170
171
frameIdToExecId : Map < string , number > ;
171
172
} ) {
172
173
this . frameIdToExecId = frameIdToExecId ;
174
+ this . pageFinished = false ;
173
175
174
176
// Fetch
175
177
cdp . on ( "Fetch.requestPaused" , ( params ) => {
@@ -435,23 +437,21 @@ export class Recorder {
435
437
) {
436
438
this . removeReqResp ( requestId ) ;
437
439
return this . serializeToWARC ( reqresp ) ;
440
+ } else if ( url && reqresp . requestHeaders && type === "Media" ) {
441
+ this . removeReqResp ( requestId ) ;
442
+ logger . warn (
443
+ "Attempt direct fetch of failed request" ,
444
+ { url, ...this . logDetails } ,
445
+ "recorder" ,
446
+ ) ;
447
+ const fetcher = new AsyncFetcher ( {
448
+ reqresp,
449
+ recorder : this ,
450
+ networkId : requestId ,
451
+ } ) ;
452
+ void this . fetcherQ . add ( ( ) => fetcher . load ( ) ) ;
453
+ return ;
438
454
}
439
- // disable for now, driven by fetch from behaviors likely
440
- // else if (url && reqresp.requestHeaders && type === "Media") {
441
- // this.removeReqResp(requestId);
442
- // logger.warn(
443
- // "Attempt direct fetch of failed request",
444
- // { url, ...this.logDetails },
445
- // "recorder",
446
- // );
447
- // const fetcher = new AsyncFetcher({
448
- // reqresp,
449
- // recorder: this,
450
- // networkId: requestId,
451
- // });
452
- // void this.fetcherQ.add(() => fetcher.load());
453
- // return;
454
- // }
455
455
break ;
456
456
457
457
default :
@@ -819,7 +819,7 @@ export class Recorder {
819
819
this . pendingRequests = new Map ( ) ;
820
820
this . skipIds = new Set ( ) ;
821
821
this . skipRangeUrls = new Map < string , number > ( ) ;
822
- this . skipping = false ;
822
+ this . pageFinished = false ;
823
823
this . pageInfo = {
824
824
pageid,
825
825
urls : { } ,
@@ -889,6 +889,7 @@ export class Recorder {
889
889
let pending = [ ] ;
890
890
while (
891
891
numPending &&
892
+ ! this . pageFinished &&
892
893
! this . crawler . interrupted &&
893
894
! this . crawler . postCrawling
894
895
) {
@@ -938,6 +939,8 @@ export class Recorder {
938
939
async onClosePage ( ) {
939
940
// Any page-specific handling before page is closed.
940
941
this . frameIdToExecId = null ;
942
+
943
+ this . pageFinished = true ;
941
944
}
942
945
943
946
async onDone ( timeout : number ) {
@@ -1164,10 +1167,6 @@ export class Recorder {
1164
1167
logNetwork ( "Skipping ignored id" , { requestId } ) ;
1165
1168
return null ;
1166
1169
}
1167
- if ( this . skipping ) {
1168
- //logger.debug("Skipping request, page already finished", this.logDetails, "recorder");
1169
- return null ;
1170
- }
1171
1170
const reqresp = new RequestResponseInfo ( requestId ) ;
1172
1171
this . pendingRequests . set ( requestId , reqresp ) ;
1173
1172
return reqresp ;
0 commit comments