-
Notifications
You must be signed in to change notification settings - Fork 7
Aedict3 new update not adjusted for new AnkiDroid API Enable/Disable feature #599
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@timrae: could you please provide some info about intended purpose of the setting which disables the new API in AnkiDroid? Thanks :) |
@mvysny |
@mvysny |
Thank you both @mvysny @timrae for coordinating with each other and providing us with two great apps. As for the timeline of happenings (because @timrae said that when he first tested Aedict with Anki it worked fine):
Obviously Aedict3 does not comply with steps 6-8 of the manual testing section, since as of the update it doesn't work with the disabled API, which is exactly my concern. Since I don't think many users actually know there is a forum, and even if they knew, they wouldn't use it (including my friends who use Aedict), I am not quite sure if waiting for user feedback of the a couple of people who actually use the forum is effective. I would like to ask if @mvysny is planning to make Aedict work again with the disabled API in Anki, so we can send cards as before these updates? Thank you very much for your help. |
I agree that Aedict would require a bit of work in handling multiple translations / readings / kanji. 行く is a pretty good example of an export that results in an unusable flashcard, although I think most words come out fine. The first word that I tried - 結婚 - for example looks perfect. Rather than referring to the work that we did as "useless", perhaps trying to think together ways that the new system could be improved would be more constructive... For example, is there a general pattern to the manual modifications that you make? Maybe some examples would be useful. IMHO the old intent based system itself was not really usable because you have to do copy, paste, and edit operations on every single note if you want to get decently formatted cards. Also, sending multiple notes at once was not possible at all. In my case I ended up adding a list of 23,000 pre-made cards to AnkiDroid collated from a few different sources which were all set to suspended, and when I hear a word in real life that I don't know (I live in Tokyo), I search for it in AnkiDroid instead of Aedict, and just enable the card. This worked pretty well in the beginning, but as you get better at Japanese the probability that the card isn't in your list gets exponentially higher, and it becomes frustrating have to search in both dictionaries, and especially having to make manual edits when it's not in AnkiDroid once you're used to a one click solution. Of course, the old intent based system should work if the user chooses to disable the API, and I'm sure @mvysny will bring Aedict in line with the manual testes, but the point I'm trying to make is that I'm sure we can work together to come up with a way to get the integration to work well for most use cases, and increase our efficiency at learning Japanese. |
Thank you very much for your explanation @timrae . Excuse my hard usage of that word, I didn't mean your work for this update is useless, just in combination with Aedict I did not see any benefit towards efficiency for my usage pattern. However, with other apps I am sure it is very efficient, or - as you explained - with other usage methods of Anki and Aedict, as e.g. your personal one. I also live in Tokyo, and I am past JLPT N1 level. I have created over 18,000 cards with Aedict in 6 months (9500 cards x 2) with my method, so I am quite an avid user I would say, that's why I might be a little frustrated.
As for input: Look up word in Aedict, klick on right upper corner, click on "Send as Flashcard", card comes up in Anki, take out the translations I don't need, SAVE.
I really don't want to talk down anyone's work here, quite on the contrary, I think what @mvysny @timrae have created is OUTRAGEOUSLY AWESOME and I have recommended Anki and Aedict to at least 15 of my friends so far. If it wouldn't have been for your apps my learning process and many of my friends' learning process would have been 1/20 of what it is now (I really mean that). THANK YOU I guess in the end it all comes down to different learning methods, as you outlined, mine and yours are very different. However, I also know many people who use "my manual learning method" and from another post in this forum I am sure that the manual disabled API input method is also very important for many users. Thank you again for you responsiveness and help in this matter. |
What if Aedict showed a dialog where you could select which (kanji, reading, translation / meaning, sentence) are exported? For everything except meaning it could default to only including the first hit, and if you tap on it you can select one or more extra / different ones. When exporting multiple cards this screen wouldn't be shown obviously. That way in most cases you could just tap on meaning, uncheck the ones that you don't want in a couple of clicks and you're done. |
Would this be for the enabled or disabled API? I think this is a very good idea, and I would have to just tick the desired translations, however, the full manual input should still be possible/ or a way to add other info or arrange the card before sending, because of this: e.g. 嫉妬 しっと jealousy, envy (word in Aedict) FRONT BACK In this case I entered manually に、する, someone Thank you |
Thank you guys for the discussion, I believe I gained at least some insight on which functionality has been removed by dropping the old API. If I understand correctly, you miss the old support for editing the card in Anki before actually adding it to a Deck. If this is correct, I may have a counter-proposal :) Instead of reintroducing the old API back, how about this: if only a single entry is to be exported, Aedict will show you a dialog with three edit boxes: Kanji, Reading, Meaning, and perhaps Examples, etc. In these boxes, the values which Aedict is going to export will be pre-filled. You can edit the text in any way you see fit - add new stuff, even completely clear the field. These new values will then be exported to Anki. So, for example you could edit the KANJI field from 嫉妬 to に 嫉妬 する and then quiz yourself only with Anki cards which contains Kanji+Reading at the Front. That is, Aedict would still export three cards for the entry, but you can of course pick which cards to quiz yourself. What do you think? Alternative is to add another card model, with simple front-back cards, pre-filled by Aedict with what you select. |
I think that's a good idea. Ideally I think there needs to be a way to pick and choose which kanji/readings/meanings/sentences are included without having to do manual editing (for example in the case of 行く above). Manually editing every card to remove all the obscure and unneeded kanji/readings/translations is very laborious. However, I urge you to implement these changes in addition to offering users the ability to send words from Aedict to other apps via a share intent. Sending text to other apps is a standard feature on Android apps these days. For example, highlight some highlight some text on Google Chrome and it will give you the option to copy to the clipboard or send to any app that supports receiving text (AnkiDroid being one of these). It's only a few lines of code to add: Intent shareIntent = ShareCompat.IntentBuilder.from(context)
.setType("text/plain")
.setText("Sunrise")
.setSubject("日の出")
.getIntent();
if (shareIntent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(shareIntent);
} |
I guess you'd probably want to show the same "Pick what to copy" dialog that you show when copying to the clipboard, and put the result of that in the |
Indeed, but that is precisely what @schilki has been doing and what he currently misses. You are right about the Intents though; I will revert the old behavior though (via the shareIntent), no problem. |
I think there are two issues:
I think the final implementation needs to address these two needs simultaneously. I'm envisaging something like this (although putting the labels above the EditTexts instead of to the left of them would probably make sense): Deck could maybe be a drop down selector / spinner. Kanji, Reading, Meaning, Example would all be EditTexts that are filled with the first entry by default, and the text can be edited arbitrarily. Tapping the + button would bring up a dialog where the user can select one or all of the alternatives, which will be appended to what is in the EditText. E.g. tapping the plus button next to kanji would show a list selector with the 4 entries: [All; 行く; 往く; 逝く] Choosing 往く from that list selector would then lead to the EditText containing "行く, 往く" |
By the way, an interesting statistic from the latest AnkiDroid poll: The survey only just started yesterday, so I expect we'll get a lot more responses over the next week. Considering there are > 1 million AnkiDroid users, I think it pays to get this working really well. Obviously it also adds SRS ability to your app for a fraction of the effort required to actually build SRS directly into your app. |
Hi, I also loved the old note creation dialog, I always edit my cards to include custom sentences and notes (usually the sentences where I first heard the word, or something interesting). I really want context (example sentence etc) in the flashcard and I think testing English to Japanese is generally useless, because there are so many Japanese words that could match a given English word. For many words I don't need/want to be able to recall the Japanese word on demand, just recognise it. In that sense, the old method was really good (except for a few words where there are dozens of meanings I'd have to manually remove) and the new method is very close to useless for me (sorry!) Obviously there are thousands of Aedict users with thousands of different usage patterns, but I'd like you to know that at least a few people's habits aren't compatible with the current system and really want the old method back! :) If I have understood this issue correctly, if AnkiDroid's API switch is turned off, then the new version of Aedict will restore the old card editing interface instead of reporting an error of 'Use AnkiDroid 2.5+ or higher'. If that's the case, thank you VERY MUCH! :D |
I should also add, not everybody cares about the formatting of cards. Simple text for both question/answer is fine with me (15,000 cards so far). It's not a deal-breaker for some people, I think. |
If the two points I mentioned above were improved, wouldn't it be even better than the old method? I think combining the good points from the "old" method and the new method is the way forward, instead of just asking for the old way back. |
Thank you Tim, indeed an image is worth a thousand words (I'll start attaching images myself, to better express myself). |
Yes, absolutely. The new dialog should only be shown when the new API is used. A word of warning though, the old FYI: AnkiDroid will use whatever is in the "subject" field as the front of the card, so you should probably put the kanji expression there irrespective of what the user chooses for the back. Most other apps will ignore this "subject" field anyway. |
Thank you guys for discussing this so avidly. I can assure you that this is an issue that concerns many people, because I think one of the key strengthes of Aedict was the import function to Anki so far. I am not sure if I got the whole conversation right between @mvysny and @timrae, however I would be very happy if whatever change you might work on now would bring back the possibility to fully edit cards manually as before, whem sending to Anki. |
Sorry clicked on the close button by accident. Exactly same order and format: FRONT BACK (Optionally add stuff like my own sample sentences, German words etc anywhere on the card of needed) And add this with 2 cards (NOT 3), just simply in the conventional way, once asking the English said, once the Japanese. Decks of course can also be chosen when sending, as before. This could be an option for the people who want to use the old method, as with the unabled API. As long as this is possible as I described I would be very content. And I know that updating and further making the app perfect is the main interest of @mvysny and @timrae , however, quite honestly the card adding function was absolutely perfect for me and I did not once think about a more efficient or better way to add new cards to Anki than this. So for me the function was already fully optimized without anymore potential to optimize. So whatever you intend to change from hereon after, if the above mentioned would be possible again that would be great. Thank you again for this great responsiveness and interaction with users! Great work!! |
Once Aedict creates card model with three cards, this can no longer be modified. So perhaps the best way is to simply somehow disable the unwanted card type in AnkiDroid? @timrae please is this possible, or what would you suggest? |
Yes, users can already customize the Aedict "note type" (AKA model) to do everything described in @schilki's post other than edit the fields before they are added to AnkiDroid. It is all described in the AnkiDroid / Anki Desktop manual. To delete the third card:
After this AnkiDroid will only generate two cards for each note added by Aedict. Which fields are shown in the cards can also be controlled from the same screen. The note type can be fully customized if you don't like the defaults. |
The interface itself is fine, that's what AnkiDroid 2.5 looks like. However the kanji should usually go into the first field. Did you read my comments #599 (comment) and #599 (comment) above? |
I have accidentally selected the flashcard format "English - front, Kanji+Reading back" ;) After I switched the format to Kanji+Reading / English, it works okay. |
Fixed in Aedict 3.39.3 |
What is fixed exactly? Could you email me a test version? On Thu, Dec 17, 2015 at 12:45 AM, Martin Vysny notifications@github.com
|
I have both returned the old export functionality, and implemented the new export dialog. I will send you the test build shortly, please test. |
Thank both of you for your hard work. May I ask @mvysny when you intend to release the new update? |
@schilki I have sent a hopefully final version to Tim for a review; I expect the update will be released tomorrow. Please wait a little longer :) |
Thank you so much! Manual modification works again perfectly with disabled API. Very happy! |
Disabling the API is not necessary anymore; you can use both methods Manual modification is possible when using the new API as well. You can The formatting in the new model is kind of crappy unfortunately, I hope
|
I see, very awesome that we can use the manual way as well as the semi-manual way now with enabled API. For me the app is perfect again! Thanks!!!! |
That was a necessary design decision in order to enable correct generation of furigana and for duplicate detection to work. Instead, you should enter whatever text you like into the "custom notes" field which are displayed beneath the kanji. Unfortunately the display size of the custom notes is tiny and poorly positioned, but I've sent @mvysny a better template to use, so I'm sure he'll get that fixed soon. |
By the way, when you say:
do you mean on the front of the card? One of the 3 cards that Aedict generates for each note (the |
Thank you very much @mvysny for all your help. As recommended I will post our conversation to the forum to discuss.
However I belief that this problem concerns Aedict 3 and not AnkiDroid. I am quite sure that Aedict 3 does not recognize the 2 sides of the new API Ankidroid feature (Untick or tick)
Why:
Now it is only possible to export cards from Aedict to Ankidroid if in Ankidroid's extended options the API is ticked on. If the API is ticked off and you want to send a card from Aedict, an error message occurs "Error: Please upgrade AnkiDroid to 2.5 or higher". Why? Because Aedict does only recognize if the API is ticked on, so the new method of direct sending of cards (eliminating the mid-step of modifying cards before creating card in Anki). However, as I mentioned before in my email, the makers of AnkiDroid on purpose included the function to UNTICK the API, so we can keep editing the cards (as before) when sending from Aedict, before saving them to our desired deck in Anki. This is also evident from this thread #596 where Anki's developer wrote the following: "You can disable the API under advanced settings in AnkiDroid, which should result in Aedict choosing the old method of the sending the data to AnkiDroid. Note however that will disable it for all apps, which is probably fine now, but will likely prevent you from doing some cool stuff in the future."
With Aedict's new update however, Aedict completely adjusted to the direct input - aka API-ticked-on function - (the so called "new method") without regarding AnkiDroids extended option to untick direct input - the so called "old method" in the quotation above. Meaning that if you disable the API in AnkiDroid (meaning that you use the "old method"), Aedict does actually NOT choose the old method of sending the data to AnkiDroid (as the AnkiDroid developers thought), instead the error message "Error: Please upgrade Anki Droid to 2.5 or higher" appears, because Aedict was only updated for the new AnkiDroid API-enabled version, disregarding the disabled version (old method). I hope my explanation is understandable.
I read this post: #596
which is the same problem but not fixed until Aedict recognizes the unticked API function of AnkiDroid.
I am not an expert but almost 100% sure that this is the problem, and needs to be fixed on Aedict's side. I am very sorry, I also don't know anything about programming but I am an avid user of your app Martin, so I thought I could give you this in sight from an "every day user perspective". From what I read from the other post "Dinges666" had actually the same problem but it wasn't clearly identified. Because the update of Aedict yesterday, was only regarding the enabled API feature of Anki, and disregarded the feature in AnkiDroid to actually use the "old input method" aka disabled API. Dinges666 also wrote that his concern was he couldn't change the cards anymore before input into Anki, which he could have easily fixed by himself by just unticking the API in Anki. However, as of today with new Aedict update, this is not possible anymore.
His point was also true that if API is ticked, decks cannot be chosen, that's why the problem needs a fix in Aedict for enabled and disabled API in Anki:
So what I think would fix the problem in Aedict is the following (according to 2 versions of AnkiDroid API ENABLED/DISABLED)
AnkiDroid API ENABLED:
As already done with the new Aedict update. Include a function that lets the user choose into which deck in Anki the card should be send (alrdy done). Then the full bulk of info from Aedict will be directly send to Anki.
Ankidroid API DISABLED: (In Aedict same as the old version, I used this until yesterday without any problems)
Same as old version, 3 card formats, choose, send over to Anki --> before saving the card in Anki, it will be possible to modify the card in Anki and choose the deck.
I am very sorry, and I don't to be pushy or anything, but I think it is easier to just provide straight forward feedback, and also hope to contribute to further perfection your app @mvysny . I am also not a programmer, and if this is to hard to program for each case (Ankidroid API Enabled/Disabled), I completely understand. However, I would be happy if you read my post throughly, because I also took a lot of time to figure out the problem and to write this.
Thank you so much
Alexander
For everyone please see the log below, from our private email conversation:
ALEXANDER (First email):
There has been a huge mistake in the last update. Export to Anki: Ask for deck when exporting to Anki was in this update. I think Mr. Martin you created this based on the new Anki update where it directly send the cards (without manually being able to modify the card) to Anki. However, Anki already included a feature in options, which lets you (just as before) modify the cards before sending and also change the decks under "Extended Options, Tick/Untick Ankidroid API for directinput". But now you also did an update that let's you change decks when exporting, which leads to a double clash of the same function. That's why please please put Aedict3 back to the previous version (since we can chose which deck in the Anki app API func, you don't need to change anything abt. Anki export). You also took out the option when exporting "Export" option to modify the cards, furigana, Kanji, English order and to modify the text. This was the single most crucial function for me as I always modify the cards before input. This app is absolutely the best and I recommend it to everyone of my friend. Thank you so much!
MARTIN:
Thank you very much for your kind words. You can disable the dialog in Settings / Export / AnkiDroid Deck Name and set it to e.g. "Aedict 3", to disable the annoying dialog. Please let me know if this works for you.
ALEXANDER:
Thank you very much for your quick reply. I really appreciate that you take into consideration the words of your users. Also your app is without doubt the best Japanese dictionary. Thank you so much.
Regarding the issue:
I tried what you said. So basically the problem is Anki made an update last week, where they included the option "API direct input from third party apps". However, this option can be ticked or unticked, which means
if ticked: direct input from aedict without possibility to modify cards
if unticked: same as before, can modify the card decks and also card content etc.before sending to Anki (Just as before).
Now with the new Aeadict3 update it became impossible to edit the cards before sending and to chose whether kanji, furigana, english etc should be included, in which order etc. Also I think the option of chosing a deck in aedict is not necessary and has no benefit since the option can already be en- or disabled in Anki API direct input function. Also, if in both apps the function is on (Anki API ticked) the error message "update Anki..." Occurs. So I thought you might have overseen the API option in Anki (which disables or enables the direct input feature), and thats why you created this option in Aedict (im not sure though what you intended Sir). The option is under Extended options in Anki "拡張機能"AnkiDroidAPIを有効にする。
So basically I would be very happy if the old function of Export in settings would come back in Aedict3, where i could chose input method (kanji/engl, kanji, furigana/engl etc) and manually change the content of each card, and also chose the deck before sending it to Anki.
I hope you can understand my question Mr. Martin and I would be extremely happy if you can help me. Your app has really changed my study progress so much and cant tell you how thankful I am.
Best regards
Alexander
MARTIN:
Hi Alexander,
thank you for your kind mail, I'm really flattered :) Thanks!
Thanks to you, I now understand what the "API direct input from third
party apps" does. Basically, AnkiDroid provides two APIs: the old one,
which only allows sending one flashcard at a time, and the new one,
which supports mass-send (the direct input mode). The old one will
eventually go away (I think that AnkiDroid's Tim told me that), so I
believe there is no benefit in keeping the support for the old one.
So, I believe that we should look forward and instead of keeping
support for both APIs, let us focus on the new API and let us try to fix
what's broken there.
Now, in the new API every entry is exported three times, in three
different card types: "Kanji > Kana+English", "Kanji+Kana > English",
"English > Japanese". Just open AnkiDroid, Card Browser and you will see
they're there. I do not say this is perfect (I find it unintuitive), but
I was told that this is the way AnkiDroid works. I agree this needs some
mind bending, but it may be worth the time. Please also read here:
#596
Also I have added an entry related to AnkiDroid to FAQ:
http://aedict.eu/faq.html
Please let me know if there are any further issues.
Best regards,
Martin
ALEXANDER:
Thanks Martin for your reply again.
However the point I am trying to make is actually about the impossibilty to manually editing cards before sending them to Anki since the aedict update yesterday.
Normally people use the Aedict as follows I would argue:
Let's say I have 3 decks: one Kanji, JLPT words and one Business words
So I add words anyways one by one after I look up a new word, and after modifying what should be on the card.
I dont see any use in making direct inputs from aedict. This is not a process that asks for optimization (acceleration) I think, however much more important to being able to modify the cards before sending.
The Anki API changed nothing about this input method because it could be enabled or disabled under extended options. So I think the Anki developers made this function for other apps where direct input might be useful and speeds up the process, however they left the option for the old input method for apps like aedict. For Aedict it is not useful because it doesnt let us modify cards anymore, why it was a great feature from Anki to let us untick the API and use it as old.
What changed the possibilty of modifying cards was the latest update from aedict yesterday. Now I dont see any way to modify cards before sending them to anki anymore, which leads me to look up a word on aedict and then manually make a card in Anki in the respective deck for I every word I look up now.
I read the thread you sent me, however I think the guy there didnt know about the untick function in Anki to unable and disable the API and therefore had trouble because he also wanted to manual modify cards and chose the deck.
So as of now if I could still use the Aedict version before the update yesterday, i could still manually modify cards. But now I can not only not modify them, but I can not even input cards as direct input, always an error message will appear "download Anki 2.5".
I hope you understand what I mean. Basically I just think it is crucial to let us send card by card and modify its content by ourselves before sending to Anki, because every person wants different things on his card to remember them easily and not standardized entries. Anki lets us do this (even after the update), but the new aedict update prohibts us from doing this.
MARTIN:
Hi Alexander,
the real difference between old and new API is that in old API, two
strings were transferred, FRONT and BACK, and that's it. You could not
extract any data from that and you couldn't format the entries
differently once exported. In the new API, Aedict sends all the data
separately, and then it sends a predefined set of three card models. You
can add your own cards directly in AnkiDroid, which will show fields in
any format you see fit. For example, the definition of the card which
shows "Kanji" as front, and full info as back:
FRONT:
BACK:
{{Meaning}}
Example Sentences
{{GrammarShort}}
You can however create your own card, with your own FRONT and BACK
definitions.
So that you can add your own card models to entries already exported and
present in your AnkiDroid. Please, if you have further questions
regarding on how to add custom cards to AnkiDroid, please ask on the
AnkiDroid forums. Because this is really a question on how to add
different card formats to AnkiDroid. You can copy-paste our entire
conversation to the AnkiDroid forum, to provide context for others. I do
not have capacity to answer more questions directly, but I can answer
them at forums:
https://groups.google.com/forum/#!forum/anki-android
The text was updated successfully, but these errors were encountered: