@@ -70,13 +70,14 @@ const handleAnnounce = async (req, res) => {
7070 const response = bencode . encode ( {
7171 'failure reason' : `Announce denied: Ratio is below minimum threshold ${ process . env . SQ_MINIMUM_RATIO } .` ,
7272 peers : [ ] ,
73+ peers6 : [ ] ,
7374 } )
7475 res . send ( response )
7576 return
7677 }
7778
7879 const uploaded = Number ( params . uploaded )
79- const downloaded = Number ( params . downloaded )
80+ const downloaded = params . event === 'started' ? 0 : Number ( params . downloaded )
8081
8182 const prevProgressRecord = await Progress . findOne ( {
8283 userId : user . _id ,
@@ -85,11 +86,11 @@ const handleAnnounce = async (req, res) => {
8586
8687 const alreadyUploadedSession = prevProgressRecord ?. uploaded ?. session ?? 0
8788 const uploadDeltaSession =
88- uploaded > alreadyUploadedSession ? uploaded - alreadyUploadedSession : 0
89+ uploaded >= alreadyUploadedSession ? uploaded - alreadyUploadedSession : 0
8990
9091 const alreadyDownloadedSession = prevProgressRecord ?. downloaded ?. session ?? 0
9192 const downloadDeltaSession =
92- downloaded > alreadyDownloadedSession
93+ downloaded >= alreadyDownloadedSession
9394 ? downloaded - alreadyDownloadedSession
9495 : 0
9596
@@ -131,80 +132,48 @@ const handleAnnounce = async (req, res) => {
131132 downloadDeltaSession,
132133 } )
133134
134- if ( uploadDeltaSession === 0 ) {
135- await Progress . findOneAndUpdate (
136- { userId : user . _id , infoHash } ,
137- {
138- $set : {
139- userId : user . _id ,
140- infoHash,
141- uploaded : {
142- session : 0 ,
143- total : prevProgressRecord ?. uploaded ?. total ?? 0 ,
144- } ,
145- left : Number ( params . left ) ,
146- } ,
147- } ,
148- { upsert : true }
149- )
150- } else {
151- await Progress . findOneAndUpdate (
152- { userId : user . _id , infoHash } ,
153- {
154- $set : {
155- userId : user . _id ,
156- infoHash,
157- uploaded : {
158- session : uploaded ,
159- total :
160- ( prevProgressRecord ?. uploaded ?. total ?? 0 ) + uploadDeltaSession ,
161- } ,
162- left : Number ( params . left ) ,
135+ await Progress . findOneAndUpdate (
136+ { userId : user . _id , infoHash } ,
137+ {
138+ $set : {
139+ userId : user . _id ,
140+ infoHash,
141+ uploaded : {
142+ session : uploaded ,
143+ total :
144+ ( prevProgressRecord ?. uploaded ?. total ?? 0 ) + uploadDeltaSession ,
163145 } ,
146+ left : Number ( params . left ) ,
164147 } ,
165- { upsert : true }
166- )
167- }
148+ } ,
149+ { upsert : true }
150+ )
168151
169- if ( downloadDeltaSession === 0 ) {
170- await Progress . findOneAndUpdate (
171- { userId : user . _id , infoHash } ,
172- {
173- $set : {
174- userId : user . _id ,
175- infoHash,
176- downloaded : {
177- session : 0 ,
178- total : prevProgressRecord ?. downloaded ?. total ?? 0 ,
179- } ,
180- left : Number ( params . left ) ,
181- } ,
182- } ,
183- { upsert : true }
184- )
185- } else {
186- await Progress . findOneAndUpdate (
187- { userId : user . _id , infoHash } ,
188- {
189- $set : {
190- userId : user . _id ,
191- infoHash,
192- downloaded : {
193- session :
194- torrent . freeleech || process . env . SQ_SITE_WIDE_FREELEECH === true
195- ? prevProgressRecord ?. downloaded ?. session ?? 0
196- : downloaded ,
197- total :
198- torrent . freeleech || process . env . SQ_SITE_WIDE_FREELEECH === true
199- ? prevProgressRecord ?. downloaded ?. total ?? 0
200- : ( prevProgressRecord ?. downloaded ?. total ?? 0 ) +
201- downloadDeltaSession ,
202- } ,
203- left : Number ( params . left ) ,
152+ await Progress . findOneAndUpdate (
153+ { userId : user . _id , infoHash } ,
154+ {
155+ $set : {
156+ userId : user . _id ,
157+ infoHash,
158+ downloaded : {
159+ session :
160+ torrent . freeleech || process . env . SQ_SITE_WIDE_FREELEECH === true
161+ ? prevProgressRecord ?. downloaded ?. session ?? 0
162+ : downloaded ,
163+ total :
164+ torrent . freeleech || process . env . SQ_SITE_WIDE_FREELEECH === true
165+ ? prevProgressRecord ?. downloaded ?. total ?? 0
166+ : ( prevProgressRecord ?. downloaded ?. total ?? 0 ) +
167+ downloadDeltaSession ,
204168 } ,
169+ left : Number ( params . left ) ,
205170 } ,
206- { upsert : true }
207- )
171+ } ,
172+ { upsert : true }
173+ )
174+
175+ if ( params . event === 'completed' ) {
176+ await Torrent . findOneAndUpdate ( { infoHash } , { $inc : { downloads : 1 } } )
208177 }
209178}
210179
0 commit comments