GithubHelp home page GithubHelp logo

banool / auslan_dictionary Goto Github PK

View Code? Open in Web Editor NEW
13.0 13.0 3.0 53.32 MB

Code for the app, scripts, and site for Auslan Dictionary

Home Page: https://auslandictionary.org

License: GNU General Public License v3.0

Swift 4.32% Objective-C 0.01% Dart 27.52% HTML 0.88% Ruby 0.97% Shell 1.48% Python 8.33% CSS 24.59% JavaScript 4.38% SCSS 17.90% CMake 3.21% C++ 6.17% C 0.23%

auslan_dictionary's People

Contributors

banool avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

auslan_dictionary's Issues

Add definitions

They're there in some weird semi structured semi dynamic format, it's just a matter of teasing the information out and displaying it.

Revision doesn't like certain words in certain regions

I ran into an edge case where the revision section doesn't load, resulting in just a grey screen.
The case I found was:

  • The word "how" in my favourites
  • Additional sign regions: Southern and VIC

If I remove "how" from my favourites then set the region to one or the other and add it back, it works fine, but when I pick both then come back to the revision tab, it doesn't load.

Hopefully it's not too arduous to replicate and pin down.

Fix landscape view

Currently in landscape view the video just totally clips off the bottom. I imagine the solution is to constrain the width of the videos, leaving a gap on the left and right.

Proxy server ability

wont connect on device behind proxy server. Can proxy server configuration be added?

Add GK support

For the flashcards, it'd be neat to have it look at the raw github repo (like it does for the data update) to see whether to enable the flashcards feature or not. Since it'll check on rebuild (aka all the time), it'd probably be the best experience to have the data be memoized with a timeout, so at worst it checks like every 15 minutes. Another option would be to just check once on start, probably simpler that way. It should fallback to a hardcoded default if the check fails.

Slower playback speed

It would be good to play back a video slower - like you can on signbank's website.

Use API directly

Currently the way we get the content for the app is like this:

  1. I run a script that scrapes Auslan Signbank and builds up a JSON map of word -> video links (and some more information).
  2. This gets bundled with the app.
  3. At runtime the app loads the JSON and uses the video links to request the video.

It would be much better if there was an API for Auslan Signbank instead so I could just do /videos?word={word} or something similar.

I have tried to contact the creators of Auslan Signbank via their feedback form but they haven't responded to me so far. I'm not sure how else to contact them. Perhaps I could contact one of the organizations involved in creating it. I think they'd love the app and would want to help.

Add flow for reporting issue with data / something else

Users somtimes leave sub 5 star reviews because of issues with the data. This isn't within my control, so to help address this I could add a "give feedback" flow to the app that asks if it has to do with the data or the app itself. If it's the data, I'll direct them to Auslan Signbank (todo: check their site for their recommended flow). If it's the app, it'll just direct to email me.

Improve related words

I see two bugs:

  1. Look at the second sign here: https://www.auslan.org.au/dictionary/words/beach-2.html. The keyword "surf" is missing in the app, despite it being present on the website. I suspect this is an issue with the scraper assuming the first entry in the keyword list will be the word in question itself. This is not always the case.
  2. I need to delete the trailing comma for entries with 2+ related words.

Make favourites logic more efficient by adding a cache layer

Currently every time I need to access the favourites, I just read it from disk. I should instead read it from memory once at startup into a writethrough cache and use that. That way I can avoid unnecessary reads.

The latency introduced by the non-cached version is visibly noticeably (perhaps even just for the overhead of using the FutureBuilder), so I should do this at some point.

Clearly indicate that changes have been made to the content

Something like this:

Only some of the information relating to each sign that is found on Auslan Signbank is displayed here in this app. Please consult Auslan Signbank to see the information displayed as originally intended and endorsed by the author.

Perhaps with this added to the end.

There is a link to Auslan Signbank on each definition.

Acknowledge source of the information

We need something like this:

The Auslan information (including videos) displayed in this app is taken from Auslan Signbank (Johnston, T., & Cassidy, S. (2008). Auslan Signbank (auslan.org.au) Sydney: Macquarie University & Trevor Johnston).

Add ability to favourite words

Words change throughout time in this dictionary. When you load up your favourites list, I need to clear anything there that doesn't exist in the dictionary anymore. Perhaps I could display a message indicating as such, or maintain a list so users can know what went missing.

Fetch all data and tag it with regional information

The current scraper doesn't do any sort of regional specification and therefore misses many of the signs. It turns out if you specify a regional preference, the search results will be different. I should try to do that and then tag each video and/or definition with the appropriate region(s).

Cache videos

Once a video is loaded once, cache it forever.

We would need to make a settings page where users can drop the cache.

Create synonym map

For example, there is no sign for the word "great", so you would probably just do "excellent" or "good" or something. You can have a searchTerm -> [word] map.

Add better development instructions to the README

The process is quite complicated. I'd like to have a guide (some of which might just be links to other guides in the flutter docs for example) that tells you how to build the Android and iOS apps from start to finish.

Store last seen result of GK

Currently if checking a GK fails, we fall back to a hard coded default. We should instead fall back to the last seen value, and then a default.

Also we should give up on waiting for checking the GK after a second or two, but still set the value in storage once it does finally load (for the slow server / connection case).

Use a CDN for content

Instead of just reading stuff from the Auslan Signbank servers, it'd be nice to set up a CDN. If we could get in contact with the creators of Auslan Signbank, we could set up caching with cloudflare or something similar.

Compress region information

Currently the region information is in full text in the json. Instead it should just be enum ints entering into a map. This will be good for building a region filter too for the flashcards.

Progressing through cards struggles / fails when on spaced repetition mode

I noticed this when my phone was on low power mode at 5%, it may be relevant. I noticed that in spaced repetition mode, when I tapped and then tapped again, the next card would not appear. Tapping on "remembered" did nothing. Tapping on forgot would progress the cards after the delay, but only after another tap would the flash card show up correctly, half of the previous flash card was still there.

Revision feature crashes when the user has hundreds of favourites

I've been receiving reports from one user that if they save around a few hundred favourites, they cannot load the revision section of the app. Worse, sometimes it causes the app to crash entirely and they have to delete the app and its data and reinstall.

Here are some of the reports:

Heavy use of Revision has crashed that part of the app for me. Just get the grey screen. The dictionary and favourites still work okay.

There are a number of glitches with the app to do with the videos. Some word videos have been loaded at double speed, and some where there are multiple videos for a word don’t swipe back to the first one, but only go back one. Too many to keep track of. Not a serious problem though. I can keep track of them if you like as at the moment I’m using the app a lot to try to learn Auslan. I can make a list and let you know every so often. But as signbank has thousands, it will only be a small number comparatively.

Reloaded the app and it was working fine. Saving lots of favourites again. But now I’ve just tried Revision and again it’s disappeared. Just a grey screen. Thus I deleted the app from my Home Screen, but this means that I can’t reload it as the only way I can access the app dictionary favourites now is going through the App Store. Can’t even delete it.

Just figured out how to delete app through systems, and have reinstalled it. Working okay. Saving favourites for revision, as before. Is there a limit to the number of favourites for revision? It seems to not like too many favourites. I want hundreds of favourites to practice with, but it seems to crash that part of the app. It was working well the first time, but maybe I didn’t give it enough time to find the videos etc because I had so many. The revision settings are the default ones.

The default revision strategy is random, implying to me that this doesn't have anything to do with loading prior reviews. This means we're likely just crashing upon trying to build all the masters with dolphin.

Some ideas for improvement here:

  • Use sqlite for favourites and for prior reviews.
  • Load up favourites in chunks and apply them to dolphin incrementally.
  • Let users specify a max number of words to revise in a single session.
  • Do a try / catch when building each tab. If loading the tab fails, show them a screen saying that loading failed and offer some guidance on what to do. e.g. for revision, they can try deleting prior reviews, setting the max number of words to review per session to a lower value, etc.
  • Make sure that as revision proceeds, we're discarding previous video players.
  • #58, to deal with the fast video playback issue. Probably just a button that as you press it, it rotates between 1x, 0.75x, 0.5x, 2x, 1x.

I should probably make each of these a separate issue but I won't bother with that for now.

The fact that the app seems to crash on startup isn't addressed in these ideas above. I'm not 100% sure what I can do about that right now, but I'll investigate. Perhaps I can set all the globals I set prior to runApp to dummy values and then show a simplified "crash page", where the user can choose to report the issue to me, or perhaps I build in something that just does it automatically.

Another thing I should do is when a user goes to report an issue, I should try to bundle up the DB state / shared preferences, as well as build info and info about the user's device, and include that in the report. I can make a separate issue for this.

Add flashcards feature

Comments requesting this feature:

display Favourites randomly as a revision learning tool like Flash Cards as you build your personal vocabulary.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.