Subtitles for 大闹天宫 (Havoc in Heaven)

In the attachment you can find a file I used for creating the video to be found here:

大闹天宫 with Chinese learner’s subtitles

The file attached has the following tab-separated columns:

  • The name of the movie
  • HSK level, 7 means the sentence contains non-HSK characters
  • Legacy ID; if I remember correctly it should be the ID of my former website MandarinBanana. You can ignore this column.
  • The sentence, with each character colored according to pinyin tone, and with the pinyin written under the character. You need appropriate CSS settings to make it work (colors, and display:inline-block). If you want just the sentence just delete alphanumeric characters and everything in <>, that should work. If you can’t figure this out just leave a comment.
  • This is a reference to the individual video snippet I used to keep for each sentence. It is in the format: tag (dntg) – start of sentence in ms – end of sentence in ms.
  • A table with vocabulary explanations for each word or character in the sentence. These can actually not be seen in the movie above.
  • Word-by-word translation
  • More liberal English translation of the sentence

A word of caution: English is not my native language, and this translation practice taught me that it’s actually very hard to translate into a foreign language. Many English translations will sound weird or just wrong, but it’s the best I could do. It already took me a whole weekend to translate the Chinese subtitles!

MandarinBanana is offline

Today I pulled the plug on, mainly due to growing concerns over probably not fulfilling DSGVO legislation, no cookie popup, lacking user rights law statements and so on. I don’t want to be sued! Anyway I realized I should run a local copy on my laptop instead and be actually more flexible this way, because this way I’m independent of network connections.

Anyway, in the unlikely event that you were actually using, sorry! MandarinBanana might come back, altough it might take a few months (or years), or I might never find the time for everything I want to do to put it back online.

MandarinBanana Mnemonics Anki Import

Today I’ve created a text file with the mnemonics from to import in Anki. You can download the file here:

It is a tab-separated text file (compressed as zip, because it is 45 MB large uncompressed). This is what the import looks like:

Anki import screen
# / nameWhat’s inside
1 / hanziJust a single Chinese character, no HTML formatting. Example: 仍
2 / componentsA simple line showing the components (example: 仍 = 乃 + 亻), followed by dictionary entries for the components and mnemonics for the components.
3 / translationsDictionary entries for the character and any mnemonics associated with the character.
4 / imagesLinks to the comics associated with the character (no download option available so far)
5 / appearancesA list of characters which use the root character as component (example: 仍 appears in 芿)
6 / subtitlesSubtitles of the movies on which contain the character. If you click on the sentence, it will open in the browser.
7 / wordsA list of CC-CEDICT dictionary entries for words the character appears in.

There’s a lot of HTML formatting inside. Here’s what my styling section in Anki looks like (just as an example):

.card {
 font-size: 16px;
 text-align: center;
 background: black;
 color: white;

.mnemonics {
  margin-top: 1em;
  padding-top: 1em;
  border-top: 1px solid gray;

table {
  margin-left: auto;
  margin-right: auto;

td {
  border: 1px solid;
  padding: 5px;

div {
  margin: 5px;

.hanzi {
font-size: 2em;
font-family: "zenhei";

a {
text-decoration: none;
color: inherit;

ul {
  list-style-type: none;

.mandarinbananalink a {
text-decoration: none;
color: orange;

img.mimage {
width: 200px;
background-color: white;
border: 1px solid white;
margin: 1px;

@font-face {
  font-family: uming;
  src: url('_UMingCN.ttf');

@font-face {
  font-family: simfang;
  src: url('_simfang.ttf');

@font-face {
 font-family: zenhei;
 src: url('_WenQuanYiZenHei.ttf');

.color1 {
color: orangered;

.color2 {
color: yellow;

.color3 {
color: limegreen;

.color4 {
color: dodgerblue;

Each mnemonic is followed by the author’s name (since all mnemonics are CC-BY). If you like to, you can hide this information by including the following code in your “Styling” section:

.authorattribution {
display: none;

I hope this is useful for you! If you need a different format let me know in the comments.

If you want to have a look how the file is generated, please head over to It takes a few minutes for the script to run because there are so many database calls, which makes it difficult to, for example, post a link on which always returns the latest collection. I’ll have to implement some caching mechanism first, but it’s one of the things I definitely want to do to complete the site.

Have fun learning Chinese!

Copyright information: all mnemonics CC-BY by the respective authors. Dictionary entries: CC-SA CC-CEDICT (

Controlling Ankidroid with a Joycon

This post is kind of an addendum to my previous post, but it’s about controlling Ankidroid. You’ll need the app “External keyboard helper pro” (about $2). Here are the steps:

  1. Press the sync button on the Joycon and pair it with your Android device.
  2. Open “EKH Settings”, go to “Advanced settings”, “Keyboard mapping”, “Customize keyboard mappings”, and click on “Add new key mapping” for each button you want to map. For Example, I have SL and SR mapped to 0 and space respectively as in my previous post.
  3. Open Ankidroid and enjoy flipping your cards with your Joycon! You’ll have to set External Keyboard Helper as input method before.

More info on using the buttons on your headphones (similar approach):

Controlling Anki on Linux using a Nintendo Switch Joycon

I’m lying in bed all day curing a cold and I can’t really motivate myself to tackle the 1000+ reviews I’ve amassed over the last few weeks. There’s one gimmick I just implemented to motivate myself, and that is to use one of the Joycons of my Nintendo Switch to control Anki on Ubuntu. Much more comfortable than the laptop keyboard.

Continue reading Controlling Anki on Linux using a Nintendo Switch Joycon

Matplotlib tricks

Two little things I need now and then and am tired of looking up. To change the default font to one which supports Greek characters:

from matplotlib import rcParams
rcParams['font.sans-serif'] = 'DejaVu Sans'

To scale the xticklabels:

ax.set_xticklabels([ int(np.round(i)) for i in ax.get_xticks()*10**6 ])