Fix long media sync times on AnkiDroid
Based on PR #44 by Johannes Schirm <https://github.com/Marth68>. The code is pretty much the same, but with usn used instead of mtime for determining which media files have changed since last sync. Relevant excerpt from #44: > The server was always sending metadata for all files in the > collection as a response to the mediaChanges operation. Because > AnkiDroid then calculates checksums for all these files (just to > notice that they actually haven't changed), it took larger > collections very long to sync after every media change. With this > fix, only the number of files indicated by usn - lastUsn (and > mtime) are considered for each sync. Fixes #26, closes #44.
This commit is contained in:
		
							parent
							
								
									10f47611bf
								
							
						
					
					
						commit
						e8f274ee84
					
				@ -318,11 +318,11 @@ class SyncMediaHandler:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def mediaChanges(self, lastUsn):
 | 
					    def mediaChanges(self, lastUsn):
 | 
				
			||||||
        result = []
 | 
					        result = []
 | 
				
			||||||
        usn = self.col.media.lastUsn()
 | 
					        server_lastUsn = self.col.media.lastUsn()
 | 
				
			||||||
        fname = csum = None
 | 
					        fname = csum = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if lastUsn < usn or lastUsn == 0:
 | 
					        if lastUsn < server_lastUsn or lastUsn == 0:
 | 
				
			||||||
            for fname,usn,csum, in self.col.media.db.execute("select fname,usn,csum from media"):
 | 
					            for fname,usn,csum, in self.col.media.db.execute("select fname,usn,csum from media order by usn desc limit ?", server_lastUsn - lastUsn):
 | 
				
			||||||
                result.append([fname, usn, csum])
 | 
					                result.append([fname, usn, csum])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return {'data': result, 'err': ''}
 | 
					        return {'data': result, 'err': ''}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user