Commit Graph

273 Commits

Author SHA1 Message Date
Karsten Lehmann
9fde78ec7e
fix: Link to 2.1 addon folder in Readme 2020-06-08 23:04:05 +02:00
flan
41205c0b92 Add test for renaming media
This test fails on current master; might or might not be related to #49
2020-02-03 17:20:37 +01:00
flan
3c440621d2 Prevent infinite loop in client when first changed usn != lastUsn
Anki expects the last change in the list to have the server's lastUsn.

Reference: cca3fcb241/anki/sync.py (L720)
2020-01-26 20:47:14 +01:00
gzz
2bfccf7fa4 offset param 2020-01-17 16:30:43 +08:00
flan
3b8fe9e7f3 Use max(x) instead of ORDER BY x DESC LIMIT 1
Doesn't use non-standard syntax, clearer intent, reportedly faster
2020-01-04 05:51:33 +01:00
flan
e8850f2a5a Migrate old media DB if present 2020-01-04 05:51:33 +01:00
flan
e8f274ee84 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.
2020-01-04 05:51:33 +01:00
flan
10f47611bf Store media usn per-file
Since anki.media.MediaManager does not store per-file usn (as it's
not really needed for anything in the client), this requires us to
drop it and implement a custom media manager.
2020-01-04 05:51:33 +01:00
flan
ac1920d078 Make SyncMediaHandler not inherit anki.sync.MediaSyncer
All endpoints are implemented in the child class now, so there's
no need to use any code from the parent class.
2020-01-04 05:51:33 +01:00
flan
c4730b1596 Add test for #44 2020-01-04 05:51:33 +01:00
flan
c07fe0e65c Print version on startup
The version is determined from either the contents of _version.py
(expected to be present in release tarballs) or the output of
`git describe --always`.
2020-01-04 05:39:24 +01:00
flan
aaf7e8b5e8 Update manager examples in config 2020-01-04 05:01:39 +01:00
flan
316e553681 Make comment for SyncCollectionHandler.removed() less confusing 2020-01-03 03:03:21 +01:00
flan
7f551f47f7 Remove unused argument to logger.error() 2020-01-03 03:02:42 +01:00
flan
7ef3d4f3fa Fix full sync on Windows
From <https://docs.python.org/3.7/library/os.html#os.rename>:
> On Windows, if dst already exists, OSError will be raised even if
> it is a file.
...
> If you want cross-platform overwriting of the destination, use
> replace().

Thanks to kerry liu (https://github.com/hqzxjczx) for reporting this.

Fixes #32.
2019-04-16 19:57:24 +02:00
flan
b9a1203491 Don't create DBs during schema check if they don't exist 2019-03-16 15:24:46 +01:00
flan
02fecc4e0a Clarify wording (development headers)
Should make #29 less likely to happen
2019-03-14 01:13:52 +01:00
flan
7fe7b97475 Update anki-bundled to 2.1.11 2019-03-14 01:09:02 +01:00
flan
d8a0853479 Make migrate_user_tables.py executable 2019-03-14 00:48:47 +01:00
flan
9986266b07 Update table of contents 2019-03-14 00:48:13 +01:00
flan
5ad14b01b4 Notify the user about DB migrations 2019-03-14 00:45:29 +01:00
Anton Melser
4652642bcd Add user -> username column name migration script 2019-03-09 14:08:18 +08:00
Anton Melser
6c82bad882 Add commented examples to conf file and update Readme.md 2019-03-09 14:08:16 +08:00
Anton Melser
fa89b0e0a2 Load the CollectionWrapper from a factory method
This allows a class implementing CollectionWrapper's interface to be
added from config
2019-03-09 14:05:15 +08:00
Anton Melser
9ee9697582 Move the upload/download sqlite3 file logic to a manager
Also add a factory method so the manager can be controlled via config
2019-03-09 14:05:15 +08:00
Anton Melser
50cc6a12d9 Use factory method for session_manager
Also add some abstraction over the SQL to allow for different SQL
dialects
2019-03-09 14:05:15 +08:00
Anton Melser
ea0cbc669b Use factory method for user_manager
Also add some abstraction over the SQL to allow for different SQL
dialects
2019-03-09 14:05:12 +08:00
flan
bfeaeae2e5 Credit dsnopek 2019-03-08 21:54:54 +01:00
tsudoko
e3e362707a
Add table of contents to README 2019-03-08 20:46:42 +00:00
flan
7b408bdf5b Don't log very long strings unless debugging 2019-03-08 17:00:59 +01:00
flan
4fe378adce Add username field to CollectionWrapper 2019-03-08 14:24:58 +01:00
flan
5051144124 Include request parameters in log messages 2019-03-08 14:24:58 +01:00
flan
f5b6cf464d Include time in log messages 2019-03-08 14:24:58 +01:00
flan
fe635b317f Use logging module for HTTP request logging too 2019-03-08 14:24:58 +01:00
flan
47cf75d8d6 Log all ankisyncd events under ankisyncd.* 2019-03-08 14:24:58 +01:00
flan
4214fc3da0 Apply custom server settings per-profile 2019-03-08 14:22:47 +01:00
Anton Melser
75fecf6e6f Add support for setting/overriding config from envvars
This is practical for environments like docker/kubernetes
2019-03-08 15:11:32 +08:00
flan
35f89af98e Update pyaudio instructions 2019-03-07 21:51:11 +01:00
flan
3266cc4282 Update anki-bundled to 2.1.10 2019-03-07 21:41:38 +01:00
flan
91b022eda6 Add AnkiDroid setup instructions
Thanks @luoliyan

Source: https://github.com/tsudoko/anki-sync-server/pull/22#issuecomment-461012296
2019-03-07 05:50:42 +01:00
flan
970664e6a9 Revert "Simplify version suffix patch"
95ccbfdd36 broke it

This reverts commit 61b4582364.
2019-02-19 00:52:43 +01:00
flan
c85f50460a Fix up default config
whoops
2019-02-05 00:49:27 +01:00
flan
b1157bac25 Add link to Docker instructions
Fixes #16
2019-02-05 00:35:03 +01:00
flan
bb1dba1b99 Update addon folder
It depends on the platform anyway, and the directory in the README
was outdated anyway (57c8e43327).
2018-12-24 17:19:15 +01:00
flan
85aac784db Add enabled check back
Accidentally removed it in 360b2d08ed.
2018-12-24 16:47:26 +01:00
flan
537c4daa94 Make potential future instances of #8 easier to debug
With hostNum prepended to the address, the client won't even be
able to connect and will return an error message with the invalid
address.

Example:
    requests.exceptions.InvalidSchema: No connection adapters were found for '6http://localhost:27701/sync/meta'
2018-12-24 16:38:10 +01:00
flan
61b4582364 Simplify version suffix patch 2018-12-24 16:31:36 +01:00
flan
360b2d08ed Make hostNum empty when changing sync server
Should fix an error encountered when the user used AnkiWeb in the
past and receives a JSON decode error because an unrecognized
endpoint (/[somenumber]sync instead of /sync) doesn't return what
the client expects.

Closes #10, fixes #8.
2018-12-24 16:28:34 +01:00
flan
32a81dc028 Make the addon modify anki.sync.SYNC_BASE 2018-12-24 15:50:16 +01:00
flan
00ec46eab3 Clarify what the supported version range applies to 2018-12-17 16:58:09 +01:00