Skip to content

Releases: arianneorpilla/jidoujisho

0.15.1-beta

04 May 17:13
Compare
Choose a tag to compare

0.15.2 has been released.
See the updated release notes.

0.15.0-beta

03 May 17:45
Compare
Choose a tag to compare

0.15.1 has been released.
See the updated release notes.

0.14.2-beta

29 Apr 11:06
Compare
Choose a tag to compare

This release implements monolingual dictionary support for users who desire to use Japanese-to-Japanese dictionary definitions. The dictionary definitions are sourced from Goo.ne.jp. A new option is available in the player menu which will allow users to switch between bilingual and monolingual query modes, between Jisho.org and Goo.ne.jp respectively. The application will use bilingual definitions by default.

To users who were relying on the custom dictionary support implemented from 0.4, the legacy functionality remains intact: Term banks will override the bilingual dictionary mode if there are term bank files present in the term bank directory which can be set in the main menu. Make sure to move term banks to the new default directory to keep using it.

Using the built-in monolingual dictionary query mode is faster, grammar-aware, supports returning multiple definitions, does not stutter the video and does not require setting up term banks to get started. Definitions in the pop-up dictionary are selectable to allow for recursive look-ups.

Milestone: This release also marks 100 stars for the jidoujisho repository. Now, that's just an arbitrary metric, but to someone like me who thought there would not be much demand for this personal tool of mine, it really means a lot! To all users, passersby, lurkers, first-timers and loyal dedicated users - all of you who give feedback, send me private messages just to check in, report issues and reciprocate with my development process, from Reddit, Discord or by e-mail -- Thank you for your support! I'll continue to work hard to make mobile language learning effortless, engaging and foolproof.

System Requirements: This application has been tested by myself and other users to work on a variety of real-world devices and emulators running Android 7 and above (thanks to Hexavall). If the installation fails, try clearing enough storage space (Cheers to kekkonkinenbi for letting me know).

0.14-beta

  • (New Feature) Monolingual Dictionary Support - Users may select an option in the player menu to switch between bilingual and monolingual modes, which will allow the player to query either Jisho.org or Goo.ne.jp respectively.
  • Opening and closing the transcript when a video is playing will resume playback appropriately
  • Exporting from the transcript will now resume the video if the video was playing when export was selected
  • Changed the text of several options in the main menu

0.14.1-beta

  • Switching between the query modes when pop-up is open will now re-query the dictionary entry for the appropriate mode

0.14.2-beta

  • Increased number of videos stored in history from 20 to 50
  • Added an option to view channel videos by oldest or latest when holding a channel in the Channels page (#16)

A glimpse of monolingual dictionary support

Developer Note: Monolingual dictionary support has been a well requested feature ever since the first release, and this release properly implements it, compared to the experimental placeholder I quickly hacked together in 0.4. I've always been telling myself that sooner or later, I want to undergo a monolingual transition. This should give me the push to go that distance, and I hope that this feature can also help other users to finally take that leap!

Which file should I download?

The files are split between the different device architectures to save user download bandwidth and storage space. Depending on which device you are using, download the appropriate APK by expanding the "Assets" drop-down menu below.

Test each APK available for each architecture. If you're not sure, the arm64 download should be suitable for most mobile devices.

0.13.7-beta

23 Apr 03:12
Compare
Choose a tag to compare

This release implements several user suggested enhancements, such as subtitle delay adjustment, export of multiple subtitles and focus mode detailed below (feature requests by coredump, Hexavall and sp3ctum). Users may now hold on a subtitle on the transcript later than the current subtitle in order to export an Anki card with an extended audio timing and concatenated subtitles. Users may now also adjust the subtitle delay for their videos.

These features are an early preview of what I wish to achieve with these features and may change with later minor releases based on user feedback. If exporting a card with multiple subtitles, it may take some time for the card to export the necessary resources.

System Requirements: This application has been tested by myself and other users to work on a variety of real-world devices and emulators running Android 7 and above (thanks to Hexavall). If the installation fails, try clearing enough storage space (Cheers to kekkonkinenbi for letting me know).

0.13-beta

  • (New Feature) Multiple Subtitle Export - Users may now hold on a later subtitle in the transcript than the current subtitle to export a card with multiple subtitles
  • (New Feature) Subtitle Delay - Users may now adjust the subtitle delay of the widget by milliseconds in the player menu
  • Channels are now cached as a performance improvement so they will now no longer have to load on initial startup if unchanged
  • Fixed an embarrassing typo in the 'About this app' screen

0.13.1-beta

* feature request by sp3ctum

  • (New Feature) Focus Mode* - Users may now choose whether or not making a subtitle selection will pause the player, focus mode will also resume playback on closing the definition if the query was made when playing (#5)
  • (New Feature) Headset Play/Pause* - Users will now be able to play and pause the video with their headset controls (#8)
  • Reinstated an enhancement to make the definitions recursive only for monolingual definitions by making the text selectable*, if there is trouble closing the popup, click on the meaning or reading at the top (#9)
  • Users may now choose to export a range of multiple subtitles by holding on subtitles previous to the current subtitle, as the ending rather than the beginning
  • Exporting multiple subtitles now has an appropriate waiting message and exits the transcript elegantly
  • The player will no longer show the 'End Playback' message if the video has already ended* (#7)
  • Fixed an issue where selecting multiple subtitles was exclusive of the last line, and had one missing character
  • The top and bottom status bar is now shown when not playing a video, shown properly in the same layer as the interface
  • Users may bring up the bottom status bar during video playback by swiping up where it should be
  • Fixed a user interface inconsistency where low resolution video did not fit the width of its half of the export dialog
  • Fixed swipe right gesture to show the start of the subtitle rather than the end
  • Open to browser options for share menu have been moved to their own nested option to declutter the player menu

0.13.2-beta

  • (New Feature) Image Select for Multiple Subtitle Export - Users may now swipe left or right to pick an image when exporting multiple subtitles, the image is taken from the mean subtitle time, or between start and end time (#10)
  • (New Feature) Audio Allowance - Users may now set a range of milliseconds onto which the exported audio time will be padded in the beginning and end, as a mitigation for poorly timed subtitles
  • Fixed an issue where preview audio was not stopped when the export screen is exited
  • Added an option to set and remember the delay and allowance permanently
  • Repositioned adjust delay and allowance option in the player menu

0.13.3-beta

  • Significantly reduced the file size of the application package by around 30mb by fixing a redundancy in assets in the text segmentation dependencies
  • Subtitle widget will now be hidden from view if the current player position is not within a 100ms range of the last subtitle viewed (#14)
  • Fixed an issue where switching tasks or changes to the app life cycle invalidating headset controls (#8)
  • Implementing headset controls seems to have allowed the app to have background play, at present headset controls don't seem to work in the background
  • Moved landscape lock earlier from video player screen initialization to give the OS time to adjust the orientation (#12)
  • In focus mode, when clicking on a definition causing the player to pause and then clicking on another, closing the second definition box will now also resume the player
  • Raised the maximum clipboard dictionary entries in the main menu from 50 to 100

0.13.4-beta

  • The transcript current subtitle marked red should now be accurate to what is displayed on screen
  • Fixed a critical dependency issue where the application would work for upgrades to 0.13.3 but not fresh installs, reverted file size reduction and dependency removal back to prior sizes

0.13.5-beta

  • Fixed an issue with default ASS/SRT subtitles with the same filename as the video file were loaded as a raw string SRT (#13)
  • Fixed an SRT parsing issue which showed timestamps in the transcript where the line after the timestamp showed up as blank
  • Reorganized WebVTT parsing

0.13-6-beta

  • Fixed an issue where the subtitles flickered if the delay was set, irrespective of subtitle widget visibility

0.13-7-beta

  • Subtitle delay is now properly reflected in export and when seeking with swipe left/right and the transcript

Which file should I download?

The files are split between the different device architectures to save user download bandwidth and storage space. Depending on which device you are using, download the appropriate APK by expanding the "Assets" drop-down menu below.

Test each APK available for each architecture. If you're not sure, the arm64 download should be suitable for most mobile devices.

0.12.4-beta

17 Apr 07:48
Compare
Choose a tag to compare

This release implements support for videos with Japanese automatic captions via youtube-dl (feature request by gimmer123). This new option can be found in the audio/subtitle menu when watching a YouTube video.

When first attempting to request automatic captions, the app will set up the required dependencies. This may require the user to clear some space on their device. Please do not interrupt this one-time initialization. The automatic captions will then play, if available. A message will indicate if automatic captions could not be queried. Please be advised that the automatic captions are YouTube's best effort, and critical inaccuracies are to be expected.

On File Size: Users may notice that the app's binary size has grown quite large. This is due to an increasing number of dependencies packaged in the application. It is my aim to not grow this any further as the project looms towards a stable release candidate.

In the future, I may decide to provide some of the dependencies on-demand as an optional download for users that feel like there are some features they would never really use. For the purposes of this beta and to account for fast iteration, all dependencies and features are included in a single package.

System Requirements: I have tested this application to work on a variety of real-world devices and emulators running Android 8 and above. If the installation fails, try clearing enough storage space (Cheers to kekkonkinenbi for letting me know).

0.12-beta

  • (New Feature) Automatic Captions - Users may now select and query automatic captions under the audio/subtitle menu when playing a YouTube video
  • Binary file size has been increased significantly to include necessary dependencies
  • Increased the horizontal padding on the subtitle widget

0.12.1-beta

  • Fixed an issue where previous subtitles appeared above current captions for automatic captions
  • Fixed an issue where sometimes tap to select subtitles would not newline
  • Removed a redundancy where automatic captions option would appear for videos with Japanese closed captions
  • Added 'List Channel' option for YouTube videos in history
  • Rephrased 'Remove History' option

0.12.2-beta

  • Fixed an issue where turning subtitles off would not work when YouTube automated captions are used
  • Now applying build number properly to new builds to ensure users aren't faced with downgrades

0.12.3-beta

  • 'Import/export channels' will now allow users to get and set their channel IDs in case the app must be reinstalled, as well as encourage sharing content among users
  • Added an option to set AnkiDroid directory in the main menu for users that store their Anki collection in an SD card or any other non-default location
  • Codebase significantly refactored and organised, split util.dart into several purposefully named files, global variables emphasised in its own file
  • Updated the 'About this app' message

0.12.4-beta

  • Now mixing muxed and demuxed streams as a quick mitigation for #4, selecting seek-friendly labelled streams will allow users to confidently seek through YouTube videos

Automatic captions

Developer Note: This brings in a lot of potential for study, since a lot of videos are in Japanese but do not provide proper closed captions. However, please be advised that there may be critical errors in these automatically generated captions. A video having automatic captions available is the farthest thing from a statement of quality or correctness.

Which file should I download?

The files are split between the different device architectures to save user download bandwidth and storage space. Depending on which device you are using, download the appropriate APK by expanding the "Assets" drop-down menu below.

Test each APK available for each architecture. If you're not sure, the arm64 download should be suitable for most mobile devices.

0.11.3-beta

20 Apr 00:39
Compare
Choose a tag to compare

This release fills the bottom navigation bar with some new options, namely a history tab to show the last 20 played videos, local or YouTube, and a clipboard tab that shows the last 50 dictionary entries read.

Users may now peruse the words they've looked up after their immersion session or go into their history to quickly get back to past videos. More changes are detailed in the release notes below.

YouTube Functionality: I am aware of an issue with YouTube support that prevents any videos from being played. This is related to a dependency I am waiting on that needs to be patched and may take some time.

Android 11 users: The versions between Android 11 and below are no longer separate. I have tested changes on an Android 11 emulator that allow use of the app on Android 11 without any additional steps. For testing purposes, here is the workaround to export files on Android 11. In case issues persist, please let me know as soon as possible.

System Requirements: I have tested this application to work on a variety of real-world devices and emulators running Android 8 and above. If the installation fails, try clearing enough storage space (Cheers to kekkonkinenbi for letting me know).

0.11-beta

  • (New Feature) History - A dedicated tab in the main menu will now show the last 20 local or YouTube videos played, clicking on any video in the tab will play the video
  • (New Feature) Clipboard - Another tab added in the main menu shows the latest 50 dictionary entries, the text in the fields are selectable and clicking on an entry will copy the word
  • Removed 100 videos limit on channel videos view and added lazy loading to improve performance
  • Channels are now sorted by alphabetical order
  • Fixed an oversight where 'Play Video' option when holding a video did not play the video
  • Upgraded several dependencies in order to get newer flutter_vlc_player features and bug fixes
  • Changed the resume button's icon as a redundancy to the history tab icon

0.11.1-beta

  • Fixed a critical performance issue that occured when scrolling and requesting engagement metrics in channel videos
  • As a side-effect, no view count and publish date is present in channel videos and the trending subheading has been reinstated
  • Fixed an oversight in displaying video durations for videos with less than one minute of length

0.11.2-beta

  • Fix significant blank player issues by downgrading flutter_vlc_player dependency (may require further investigation if this does not solve it)

0.11.3-beta

  • Reduced user friction in case of export message if AnkiDroid service is not found, clicking on it will launch AnkiDroid
  • Fixed an oversight where file thumbnails were kept in app storage once deleted from history
  • If AnkiDroid permissions are not granted, appropriate requests are now added on export

The jidoujisho main menu

Developer Note: This release finally brings the main menu to how I originally envisioned it to be when I dreamed of a language learning video player mobile app for Japanese. Great to finally reach this stage!

Which file should I download?

The files are split between the different device architectures to save user download bandwidth and storage space. Depending on which device you are using, download the appropriate APK by expanding the "Assets" drop-down menu below.

Test each APK available for each architecture. If you're not sure, the arm64 download should be suitable for most mobile devices.

0.10.0-beta

16 Apr 07:19
Compare
Choose a tag to compare

This release implements some significant new options to the main menu with channels and search history. Users will be able to add channels they wish to subscribe to within the app in a tab in the new bottom navigation bar. Search history and suggestions are now added when using the search bar. Some minor fixes are also detailed in the release notes below.

To facilitate ease of use and encourage use of this new feature, users may long press on any video in trending or search to list a channel they wish to subscribe to. This release also exists so people can know I know how semantic versioning works lmao.

Android 11 users: The versions between Android 11 and below are no longer separate. I have tested changes on an Android 11 emulator that allow use of the app on Android 11 without any additional steps. For testing purposes, here is the workaround to export files on Android 11. In case issues persist, please let me know as soon as possible.

0.10-beta

  • (New Feature) Channels - Users can now list channels that they frequent by long pressing videos and selecting 'List Channel' or listing the channel by copy pasting a video by the channel in the new 'Channels' tab
  • (New Feature) Search history and suggestions - Using the search bar will now show a list of the last fourteen search terms or suggestions, history may be cleared by long pressing search terms
  • Floating action button for local library has now been replaced with a bottom navigation bar
  • Trending (and channel videos) will now show their engagement metrics after a short query time
  • The audio/subtitle menu has been returned to YouTube playback, with details on the current tracks
  • YouTube subtitles will now properly encode ampersand and apostrophe characters
  • Fixed an issue where subtitles could not be turned off when selecting the 'None' option
  • Reinstated 720p as a standard definition format rather than a high definition format
  • Forced dependency overrides for unofficial_jisho_api_dart for newer youtube_explode_dart features

A glimpse at channels, search history and more

Which file should I download?

The files are split between the different device architectures to save user download bandwidth and storage space. Depending on which device you are using, download the appropriate APK by expanding the "Assets" drop-down menu below.

Test each APK available for each architecture. If you're not sure, the arm64 download should be suitable for most mobile devices.

0.9.3-beta

09 Apr 17:27
Compare
Choose a tag to compare

This release implements on-device text segmentation with ve_dart, my Dart implementation of the Ve linguistic framework used in Jisho.org. Users will now experience the same latency in both tap and drag text selection modes. A big thanks to Kim Ahlström for pointing me in the right direction!

0.9 introduces many vital user experience improvements necessary to bring this application closer to a stable candidate release! In addition, 0.9.1 adds video quality selection for YouTube videos. More are detailed in the release notes below.

Android 11 users: The versions between Android 11 and below are no longer separate. I have tested changes on an Android 11 emulator that allow use of the app on Android 11 without any additional steps. For testing purposes, here is the workaround to export files on Android 11. In case issues persist, please let me know as soon as possible.

Other Android version users: I have been made aware of a startup issue on Android 6 where the app remains on white screen. I have tested the app on very recent Android versions, but lack the time at present to investigate that the app works with every single device form factor and Android version. If possible, please report what you suspect may be Android version-specific or device specific issues. I highly appreciate everybody's feedback. Thank you very much.

0.9-beta

  • (New Feature) Tap to select mode now uses the Ve linguistic framework used in Jisho.org, vastly improving word select accuracy and definition lookup latency (big thanks to Kimtaro!), the source code can be found at my repo or pub.dev
  • (New Feature) A resume button is now in the main menu, when pressed users will be returned to their last played video and duration
  • Recombined Android 10 and below and Android 11 and above packages - if issues persist, please make an issue ticket!
  • Android 11 users should now experience much faster video loading without caching
  • Subtitles with the same name as the video will now be the default option and in order of priority, they can be in SRT, ASS or SSA format
  • Fixed an issue in some videos where the transcript would show the bottom subtitle due to YouTube TimedText XML artifacts (a video where this happened in previous builds)
  • Consecutive subtitles that are of equal timestamp or within 0.5s of starting and ending with each other and of the same text are now merged to improve audio export (an example video that shows the necessity of this, see the transcript)
  • Consecutive subtitles with the same timestamp but not of the same text are now concatenated newlined as one subtitle, improving user experience in videos with Furigana or Romaji (a video that needed this)
  • Removed alignment tag artifacts from subtitles when loaded during video playback
  • Fixed a performance issue related to the tap to select subtitle widget if two subtitles are playing in the same timestamp
  • Fixed an issue in some Samsung devices where the video player was black due to device-specific wakelock permission requirements
  • Fixed some miscellaneous orientation related issues that occurred when exiting playback
  • Fixed an issue with tap to select subtitles handling newlines and spaces

0.9.1-beta

  • (New Feature) Added an option to change the quality in YouTube videos in the player menu, the player now defaults to your last picked quality always, if not available it will fall back to the best quality

0.9.2-beta

  • Fixed a significant issue in YouTube video playback where in previous builds some videos would mute towards the end
  • Improved audio bitrate offered in YouTube video playback
  • Fixed an issue where occasionally, a video would play from the start when resumed
  • The audio track button is now hidden while playing a YouTube video as it is quite redundant at present
  • Appropriate icon changes to 720p option as it is now a standard definition format (an end of an era)

0.9.3-beta

  • Fixed a critical issue where exporting cards during local file playback caused a hangup
  • Changed the 60fps tags to have appropriate icons

Have a look! A video for on-device text segmentation with Ve

Which file should I download?

The files are split between the different device architectures to save user download bandwidth and storage space. Depending on which device you are using, download the appropriate APK by expanding the "Assets" drop-down menu below.

Test each APK available for each architecture. If you're not sure, the arm64 download should be suitable for most mobile devices.

0.8.1-beta

07 Apr 15:35
Compare
Choose a tag to compare

This release improves the reliability of dictionary entry results. Tap to search terms are now directly obtained by scraping Jisho.org for text segmentation results. In addition, users may now see alternative dictionary entry results and scroll left or right to choose whichever they want to view and export. Changes to the tap to search subtitle widget and dictionary pop-up are also detailed below.

Android 11 users: A reminder that use of the app on Android 11 and above requires a workaround in regards to storage permission which fixes issues with exporting to AnkiDroid. Please do not forget to read how to set up the required workaround to export files on Android 11.

0.8.1-beta

  • The dictionary pop-up can now be scrolled left and right to see the other definitions for the search term, with other UI changes
  • Render width-based widget wrapping improves tap to select subtitle wrapping rather than using a fixed string length limit
  • Tap to search results have been improved and directly scrape Jisho.org for the appropriate segmentation
  • In case no results are returned by the Jisho.org, suggested inflections will be searched, improving search results of some items
  • Changed the appearance of the number header in the meanings with Unicode rounded numbers
  • Fixed an issue where some subtitles were not properly showing in entirety in tap to search mode
  • Fixed some overflow issues that occurred due to definitions being too long, and made the meanings scrollable in the pop-up
  • Fixed an issue with zero width spaces messing up search queries and dictionary pop-up sometimes not closing

Which file should I download?

The files below include those tagged android11 and otherwise. Pick the appropriate file for your Android version.

  • Android 11 and above users will need to cache the video before playback due to scoped storage restrictions. Download the file with android11.
  • Android 10 and below users will experience fast video playback with no need to cache the video before playback. Download the file without android11.

0.8.0-beta

06 Apr 23:16
Compare
Choose a tag to compare

This release implements morphological analysis of subtitles with the MeCab text segmentation library, enabling users to tap to select words in the subtitles during video playback.

In the menu, users will find a new option that will allow them to freely toggle between "Tap to Select" and "Drag to Select" text selection modes. The app will always default to the last used text selection mode. More details on the decisions and approaches towards handling text segmentation and selection in this application is detailed below the release notes.

Android 11 users: A reminder that use of the app on Android 11 and above requires a workaround in regards to storage permission which fixes issues with exporting to AnkiDroid. Please do not forget to read how to set up the required workaround to export files on Android 11.

0.8.0-beta

  • (New Feature) Tap to select mode is now possible with text segmentation (thanks to mecab_dart)
  • Users can now toggle between the faster tap to select and more precise drag to select text selection modes in the menu
  • Changed the formatting of the subtitles, improved wrapping with significant changes to widgets making both selection modes look identical
  • Changed the condition of showing the export timeout message so that it would not show up on speedy exports
  • Fixed an inconsistency in the accent colors in the audio/subtitle selection menu

A video preview on tap to select

Development notes on implementing text segmentation

Since the release of this application, I have talked with several users about text segmentation, and they were curious as to why I initially implemented drag to select instead of the tap to select feature debuting with this release. The implementation of this well desired mode has many jagged edges made to look pretty -- it's not some super complex computer science problem, but it took quite a while to figure out how to get it to this point where it works and appear decently enough that I feel compelled to write about it.

With drag to select, two text widgets are overlaid on top of each other and made to be interactive, as you would with a text field, which was very intuitive. With tap to select, the subtitles are first run through the MeCab parser, newlines and spaces replaced with appropriate delimiters and then split into morphemes that make up separate interactive widgets that can be clicked.

The root widget that displays all subtitles is two nested builders, one for the translucent outline and another for the white text, just like the above paragraph. But instead of simple text widgets, it uses a generator to build rows with a list of list of strings, and within each row or line of text is a list of strings for which each element must build a text widget with the appropriate on-click callback. When generating the list of list of strings from the tokens returned from the MeCab parser, each list must be cut once a newline delimiter is found or if it is getting too long and may overflow when rendered.

Luckily, getting the definition is much easier. The entire text selection from the morpheme selected to the end of string is passed to Jisho.org, and I was very thankful that they always return a result relevant to the head of the string I send to their API. It's a very hacky implementation that doesn't involve implementing the Jisho.org parser itself in Dart (which I may plan to do if I ever try to get the app to work independently of Jisho.org when offline, and thanks to a response from Kim from Jisho.org, I may be able to get to that soon), but it works - and was a very fun test of what I can do with Flutter widgets.

Splitting Japanese characters into the individual words with perfect results may still be a problem for machines (and really much of the work is still done by Jisho's Ve parser here), but the end result is very much functional, and many users may decide to go with it. However, in the edge cases, it may cause more frustration than convenience. And as proclaimed time and again by immersion learners, "Language is highly specific in unpredictable ways".

With very informal or so language, a human can know where they should start the text selection and end it to get exactly what they want to query, but with an algorithm deciding the selection, it may lead to frustration. Users can get irritated more than occasionally realising the machine has selected text for them that they don't think was right at all - and that's even before they see the definition output. That's why rather than that, I offer the drag to select option for the user to decide exactly what they want to know -- especially because occasionally even Jisho.org returns blanks for a lot of words that a human would know from intuition. In addition, I am of the belief that intermediate learners must develop the skill of breaking down the words to what they see and work towards to the point of being advanced to pick whatever they want.

In the end, tap to select is faster while drag to select is more precise -- and as a project like this must ideally be unopinionated for any learner to use and pick up, I worked quite hard and enjoyed getting both modes to feature parity. I hope that any and all users enjoy whichever mode they choose, and I hope to further improve the text segmentation of this application. Any feedback on the feature is much appreciated.

Which file should I download?

The files below include those tagged android11 and otherwise. Pick the appropriate file for your Android version.

  • Android 11 and above users will need to cache the video before playback due to scoped storage restrictions. Download the file with android11.
  • Android 10 and below users will experience fast video playback with no need to cache the video before playback. Download the file without android11.