@@ -29,7 +29,7 @@ import termPrettyUtils from './termPretty.js';
2929
3030async function downloadMeta ( workId : number ) {
3131 const spinner = ! argvUtils . getArgv ( ) [ 'no-show-progress' ]
32- ? ora ( { text : 'Downloading work metadata ...' , color : 'cyan' , spinner : 'dotsCircle' } ) . start ( )
32+ ? ora ( { text : 'Downloading metadata from DB ...' , color : 'cyan' , spinner : 'dotsCircle' } ) . start ( )
3333 : undefined ;
3434 const workApiRsp : {
3535 info : TypesApiEndpoint . RspWorkInfoSanitized ;
@@ -65,26 +65,56 @@ async function downloadMeta(workId: number) {
6565 }
6666 }
6767 } ) ( ) ;
68+ spinner ? ( spinner . text = 'Downloading metadata from DLsite server ...' ) : undefined ;
69+ const workOriginApiRsp = await ( async ( ) => {
70+ try {
71+ return await apiUtils . apiDlsite . work . info ( workApiRsp . info . source_id ) ;
72+ } catch ( error ) {
73+ spinner ?. stop ( ) ;
74+ if ( error instanceof HTTPError ) {
75+ if ( error . response . status === 404 ) {
76+ logger . error ( `Work not found. Please check the ID and try again. ID: ${ workId } ` ) ;
77+ await exitUtils . exit ( 1 , null , false ) ;
78+ } else if ( error . response . status === 525 ) {
79+ logger . error ( `Failed to download metadata: 525 Cloudflare SSL handshake failed` ) ;
80+ await exitUtils . exit ( 1 , null , false ) ;
81+ }
82+ logger . error ( `Failed to download metadata: ${ error . response . status } ${ error . response . statusText } ` ) ;
83+ await exitUtils . exit ( 1 , null , false ) ;
84+ throw error ;
85+ } else if ( error instanceof Error ) {
86+ logger . error ( `Failed to download metadata: ${ error . message } ` ) ;
87+ await exitUtils . exit ( 1 , null , false ) ;
88+ throw error ;
89+ } else {
90+ throw new Error ( 'An unknown error occurred while downloading metadata' ) ;
91+ }
92+ }
93+ } ) ( ) ;
6894 const coverImgBuffer : Record < 'main' | 'thumb' | 'icon' , ArrayBuffer | null > = {
6995 main : null ,
7096 thumb : null ,
7197 icon : null ,
7298 } ;
99+ spinner ? ( spinner . text = 'Downloading cover image ...' ) : undefined ;
73100 for ( const coverImgType of [ 'main' , 'thumb' , 'icon' ] as const ) {
74101 try {
75102 coverImgBuffer [ coverImgType ] = await apiUtils . api . media . coverImage ( workId , coverImgType ) ;
76103 } catch ( error ) {
77104 if ( error instanceof HTTPError ) {
78105 if ( error . response . status !== 404 ) {
106+ spinner ?. stop ( ) ;
79107 logger . error ( `Failed to download metadata: ${ error . response . status } ${ error . response . statusText } ` ) ;
80108 await exitUtils . exit ( 1 , null , false ) ;
81109 throw error ;
82110 }
83111 } else if ( error instanceof Error ) {
112+ spinner ?. stop ( ) ;
84113 logger . error ( `Failed to download metadata: ${ error . message } ` ) ;
85114 await exitUtils . exit ( 1 , null , false ) ;
86115 throw error ;
87116 } else {
117+ spinner ?. stop ( ) ;
88118 throw new Error ( 'An unknown error occurred while downloading metadata' ) ;
89119 }
90120 }
@@ -93,7 +123,9 @@ async function downloadMeta(workId: number) {
93123 spinner ?. stop ( ) ;
94124 logger . info ( 'Work metadata downloaded' ) ;
95125 return {
96- ...workApiRsp ,
126+ info : workApiRsp . info ,
127+ infoOrig : JSON . stringify ( workOriginApiRsp ) === '[]' ? null : workOriginApiRsp ,
128+ fileEntry : workApiRsp . fileEntry ,
97129 coverImgBuffer,
98130 } ;
99131}
@@ -156,6 +188,7 @@ async function filterFileEntry(fileEntries: TypesApiFiles.FilesystemEntryTransfo
156188async function downloadWork (
157189 workApiRsp : {
158190 info : TypesApiEndpoint . RspWorkInfoSanitized ;
191+ infoOrig : any ;
159192 fileEntry : {
160193 raw : TypesApiFiles . FilesystemEntry [ ] ;
161194 transformed : TypesApiFiles . FilesystemEntryTransformed [ ] ;
@@ -403,6 +436,7 @@ async function downloadWork(
403436 path . join ( tempOutputDirPath , 'meta.yaml' ) ,
404437 YAML . stringify ( {
405438 info : workApiRsp . info ,
439+ infoOrig : workApiRsp . infoOrig ,
406440 coverImage : Object . fromEntries ( Object . entries ( workApiRsp . coverImgBuffer ) . map ( ( e ) => [ e [ 0 ] , e [ 1 ] !== null ] ) ) ,
407441 fileEntry : ( ( ) => {
408442 return workApiRsp . fileEntry . transformed
0 commit comments