Giter Club home page Giter Club logo

voracious's Introduction

Voracious

Voracious is a video player app for Mac/Windows/Linux with special features for studying foreign languages (esp. Japanese).

screenshot

Voracious lets you:

  • Scan and browse your media collection ala Kodi or Plex
  • Simultaneously display multiple subtitle languages/tracks (all common formats supported)
  • Quickly replay the current subtitle and navigate forward and back by subtitle using the keyboard
  • Train your listen/reading/comprehension with special viewing modes that automatically pause and hide/reveal subtitles
  • Automatically generate furigana annotations (Japanese only)
  • Hover over words to see dictionary definitions (Japanese only)
  • Import and use EPWING dictionaries (limited to certain popular Japanese EPWINGs)
  • Export subtitles as sentence cards to Anki (with audio and/or image, ala subs2srs), instantly via AnkiConnect
  • (coming soon) Search for words/phrases over your entire library of subtitles

Using Voracious (Quick Start)

Before using Voracious, you need to have a media collection that's organized and named the same way you would for Kodi or Plex (each show/movie in its own directory, subtitle filename matching video filenames, etc.). Note that Voracious cannot currently play some popular video/audio codecs, including H.265 and AC3. Also, keep in mind that Voracious won't be useful unless you have subtitles in the language you're trying to learn.

If your media collection is ready to go, open Voracious and hit the Add Collection link. Select the folder where your collection lives, and give it name, and add it. On the Library page, you can browse your collection and play videos (videos without any available subtitles will appear grey). In the player, check the help overlay for keyboard controls, and try different subtitle modes.

Development

Overview and repo structure

Voracious is mostly built as a single-page web app with React (using create-react-app), and then packaged as a cross-platform desktop app using Electron. As with a normal create-react-app-based app, the bulk of the code is in src/ with some static resources in public/. The output of webpack (after yarn react-build) will go into build/. Electron-builder is used to package the resulting build into an Electron-based app, with its output going to dist/.

The app/ dir contains a small amount of code and config related to Electron. The main Electron entry point is app/electron-main.js, and app/package.json is the package.json that's distributed in the final app.

Most third-party dependencies are pure JS (react, immutable, etc.) and are declared in the root package.json. Those are bundled with the the Voracious code (by webpack) into a single JS file. That means that the root node_modules/ does not needed to be distributed with the final Electron app. This sort of bundling isn't generally necessary to do for Electron apps, but it's convenient for various reasons.

Dependencies that use native code (e.g. sqlite) need to be compiled against the Electron V8 runtime, and are declared in app/package.json. The corresponding app/node_modules/ is packaged into the final distributed Electron app.

Electron-builder is configured via electron-builder.json. The current config has it basically combine the contents of build/ and app/ to form the distributed archive.

Installing for development

To install for development you'll first need NodeJS, Yarn, and some extra build tools for node-gyp (see here). Then:

$ yarn # install pure-JS and development dependencies
$ cd app
$ yarn # install dependencies that include native code in app/ subdir
$ cd ..
$ yarn rebuild-native # rebuild native deps in app/node_modules against correct Electron V8 runtime

Running in development mode

Start the React development server with:

$ yarn react-start

Once the React server has started up, in a separate terminal run:

$ yarn electron-start

The Electron app will open, with the main window serving from the development server (localhost:3000). Edits to the source will cause it to automatically reload.

Building for release

First build the JS:

$ yarn react-build

Then build the distributable desktop app:

$ yarn dist

The output archive/executable can then be found in the dist dir.

If you just want to run the built app and don't need it packed into an archive/executable for distribution, then run:

$ yarn dist-nopack

Building a Linux release in a VM

Download and install VirtualBox and Vagrant. Then run:

vagrant up

This will download an Ubuntu image, spin it up in a VM, and do a clean clone and build in that VM. When it's done (it takes quite a while), it will copy the resulting .AppImage file to the dist dir of your working copy. After that, you can run:

vagrant destroy

and confirm to tear down and delete the VM. If you want to inspect the build environment before you destroy the VM, you can run:

vagrant ssh
cd voracious

and check it out.

Inspecting the distributed archive

It's often useful to check exactly what files have been included in the archive distributed with the Electron app. An easy way to do that is to install the asar tool (yarn global add asar) and then (on mac) run:

$ asar list dist/mac/Voracious.app/Contents/Resources/app.asar

voracious's People

Contributors

rsimmons avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

voracious's Issues

Ignore List for Common Subtitle Lines

Would be nice to have the feature of ignoring (don't pause) certain common subtitle lines like '♪〜', '〜♪', '♪~', '~♪'. This list could be pre-populated and placed in the Settings area.

Movie not recognized in library

I've followed the "Quick Start" steps carefully.
Here is my file hierarchy:

D:
  - Czech
    - Pupendo
      - Pupendo.avi
      - Pupendo.str

Now I get the folder inside my library.
image

Then what? I cannot see the move anywhere? Where do I click?

The only thing I seem able to do is to click on the Delete button.

Did I miss a step? Is there something wrong with my files?

I'm lost.... Please send a helicopter 🚁

(I tried on both Windows and Linux for the same result)

Mark previously watched titles

When returning to a collection of 150 episodes for a drama I'm watching it's quite hard to recall the number of the previous episode watched. Would be nice if Voracious could mark videos as watched (either when playback has started or the end of the video has been reached?). Would also be great if a user can unmark a video as watched.

Doesn't display subtitle, even though formatted correctly?

Hi im trying to get dual subs to work so sorry if this is a newbie question. Currently, I'm testing with Japanese subs for an anime I'm watching however it doesn't show the sub as loaded nor displays it while playing. I am not sure what the problem is.

sub problem 2
sub problem

Speeding up videos

In chrome there are plugins to increase playback rate, is there a way to do similar things for voracious?

Can't change font-size

Default .srt font-size is too small for me, can't find a way to change it on settings.

Copy and paste from subs and definitions doesn't work

This was reported via email by Nicolás Castañeda and also mentioned in issue #20. I think it used to work, perhaps there was a regression. This is especially annoying when trying to copy definitions/etc into the Anki import window.

Cleaner formatting of dictionary entries.

At present, each dictionary's entries are just thrown together without any line breaks. The way Yomichan formats dictionary entries is easy to read and makes scanning for the appropriate definition easier when there are multiple definitions for a word.

I've just started using Voracious and after a week or so this is the main thing that's bothered me, especially as i'm trying to ease myself into the "monolingual transition". Otherwise, it's been a huge help in streamlining the card making process!

Feature to alternate between English, Japanese, or both subtitles?

It helps getting a better idea what is being said even if you know the vocabulary and grammar if you can see what it's supposed to be said in English. Or especially those who still need training wheels and to be able to work their way up from not needing English subtitles. I've gotten more doing it that way in Animelon than only having a vague idea in vocarious.

Deleting library videos leads to complete program failure

I deleted some videos that were in the Voracious Library and the program was rendered completely inoperable, giving the following error on program start:

Something has gone terribly wrong

Error: ENOENT: no such file or directory, scandir '(my video path)'

Also, a panel on the right should have opened with more debug info. Maybe take a screenshot of everything and send it to me.

error

In order to get it working again I had to go hunting for the preferences and ended up deleting both cookie files, as well as the preferences and voracious.db files in my appdata folder. A reinstall did not fix, because, I assume, whichever of those files that was causing the issue was still there.

Allow exit of fullscreen mode when in library/settings screens

When watching a video, press the f key for fullscreen mode, return the library or settings screens, the f key no longer responds meaning you're trapped in fullscreen mode. When this happens I have to start a video playing to escape fullscreen mode.

Not issues but requests from hardcore user

screenshot_7
If it is possible

1: be able to hide (shortcut or something)
2: be able to hide (shortcut or something)
3: force this blurry line to be always active even without subs

4: Esc button pauses video end minimizes program(boss mode) or works like 1(topleft button)
5: be able to continue video after pressing 1(topleft button) without choosing episode from collection

Thank you very much!

Some Subtitles Do Not Display

Not sure if this is my issue or not, but the attached subtitles do not display. I saw you mention on reddit that it expects UTF-8, so I tried exporting the file as UTF-8 in AegisSub and then re-muxing with MKVToolNix, but the subtitles still do not show. This is the only one I've tried so far, so I'm not entirely sure if there is something I'm missing here.
subs.zip

How can I use it for English?

I have a mkv files which they has softsubs .ass formatted, also I have .srt but it doesn't show subtitles. Besides, I couldn't import english dictionary

video file has no audio or an unsupported audio codec

Please make this error go away after a few seconds. My current workaround for this is to play the audio in another media player like VLC while I use voracious for video and lookup; but this PIECE OF SHIT error message won't go away, which ruins the picture.

Seriously, voracious has terrible codec support, making most of my stuff unwatchable without converting it. And there are some things I just can't convert. Oh, and don't forget to switch the English and Japanese tracks since Voracious only uses the first audio track! And don't you just love the fact that you have to reload the program for it to detect changes to files you're trying to get to work with it? Hurray for no support!

On screen buttons

Thank you for this incredible app. I've shifted my media consumption style just to use it so that I can make anki cards easier. I use it on a Surface Go tablet and would love the ability to have onscreen buttons to press for up, down, left, right, space, and E. These are the keys I use the most. Space is also covered by the play button.

Without onscreen buttons, I have to use a physical keyboard, or I have to use the onscreen full keyboard which obscures some of the screen. I've searched online before for ways to make custom virtual keyboards on Windows 10. Custom virtual keyboards would be a way to work around it, but I couldn't find anything.

I know this project is not actively in development. Just wanted to say thanks for incredible app!

Feature request: Manually rescan library for updates

Sometimes when I find that my update my files, Voracious doesn't show the updates. In this situation, some kind of 'Rescan Library' button would be useful. Right now I am just closing and opening Voracious again (Linux version).

Crash on startup on macOS

This was reported via email by Nicolás Castañeda. This has already been fixed in cc782a0 but not yet included in a proper release.

Voracious video players skipping opening?

The same "Yu Yu Hakusho" mkv file opened in VLC has length of 23:41, while opened in Voracious it only has 20:00+. The missing 3 minutes turns out to be the opening track. Is Voracious intentionally skipping the opening automatically?

Using Linux app 0.6.0 under Arch Linux.

AppImage crash on Linux

It just crashed when I tried to run it for the first time. How could I provide more debug info?

Hide subtitles for specific languages

I removed 'eng' from the 'Subtitle Language Order' settings field hoping it would prevent English subtitles from being displayed but sadly not 😢

Might be nice if there was some way of choosing which languages are displayed? For the time being I'm just hiding English subs in a sub-directory.

Hotkey to completely hide subtitles

First: thank you so much for creating this video player. It is absolutely amazing. I am now using it for nearly all of my video-based language studying. Also, as a Linux user: thanks for maintaining a Linux release!

Now for the feature request:

Right now when subtitles are disabled, the player still displays blurred out subs with a dark subtitle bar behind it. This is great for many of the study modes, but sometimes I just want to watch the show without subtitles, focusing on listening, and only enable the subtitles occasionally when I hear something "i+1". In this use-case, the subtitle bar and blurred out subtitles are distracting, and they keep pulling my eye down to look at them whenever they change.

It would be great to have a hotkey to completely hide the subtitles, including the dark bar.

'MediaManager' object has no attribute 'syncDelete'

When trying to export a card over to Anki I continue to receive this message. Any thoughts on why this might be the case? I have been using Voracious for about 3 months and never encountered this issue. Ever since though, I have been unable to fix the problem. I have tried deleting all voracious and anki related files off my computer and reinstalling as well as restructuring how my cards are made but nothing seems to work. I'm still able to export cards if they don't contain image or audio. I'm not sure if this project is still being worked on, but I would appreciate any help.

MediaManagerBug

Customisable Subtitles or Custom CSS Field

I find I need a large font beacuse of the distance I sit from my TV screen. For this reason I've been using VLC which is a shame as my media works perfectly in Voracious.

Some options to customise subtitles would be nice or a custom CSS field would do the trick.

Play then pause command causes the player to crash

If the player gets a pause command prior to being able to start playing, it crashes. You can reproduce this by pausing then pressing up and then space before it starts playing. Here is the error report:

Something has gone terribly wrong

AbortError: The play() request was interrupted by a call to pause(). https://goo.gl/LdLk22

Also, a panel on the right should have opened with more debug info. Maybe take a screenshot of everything and send it to me.

Subtitle text ignored within <>

I have subtitles like this:

(坂東はな)<今から 70年ほど前>

When displayed in Voracious I see this:

(坂東はな)

The text inside the < and > is probably being treated as an HTML tag.

Allow duplicates to be exported

I think duplicates in Anki are a good thing. For words that have more than one meaning, I have more than one card. Each card has a different example sentence demonstrating the words multiple uses. Also for words that for some reason just don't stick so well in my mind I'll usually add another example sentence for the same word to help it stick.

If issue #15 is implemented and there is a visual warning for duplicates the user could then decide whether or not he/she would like to add the word to his/her Anki deck.

Currently I get around this by placing an arbitrary character after the word and later deleting it Anki's card browser.

Add more fields to Anki export

I'm really, really loving voracious and it has been very useful so far. One feature I would love to have is having more data available in the Anki export. #16 already exists but in an ideal scenario (for me), the export would include:

  • The translation of the selected word (=the translated text that is being displayed in the popup for the selected word)
  • The reading of the selected word
  • If there is a second subtitle language: the entire sentence in the second language
  • Translations for all other words in the sentence (super optional, I'm generating this another way already but I would still find it helpful for studying these cards later)

This would be especially helpful since I can't seem to copy/paste any content within the app so I can not just copy translations into the text fields when creating cards. I'm using Voracious-0.5.0-mac.zip


An example:
Already existing fields:
Text: 解放すると約束したろ
Text with kanji readings: 解放[かいほう]すると 約束[やくそく]したろ
Selected word: 解放

New fields that would be super nice to have:
Text (second language): You promised you'd let me go
Selected word meaning: release; unleashing; liberation; emancipation; setting free; (comp) deallocation (of computer memory);
All meanings:
すると - (conj) thereupon; hereupon; (P)
かいほう - (n,vs) release; unleashing; liberation; emancipation; setting free; (comp) deallocation (of computer memory); (P)
やくそく - (n,vs) arrangement; promise; appointment; pact; engagement; convention; rule; (P)

(The example "all meanings" text was generated with a modified version of https://github.com/hsperr/japanese_meanings As you can see it is not perfect but most of the time it is very convenient to have)

Back button should return to last selected title

Currently when pressing the back button, having finished watching a video, the user is taken back to the root of the media library instead of the previously selected title. I beleive this behaviour is unexpected.

Hello

I tried to mail you on [email protected], but the mail bounced. Me and Ognjen develop Language Learning with Netflix extension. Mind to send me a mail? I had an idea. [email protected]
Regards,
David

Voracious can't be opened because of a problem

Hi,

The player won't open on mac at all, I'm getting the error below. Thanks

Process: Voracious [31927]
Path: /Applications/Voracious.app/Contents/MacOS/Voracious
Identifier: org.rsimmons.voracious
Version: 0.6.0 (0.6.0)
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Voracious [31927]
User ID: 502

Date/Time: 2020-04-09 12:26:05.727 +0100
OS Version: Mac OS X 10.15.1 (19B88)
Report Version: 12
Bridge OS Version: 4.1 (17P1081)
Anonymous UUID: B4CBE627-E740-43F4-A906-AD5A394F9E18

Sleep/Wake UUID: 5A014613-727B-4A06-9FB8-70B0F07AAF7C

Time Awake Since Boot: 350000 seconds
Time Since Wake: 1900 seconds

System Integrity Protection: enabled

Crashed Thread: 0

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

Termination Reason: DYLD, [0x1] Library missing

Application Specific Information:
dyld: launch, loading dependent libraries

Dyld Error Message:
Library not loaded: @rpath/Electron Framework.framework/Electron Framework
Referenced from: /Applications/Voracious.app/Contents/MacOS/Voracious
Reason: no suitable image found. Did find:
/Applications/Voracious.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework: file too short
/Applications/Voracious.app/Contents/MacOS/../Frameworks/Electron Framework.framework/Electron Framework: stat() failed with errno=1

Binary Images:
0x10f7f1000 - 0x10f7f1ff7 +org.rsimmons.voracious (0.6.0 - 0.6.0) <5D51F11B-3CC9-3193-BD67-27427F5B22BA> /Applications/Voracious.app/Contents/MacOS/Voracious
0x118202000 - 0x118292b5f dyld (733.6) /usr/lib/dyld
0x7fff3d237000 - 0x7fff3d34fff8 com.apple.Bluetooth (7.0.1 - 7.0.1f1) <61A2BDF8-E3AC-3714-A967-92404AC52389> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth

Language detection on subtitle files may be wrong, and there is no recourse

Павел Кузнецов emailed me that a certain subtitle file would display but wouldn't show dictionary definitions. The problem is that even though the subs are Japanese, there are "junk" Dialogue lines in the .ass file that cause the language detection to detect it as German, so no analysis/lookup is done.

I'm not sure how to fix detection, but theoretically there could be some way to override the detection result.

Move subtitle mode setting to settings window

Just a suggestion, but from a UX point of view I can't think of a use case where a user is going to need to change this option too many times whilst watching a video?

As for the toggle help option, this could could be replaced with a little 'i' icon similar to the back icon.

[Request] Mark as seen

I have a pretty sizable library, so it'd be nice for Voracious to highlight the videos I've seen so I know where I left. A small "recently watched" message might also do the trick.

Check for duplicate before export

As the export takes a few seconds to process it would perhaps be better if the check for duplicates was made before this step to make the feedback more instant.

No changes after upgrade to 0.5.0

Not seeing the 'Selected Text' option for Anki fields nor the 'Ignored Subtitle Languages' setting despite the app telling me I'm running version 0.5.0. I used the Windows installer and performed an upgrade. Also tried to uninstall and reinstall but no luck.

Chinese subtitles make player page crash

Andrew Cheung reported this to me by email. The subtitle language is correctly auto-determined as cmn (3-letter code), but the player page tries to convert this to a 2-letter code for the HTML lang attribute and fails because there is no conversion. It should just skip setting the attribute if the conversion fails.

Feature request: JSON support (especially for Shinmeikai dictionary)

Love Voracious, it's great. Thank you for creating it.

I was trying to use the Shinmeikai J-J dictionary with it, which IMO is the best J-J dictionary out there. The definitions are short and awesome. However, it's not EPWING and/or is not supported by Yomichan's EPWING importer. However, I'm using it with Yomichan just fine, because it's in the JSON format.

Are you able to add JSON format support to Voracious? That would make my studies so much better! I'm using Daijirin in the EPWING format now, which has crappy definitions and is all over the place.

Thank you!

Read aloud subtitle

I think this function will be very useful for learner when they practice listening
If we have bilingual subtitle
Voracious will read aloud mother language subtitle sentence first, and then repeat that video part many times with many playback speed such as 0.5x -> 0.7x -> 1.0x -> 1.0x ->1.0x ->1.5x before play next sentence.
The learner will listen very carefully pronunciation and intonation to imitate each sentence.

x265 in .mkv format mostly (or all?) black screen

Hi - it appears that all videos I try to play using x265 compression (and in mkv format) are just black screen. The rest of the features / functions appear to work just fine.

Is this expected behavior? Is adding x265 support something I can work on possibly? (I have reasonably extensive node.js experience, with some electron experience, and minimal video-based experience).

If this isn't expected behavior... is it possible there's some system-wide stuff I need to add to get this working properly? Most of my library is in this format. Thanks.

Edit: Okay - I see the giant note in the README now about x265 not being supported. Is there a pathway to get this implemented? I see the distributed ffmpeg appears to be built with the --enable-libx265 flag... so that isn't the problem. I might be able to carve out some time to work on it if i can be given some direction and you accept PRs, thanks.

Export highlighted word to Anki

I study vocab in context with mined sentences but I find it far more useful having my cards point out the word I am learning.

Words act as a unique field in my deck whereas the same sentence can exist multiple times. This setup ensures Yomichan wont import duplicate words and allows me to assign the highlighted word's glossary to card also.

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.