diff --git a/gui/slick/images/flags/afr.png b/gui/slick/images/subtitles/flags/afr.png similarity index 100% rename from gui/slick/images/flags/afr.png rename to gui/slick/images/subtitles/flags/afr.png diff --git a/gui/slick/images/flags/amh.png b/gui/slick/images/subtitles/flags/amh.png similarity index 100% rename from gui/slick/images/flags/amh.png rename to gui/slick/images/subtitles/flags/amh.png diff --git a/gui/slick/images/flags/ara.png b/gui/slick/images/subtitles/flags/ara.png similarity index 100% rename from gui/slick/images/flags/ara.png rename to gui/slick/images/subtitles/flags/ara.png diff --git a/gui/slick/images/flags/arg.png b/gui/slick/images/subtitles/flags/arg.png similarity index 100% rename from gui/slick/images/flags/arg.png rename to gui/slick/images/subtitles/flags/arg.png diff --git a/gui/slick/images/flags/asm.png b/gui/slick/images/subtitles/flags/asm.png similarity index 100% rename from gui/slick/images/flags/asm.png rename to gui/slick/images/subtitles/flags/asm.png diff --git a/gui/slick/images/flags/ave.png b/gui/slick/images/subtitles/flags/ave.png similarity index 100% rename from gui/slick/images/flags/ave.png rename to gui/slick/images/subtitles/flags/ave.png diff --git a/gui/slick/images/flags/aym.png b/gui/slick/images/subtitles/flags/aym.png similarity index 100% rename from gui/slick/images/flags/aym.png rename to gui/slick/images/subtitles/flags/aym.png diff --git a/gui/slick/images/flags/aze.png b/gui/slick/images/subtitles/flags/aze.png similarity index 100% rename from gui/slick/images/flags/aze.png rename to gui/slick/images/subtitles/flags/aze.png diff --git a/gui/slick/images/flags/bak.png b/gui/slick/images/subtitles/flags/bak.png similarity index 100% rename from gui/slick/images/flags/bak.png rename to gui/slick/images/subtitles/flags/bak.png diff --git a/gui/slick/images/flags/bam.png b/gui/slick/images/subtitles/flags/bam.png similarity index 100% rename from gui/slick/images/flags/bam.png rename to gui/slick/images/subtitles/flags/bam.png diff --git a/gui/slick/images/flags/bel.png b/gui/slick/images/subtitles/flags/bel.png similarity index 100% rename from gui/slick/images/flags/bel.png rename to gui/slick/images/subtitles/flags/bel.png diff --git a/gui/slick/images/flags/ben.png b/gui/slick/images/subtitles/flags/ben.png similarity index 100% rename from gui/slick/images/flags/ben.png rename to gui/slick/images/subtitles/flags/ben.png diff --git a/gui/slick/images/flags/bis.png b/gui/slick/images/subtitles/flags/bis.png similarity index 100% rename from gui/slick/images/flags/bis.png rename to gui/slick/images/subtitles/flags/bis.png diff --git a/gui/slick/images/flags/bod.png b/gui/slick/images/subtitles/flags/bod.png similarity index 100% rename from gui/slick/images/flags/bod.png rename to gui/slick/images/subtitles/flags/bod.png diff --git a/gui/slick/images/flags/bos.png b/gui/slick/images/subtitles/flags/bos.png similarity index 100% rename from gui/slick/images/flags/bos.png rename to gui/slick/images/subtitles/flags/bos.png diff --git a/gui/slick/images/flags/bre.png b/gui/slick/images/subtitles/flags/bre.png similarity index 100% rename from gui/slick/images/flags/bre.png rename to gui/slick/images/subtitles/flags/bre.png diff --git a/gui/slick/images/flags/bul.png b/gui/slick/images/subtitles/flags/bul.png similarity index 100% rename from gui/slick/images/flags/bul.png rename to gui/slick/images/subtitles/flags/bul.png diff --git a/gui/slick/images/flags/cat.png b/gui/slick/images/subtitles/flags/cat.png similarity index 100% rename from gui/slick/images/flags/cat.png rename to gui/slick/images/subtitles/flags/cat.png diff --git a/gui/slick/images/flags/ces.png b/gui/slick/images/subtitles/flags/ces.png similarity index 100% rename from gui/slick/images/flags/ces.png rename to gui/slick/images/subtitles/flags/ces.png diff --git a/gui/slick/images/flags/cha.png b/gui/slick/images/subtitles/flags/cha.png similarity index 100% rename from gui/slick/images/flags/cha.png rename to gui/slick/images/subtitles/flags/cha.png diff --git a/gui/slick/images/flags/chu.png b/gui/slick/images/subtitles/flags/chu.png similarity index 100% rename from gui/slick/images/flags/chu.png rename to gui/slick/images/subtitles/flags/chu.png diff --git a/gui/slick/images/flags/chv.png b/gui/slick/images/subtitles/flags/chv.png similarity index 100% rename from gui/slick/images/flags/chv.png rename to gui/slick/images/subtitles/flags/chv.png diff --git a/gui/slick/images/flags/cor.png b/gui/slick/images/subtitles/flags/cor.png similarity index 100% rename from gui/slick/images/flags/cor.png rename to gui/slick/images/subtitles/flags/cor.png diff --git a/gui/slick/images/flags/cos.png b/gui/slick/images/subtitles/flags/cos.png similarity index 100% rename from gui/slick/images/flags/cos.png rename to gui/slick/images/subtitles/flags/cos.png diff --git a/gui/slick/images/flags/cre.png b/gui/slick/images/subtitles/flags/cre.png similarity index 100% rename from gui/slick/images/flags/cre.png rename to gui/slick/images/subtitles/flags/cre.png diff --git a/gui/slick/images/flags/cym.png b/gui/slick/images/subtitles/flags/cym.png similarity index 100% rename from gui/slick/images/flags/cym.png rename to gui/slick/images/subtitles/flags/cym.png diff --git a/gui/slick/images/flags/dan.png b/gui/slick/images/subtitles/flags/dan.png similarity index 100% rename from gui/slick/images/flags/dan.png rename to gui/slick/images/subtitles/flags/dan.png diff --git a/gui/slick/images/flags/deu.png b/gui/slick/images/subtitles/flags/deu.png similarity index 100% rename from gui/slick/images/flags/deu.png rename to gui/slick/images/subtitles/flags/deu.png diff --git a/gui/slick/images/flags/dzo.png b/gui/slick/images/subtitles/flags/dzo.png similarity index 100% rename from gui/slick/images/flags/dzo.png rename to gui/slick/images/subtitles/flags/dzo.png diff --git a/gui/slick/images/flags/ell.png b/gui/slick/images/subtitles/flags/ell.png similarity index 100% rename from gui/slick/images/flags/ell.png rename to gui/slick/images/subtitles/flags/ell.png diff --git a/gui/slick/images/flags/eng.png b/gui/slick/images/subtitles/flags/eng.png similarity index 100% rename from gui/slick/images/flags/eng.png rename to gui/slick/images/subtitles/flags/eng.png diff --git a/gui/slick/images/flags/epo.png b/gui/slick/images/subtitles/flags/epo.png similarity index 100% rename from gui/slick/images/flags/epo.png rename to gui/slick/images/subtitles/flags/epo.png diff --git a/gui/slick/images/flags/est.png b/gui/slick/images/subtitles/flags/est.png similarity index 100% rename from gui/slick/images/flags/est.png rename to gui/slick/images/subtitles/flags/est.png diff --git a/gui/slick/images/flags/ewe.png b/gui/slick/images/subtitles/flags/ewe.png similarity index 100% rename from gui/slick/images/flags/ewe.png rename to gui/slick/images/subtitles/flags/ewe.png diff --git a/gui/slick/images/flags/fam.png b/gui/slick/images/subtitles/flags/fam.png similarity index 100% rename from gui/slick/images/flags/fam.png rename to gui/slick/images/subtitles/flags/fam.png diff --git a/gui/slick/images/flags/fao.png b/gui/slick/images/subtitles/flags/fao.png similarity index 100% rename from gui/slick/images/flags/fao.png rename to gui/slick/images/subtitles/flags/fao.png diff --git a/gui/slick/images/flags/fas.png b/gui/slick/images/subtitles/flags/fas.png similarity index 100% rename from gui/slick/images/flags/fas.png rename to gui/slick/images/subtitles/flags/fas.png diff --git a/gui/slick/images/flags/fij.png b/gui/slick/images/subtitles/flags/fij.png similarity index 100% rename from gui/slick/images/flags/fij.png rename to gui/slick/images/subtitles/flags/fij.png diff --git a/gui/slick/images/flags/fin.png b/gui/slick/images/subtitles/flags/fin.png similarity index 100% rename from gui/slick/images/flags/fin.png rename to gui/slick/images/subtitles/flags/fin.png diff --git a/gui/slick/images/flags/fra.png b/gui/slick/images/subtitles/flags/fra.png similarity index 100% rename from gui/slick/images/flags/fra.png rename to gui/slick/images/subtitles/flags/fra.png diff --git a/gui/slick/images/flags/gla.png b/gui/slick/images/subtitles/flags/gla.png similarity index 100% rename from gui/slick/images/flags/gla.png rename to gui/slick/images/subtitles/flags/gla.png diff --git a/gui/slick/images/flags/gle.png b/gui/slick/images/subtitles/flags/gle.png similarity index 100% rename from gui/slick/images/flags/gle.png rename to gui/slick/images/subtitles/flags/gle.png diff --git a/gui/slick/images/flags/glg.png b/gui/slick/images/subtitles/flags/glg.png similarity index 100% rename from gui/slick/images/flags/glg.png rename to gui/slick/images/subtitles/flags/glg.png diff --git a/gui/slick/images/flags/grn.png b/gui/slick/images/subtitles/flags/grn.png similarity index 100% rename from gui/slick/images/flags/grn.png rename to gui/slick/images/subtitles/flags/grn.png diff --git a/gui/slick/images/flags/guj.png b/gui/slick/images/subtitles/flags/guj.png similarity index 100% rename from gui/slick/images/flags/guj.png rename to gui/slick/images/subtitles/flags/guj.png diff --git a/gui/slick/images/flags/hat.png b/gui/slick/images/subtitles/flags/hat.png similarity index 100% rename from gui/slick/images/flags/hat.png rename to gui/slick/images/subtitles/flags/hat.png diff --git a/gui/slick/images/flags/heb.png b/gui/slick/images/subtitles/flags/heb.png similarity index 100% rename from gui/slick/images/flags/heb.png rename to gui/slick/images/subtitles/flags/heb.png diff --git a/gui/slick/images/flags/hin.png b/gui/slick/images/subtitles/flags/hin.png similarity index 100% rename from gui/slick/images/flags/hin.png rename to gui/slick/images/subtitles/flags/hin.png diff --git a/gui/slick/images/flags/hrv.png b/gui/slick/images/subtitles/flags/hrv.png similarity index 100% rename from gui/slick/images/flags/hrv.png rename to gui/slick/images/subtitles/flags/hrv.png diff --git a/gui/slick/images/flags/hun.png b/gui/slick/images/subtitles/flags/hun.png similarity index 100% rename from gui/slick/images/flags/hun.png rename to gui/slick/images/subtitles/flags/hun.png diff --git a/gui/slick/images/flags/hye.png b/gui/slick/images/subtitles/flags/hye.png similarity index 100% rename from gui/slick/images/flags/hye.png rename to gui/slick/images/subtitles/flags/hye.png diff --git a/gui/slick/images/flags/ido.png b/gui/slick/images/subtitles/flags/ido.png similarity index 100% rename from gui/slick/images/flags/ido.png rename to gui/slick/images/subtitles/flags/ido.png diff --git a/gui/slick/images/flags/ile.png b/gui/slick/images/subtitles/flags/ile.png similarity index 100% rename from gui/slick/images/flags/ile.png rename to gui/slick/images/subtitles/flags/ile.png diff --git a/gui/slick/images/flags/ind.png b/gui/slick/images/subtitles/flags/ind.png similarity index 100% rename from gui/slick/images/flags/ind.png rename to gui/slick/images/subtitles/flags/ind.png diff --git a/gui/slick/images/flags/isl.png b/gui/slick/images/subtitles/flags/isl.png similarity index 100% rename from gui/slick/images/flags/isl.png rename to gui/slick/images/subtitles/flags/isl.png diff --git a/gui/slick/images/flags/ita.png b/gui/slick/images/subtitles/flags/ita.png similarity index 100% rename from gui/slick/images/flags/ita.png rename to gui/slick/images/subtitles/flags/ita.png diff --git a/gui/slick/images/flags/jpn.png b/gui/slick/images/subtitles/flags/jpn.png similarity index 100% rename from gui/slick/images/flags/jpn.png rename to gui/slick/images/subtitles/flags/jpn.png diff --git a/gui/slick/images/flags/kan.png b/gui/slick/images/subtitles/flags/kan.png similarity index 100% rename from gui/slick/images/flags/kan.png rename to gui/slick/images/subtitles/flags/kan.png diff --git a/gui/slick/images/flags/kat.png b/gui/slick/images/subtitles/flags/kat.png similarity index 100% rename from gui/slick/images/flags/kat.png rename to gui/slick/images/subtitles/flags/kat.png diff --git a/gui/slick/images/flags/kau.png b/gui/slick/images/subtitles/flags/kau.png similarity index 100% rename from gui/slick/images/flags/kau.png rename to gui/slick/images/subtitles/flags/kau.png diff --git a/gui/slick/images/flags/kaz.png b/gui/slick/images/subtitles/flags/kaz.png similarity index 100% rename from gui/slick/images/flags/kaz.png rename to gui/slick/images/subtitles/flags/kaz.png diff --git a/gui/slick/images/flags/khm.png b/gui/slick/images/subtitles/flags/khm.png similarity index 100% rename from gui/slick/images/flags/khm.png rename to gui/slick/images/subtitles/flags/khm.png diff --git a/gui/slick/images/flags/kik.png b/gui/slick/images/subtitles/flags/kik.png similarity index 100% rename from gui/slick/images/flags/kik.png rename to gui/slick/images/subtitles/flags/kik.png diff --git a/gui/slick/images/flags/kin.png b/gui/slick/images/subtitles/flags/kin.png similarity index 100% rename from gui/slick/images/flags/kin.png rename to gui/slick/images/subtitles/flags/kin.png diff --git a/gui/slick/images/flags/kir.png b/gui/slick/images/subtitles/flags/kir.png similarity index 100% rename from gui/slick/images/flags/kir.png rename to gui/slick/images/subtitles/flags/kir.png diff --git a/gui/slick/images/flags/kon.png b/gui/slick/images/subtitles/flags/kon.png similarity index 100% rename from gui/slick/images/flags/kon.png rename to gui/slick/images/subtitles/flags/kon.png diff --git a/gui/slick/images/flags/kor.png b/gui/slick/images/subtitles/flags/kor.png similarity index 100% rename from gui/slick/images/flags/kor.png rename to gui/slick/images/subtitles/flags/kor.png diff --git a/gui/slick/images/flags/lat.png b/gui/slick/images/subtitles/flags/lat.png similarity index 100% rename from gui/slick/images/flags/lat.png rename to gui/slick/images/subtitles/flags/lat.png diff --git a/gui/slick/images/flags/lav.png b/gui/slick/images/subtitles/flags/lav.png similarity index 100% rename from gui/slick/images/flags/lav.png rename to gui/slick/images/subtitles/flags/lav.png diff --git a/gui/slick/images/flags/lim.png b/gui/slick/images/subtitles/flags/lim.png similarity index 100% rename from gui/slick/images/flags/lim.png rename to gui/slick/images/subtitles/flags/lim.png diff --git a/gui/slick/images/flags/lit.png b/gui/slick/images/subtitles/flags/lit.png similarity index 100% rename from gui/slick/images/flags/lit.png rename to gui/slick/images/subtitles/flags/lit.png diff --git a/gui/slick/images/flags/ltz.png b/gui/slick/images/subtitles/flags/ltz.png similarity index 100% rename from gui/slick/images/flags/ltz.png rename to gui/slick/images/subtitles/flags/ltz.png diff --git a/gui/slick/images/flags/lub.png b/gui/slick/images/subtitles/flags/lub.png similarity index 100% rename from gui/slick/images/flags/lub.png rename to gui/slick/images/subtitles/flags/lub.png diff --git a/gui/slick/images/flags/mah.png b/gui/slick/images/subtitles/flags/mah.png similarity index 100% rename from gui/slick/images/flags/mah.png rename to gui/slick/images/subtitles/flags/mah.png diff --git a/gui/slick/images/flags/mal.png b/gui/slick/images/subtitles/flags/mal.png similarity index 100% rename from gui/slick/images/flags/mal.png rename to gui/slick/images/subtitles/flags/mal.png diff --git a/gui/slick/images/flags/mar.png b/gui/slick/images/subtitles/flags/mar.png similarity index 100% rename from gui/slick/images/flags/mar.png rename to gui/slick/images/subtitles/flags/mar.png diff --git a/gui/slick/images/flags/mkd.png b/gui/slick/images/subtitles/flags/mkd.png similarity index 100% rename from gui/slick/images/flags/mkd.png rename to gui/slick/images/subtitles/flags/mkd.png diff --git a/gui/slick/images/flags/mlg.png b/gui/slick/images/subtitles/flags/mlg.png similarity index 100% rename from gui/slick/images/flags/mlg.png rename to gui/slick/images/subtitles/flags/mlg.png diff --git a/gui/slick/images/flags/mlt.png b/gui/slick/images/subtitles/flags/mlt.png similarity index 100% rename from gui/slick/images/flags/mlt.png rename to gui/slick/images/subtitles/flags/mlt.png diff --git a/gui/slick/images/flags/mon.png b/gui/slick/images/subtitles/flags/mon.png similarity index 100% rename from gui/slick/images/flags/mon.png rename to gui/slick/images/subtitles/flags/mon.png diff --git a/gui/slick/images/flags/msa.png b/gui/slick/images/subtitles/flags/msa.png similarity index 100% rename from gui/slick/images/flags/msa.png rename to gui/slick/images/subtitles/flags/msa.png diff --git a/gui/slick/images/flags/mya.png b/gui/slick/images/subtitles/flags/mya.png similarity index 100% rename from gui/slick/images/flags/mya.png rename to gui/slick/images/subtitles/flags/mya.png diff --git a/gui/slick/images/flags/nau.png b/gui/slick/images/subtitles/flags/nau.png similarity index 100% rename from gui/slick/images/flags/nau.png rename to gui/slick/images/subtitles/flags/nau.png diff --git a/gui/slick/images/flags/nbl.png b/gui/slick/images/subtitles/flags/nbl.png similarity index 100% rename from gui/slick/images/flags/nbl.png rename to gui/slick/images/subtitles/flags/nbl.png diff --git a/gui/slick/images/flags/ndo.png b/gui/slick/images/subtitles/flags/ndo.png similarity index 100% rename from gui/slick/images/flags/ndo.png rename to gui/slick/images/subtitles/flags/ndo.png diff --git a/gui/slick/images/flags/nep.png b/gui/slick/images/subtitles/flags/nep.png similarity index 100% rename from gui/slick/images/flags/nep.png rename to gui/slick/images/subtitles/flags/nep.png diff --git a/gui/slick/images/flags/nld.png b/gui/slick/images/subtitles/flags/nld.png similarity index 100% rename from gui/slick/images/flags/nld.png rename to gui/slick/images/subtitles/flags/nld.png diff --git a/gui/slick/images/flags/nor.png b/gui/slick/images/subtitles/flags/nor.png similarity index 100% rename from gui/slick/images/flags/nor.png rename to gui/slick/images/subtitles/flags/nor.png diff --git a/gui/slick/images/flags/oci.png b/gui/slick/images/subtitles/flags/oci.png similarity index 100% rename from gui/slick/images/flags/oci.png rename to gui/slick/images/subtitles/flags/oci.png diff --git a/gui/slick/images/flags/orm.png b/gui/slick/images/subtitles/flags/orm.png similarity index 100% rename from gui/slick/images/flags/orm.png rename to gui/slick/images/subtitles/flags/orm.png diff --git a/gui/slick/images/flags/pan.png b/gui/slick/images/subtitles/flags/pan.png similarity index 100% rename from gui/slick/images/flags/pan.png rename to gui/slick/images/subtitles/flags/pan.png diff --git a/gui/slick/images/flags/pol.png b/gui/slick/images/subtitles/flags/pol.png similarity index 100% rename from gui/slick/images/flags/pol.png rename to gui/slick/images/subtitles/flags/pol.png diff --git a/gui/slick/images/flags/por.png b/gui/slick/images/subtitles/flags/por.png similarity index 100% rename from gui/slick/images/flags/por.png rename to gui/slick/images/subtitles/flags/por.png diff --git a/gui/slick/images/flags/pus.png b/gui/slick/images/subtitles/flags/pus.png similarity index 100% rename from gui/slick/images/flags/pus.png rename to gui/slick/images/subtitles/flags/pus.png diff --git a/gui/slick/images/flags/ron.png b/gui/slick/images/subtitles/flags/ron.png similarity index 100% rename from gui/slick/images/flags/ron.png rename to gui/slick/images/subtitles/flags/ron.png diff --git a/gui/slick/images/flags/rus.png b/gui/slick/images/subtitles/flags/rus.png similarity index 100% rename from gui/slick/images/flags/rus.png rename to gui/slick/images/subtitles/flags/rus.png diff --git a/gui/slick/images/flags/sag.png b/gui/slick/images/subtitles/flags/sag.png similarity index 100% rename from gui/slick/images/flags/sag.png rename to gui/slick/images/subtitles/flags/sag.png diff --git a/gui/slick/images/flags/san.png b/gui/slick/images/subtitles/flags/san.png similarity index 100% rename from gui/slick/images/flags/san.png rename to gui/slick/images/subtitles/flags/san.png diff --git a/gui/slick/images/flags/sin.png b/gui/slick/images/subtitles/flags/sin.png similarity index 100% rename from gui/slick/images/flags/sin.png rename to gui/slick/images/subtitles/flags/sin.png diff --git a/gui/slick/images/flags/slk.png b/gui/slick/images/subtitles/flags/slk.png similarity index 100% rename from gui/slick/images/flags/slk.png rename to gui/slick/images/subtitles/flags/slk.png diff --git a/gui/slick/images/flags/slv.png b/gui/slick/images/subtitles/flags/slv.png similarity index 100% rename from gui/slick/images/flags/slv.png rename to gui/slick/images/subtitles/flags/slv.png diff --git a/gui/slick/images/flags/sme.png b/gui/slick/images/subtitles/flags/sme.png similarity index 100% rename from gui/slick/images/flags/sme.png rename to gui/slick/images/subtitles/flags/sme.png diff --git a/gui/slick/images/flags/smo.png b/gui/slick/images/subtitles/flags/smo.png similarity index 100% rename from gui/slick/images/flags/smo.png rename to gui/slick/images/subtitles/flags/smo.png diff --git a/gui/slick/images/flags/sna.png b/gui/slick/images/subtitles/flags/sna.png similarity index 100% rename from gui/slick/images/flags/sna.png rename to gui/slick/images/subtitles/flags/sna.png diff --git a/gui/slick/images/flags/snd.png b/gui/slick/images/subtitles/flags/snd.png similarity index 100% rename from gui/slick/images/flags/snd.png rename to gui/slick/images/subtitles/flags/snd.png diff --git a/gui/slick/images/flags/som.png b/gui/slick/images/subtitles/flags/som.png similarity index 100% rename from gui/slick/images/flags/som.png rename to gui/slick/images/subtitles/flags/som.png diff --git a/gui/slick/images/flags/sot.png b/gui/slick/images/subtitles/flags/sot.png similarity index 100% rename from gui/slick/images/flags/sot.png rename to gui/slick/images/subtitles/flags/sot.png diff --git a/gui/slick/images/flags/spa.png b/gui/slick/images/subtitles/flags/spa.png similarity index 100% rename from gui/slick/images/flags/spa.png rename to gui/slick/images/subtitles/flags/spa.png diff --git a/gui/slick/images/flags/sqi.png b/gui/slick/images/subtitles/flags/sqi.png similarity index 100% rename from gui/slick/images/flags/sqi.png rename to gui/slick/images/subtitles/flags/sqi.png diff --git a/gui/slick/images/flags/srd.png b/gui/slick/images/subtitles/flags/srd.png similarity index 100% rename from gui/slick/images/flags/srd.png rename to gui/slick/images/subtitles/flags/srd.png diff --git a/gui/slick/images/flags/srp.png b/gui/slick/images/subtitles/flags/srp.png similarity index 100% rename from gui/slick/images/flags/srp.png rename to gui/slick/images/subtitles/flags/srp.png diff --git a/gui/slick/images/flags/swe.png b/gui/slick/images/subtitles/flags/swe.png similarity index 100% rename from gui/slick/images/flags/swe.png rename to gui/slick/images/subtitles/flags/swe.png diff --git a/gui/slick/images/flags/tat.png b/gui/slick/images/subtitles/flags/tat.png similarity index 100% rename from gui/slick/images/flags/tat.png rename to gui/slick/images/subtitles/flags/tat.png diff --git a/gui/slick/images/flags/tgk.png b/gui/slick/images/subtitles/flags/tgk.png similarity index 100% rename from gui/slick/images/flags/tgk.png rename to gui/slick/images/subtitles/flags/tgk.png diff --git a/gui/slick/images/flags/tgl.png b/gui/slick/images/subtitles/flags/tgl.png similarity index 100% rename from gui/slick/images/flags/tgl.png rename to gui/slick/images/subtitles/flags/tgl.png diff --git a/gui/slick/images/flags/tha.png b/gui/slick/images/subtitles/flags/tha.png similarity index 100% rename from gui/slick/images/flags/tha.png rename to gui/slick/images/subtitles/flags/tha.png diff --git a/gui/slick/images/flags/ton.png b/gui/slick/images/subtitles/flags/ton.png similarity index 100% rename from gui/slick/images/flags/ton.png rename to gui/slick/images/subtitles/flags/ton.png diff --git a/gui/slick/images/flags/tsn.png b/gui/slick/images/subtitles/flags/tsn.png similarity index 100% rename from gui/slick/images/flags/tsn.png rename to gui/slick/images/subtitles/flags/tsn.png diff --git a/gui/slick/images/flags/tuk.png b/gui/slick/images/subtitles/flags/tuk.png similarity index 100% rename from gui/slick/images/flags/tuk.png rename to gui/slick/images/subtitles/flags/tuk.png diff --git a/gui/slick/images/flags/tur.png b/gui/slick/images/subtitles/flags/tur.png similarity index 100% rename from gui/slick/images/flags/tur.png rename to gui/slick/images/subtitles/flags/tur.png diff --git a/gui/slick/images/flags/twi.png b/gui/slick/images/subtitles/flags/twi.png similarity index 100% rename from gui/slick/images/flags/twi.png rename to gui/slick/images/subtitles/flags/twi.png diff --git a/gui/slick/images/flags/uig.png b/gui/slick/images/subtitles/flags/uig.png similarity index 100% rename from gui/slick/images/flags/uig.png rename to gui/slick/images/subtitles/flags/uig.png diff --git a/gui/slick/images/flags/ukr.png b/gui/slick/images/subtitles/flags/ukr.png similarity index 100% rename from gui/slick/images/flags/ukr.png rename to gui/slick/images/subtitles/flags/ukr.png diff --git a/gui/slick/images/flags/und.png b/gui/slick/images/subtitles/flags/und.png similarity index 100% rename from gui/slick/images/flags/und.png rename to gui/slick/images/subtitles/flags/und.png diff --git a/gui/slick/images/subtitles/flags/unknown.png b/gui/slick/images/subtitles/flags/unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..af9249bc317b724a8923e1447c60977dc9a91827 Binary files /dev/null and b/gui/slick/images/subtitles/flags/unknown.png differ diff --git a/gui/slick/images/flags/uzb.png b/gui/slick/images/subtitles/flags/uzb.png similarity index 100% rename from gui/slick/images/flags/uzb.png rename to gui/slick/images/subtitles/flags/uzb.png diff --git a/gui/slick/images/flags/ven.png b/gui/slick/images/subtitles/flags/ven.png similarity index 100% rename from gui/slick/images/flags/ven.png rename to gui/slick/images/subtitles/flags/ven.png diff --git a/gui/slick/images/flags/vie.png b/gui/slick/images/subtitles/flags/vie.png similarity index 100% rename from gui/slick/images/flags/vie.png rename to gui/slick/images/subtitles/flags/vie.png diff --git a/gui/slick/images/flags/zha.png b/gui/slick/images/subtitles/flags/zha.png similarity index 100% rename from gui/slick/images/flags/zha.png rename to gui/slick/images/subtitles/flags/zha.png diff --git a/gui/slick/images/flags/zho.png b/gui/slick/images/subtitles/flags/zho.png similarity index 100% rename from gui/slick/images/flags/zho.png rename to gui/slick/images/subtitles/flags/zho.png diff --git a/gui/slick/interfaces/default/config_subtitles.tmpl b/gui/slick/interfaces/default/config_subtitles.tmpl index 145c847c2f837c177e0d5806d9c6162c609ca84e..75e4434aeedb6fb6faa813af3b5e3ceab0be80d1 100644 --- a/gui/slick/interfaces/default/config_subtitles.tmpl +++ b/gui/slick/interfaces/default/config_subtitles.tmpl @@ -18,7 +18,7 @@ \$(document).ready(function() { \$("#subtitles_languages").tokenInput( [ - <%=",\r\n".join("{id: \"" + lang.alpha3 + "\", name: \"" + lang.name + "\"}" for lang in subtitles.subtitleLanguageFilter())%> + <%=",\r\n".join("{id: \"" + lang.opensubtitles + "\", name: \"" + lang.name + "\"}" for lang in subtitles.subtitleLanguageFilter())%> ], { method: "POST", @@ -28,7 +28,7 @@ [ <%= - ",\r\n".join("{id: \"" + subtitles.fromietf(lang).alpha3 + "\", name: \"" + subtitles.fromietf(lang).name + "\"}" for lang in subtitles.wantedLanguages()) if subtitles.wantedLanguages() else '' + ",\r\n".join("{id: \"" + subtitles.fromietf(lang).opensubtitles + "\", name: \"" + subtitles.fromietf(lang).name + "\"}" for lang in subtitles.wantedLanguages()) if subtitles.wantedLanguages() else '' %> ] } diff --git a/gui/slick/interfaces/default/displayShow.tmpl b/gui/slick/interfaces/default/displayShow.tmpl index 3af81d411d1235f39e7f5744eae236b2cc549c77..27ae2c46ba94897b80771e4a040a3405af23a46c 100644 --- a/gui/slick/interfaces/default/displayShow.tmpl +++ b/gui/slick/interfaces/default/displayShow.tmpl @@ -284,7 +284,7 @@ </table> <table style="width:180px; float: right; vertical-align: middle; height: 100%;"> - #set $info_flag = $subtitles.fromietf($show.lang).alpha3 if $subtitles.isValidLanguage($show.lang) else 'unknown' + #set $info_flag = $subtitles.fromietf($show.lang).alpha3 <tr><td class="showLegend">Info Language:</td><td><img src="$sbRoot/images/flags/${info_flag}.png" width="16" height="11" alt="$show.lang" title="$show.lang" onError="this.onerror=null;this.src='$sbRoot/images/flags/unknown.png';"/></td></tr> #if $sickbeard.USE_SUBTITLES <tr><td class="showLegend">Subtitles: </td><td><img src="$sbRoot/images/#if $show.subtitles then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr> @@ -579,8 +579,8 @@ </td> <td class="col-subtitles" align="center"> #for $sub_lang in [$subtitles.fromietf(x) for x in $epResult["subtitles"].split(',') if $epResult["subtitles"]]: - #set $flag = $sub_lang.alpha3 if $hasattr($sub_lang, 'alpha3') and $sub_lang.alpha3 else $sub_lang.alpha2 if $hasattr($sub_lang, 'alpha2') and $sub_lang.alpha2 else 'unknown' - <img src="$sbRoot/images/flags/${flag}.png" width="16" height="11" alt="${sub_lang.name}" onError="this.onerror=null;this.src='$sbRoot/images/flags/unknown.png';" /> + #set $flag = $sub_lang.opensubtitles + <img src="$sbRoot/images/subtitles/flags/${flag}.png" width="16" height="11" alt="${sub_lang.name}" onError="this.onerror=null;this.src='$sbRoot/images/flags/unknown.png';" /> #end for </td> #set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($epResult["status"])) diff --git a/gui/slick/interfaces/default/manage_subtitleMissed.tmpl b/gui/slick/interfaces/default/manage_subtitleMissed.tmpl index 38d061d6096697317125a4e6c39218d86e8d21a4..f5962e1db98d2a576aaa77fa37cc6eba1707eb09 100644 --- a/gui/slick/interfaces/default/manage_subtitleMissed.tmpl +++ b/gui/slick/interfaces/default/manage_subtitleMissed.tmpl @@ -30,7 +30,7 @@ Manage episodes without <select name="whichSubs" class="form-control form-control-inline input-sm"> <option value="all">All</option> #for $sub_lang in [$subtitles.fromietf(x) for x in $subtitles.wantedLanguages]: -<option value="$sub_lang.alpha3">$sub_lang.name</option> +<option value="$sub_lang.opensubtitles">$sub_lang.name</option> #end for </select> subtitles diff --git a/gui/slick/js/ajaxEpSubtitles.js b/gui/slick/js/ajaxEpSubtitles.js index c9e769b86564e574263aa8e60d139edcc68cd7a4..3514e7af2ca95bca629012dd5166a93be07e2594 100644 --- a/gui/slick/js/ajaxEpSubtitles.js +++ b/gui/slick/js/ajaxEpSubtitles.js @@ -14,9 +14,9 @@ $.each(subtitles,function(index, language){ if (language != "" && language != "und") { if (index != subtitles.length - 1) { - subtitles_td.append($("<img/>").attr({"src": sbRoot+"/images/flags/"+language+".png", "alt": language, "width": 16, "height": 11})); + subtitles_td.append($("<img/>").attr({"src": sbRoot+"/images/subtitles/flags/"+language+".png", "alt": language, "width": 16, "height": 11})); } else { - subtitles_td.append($("<img/>").attr({"src": sbRoot+"/images/flags/"+language+".png", "alt": language, "width": 16, "height": 11})); + subtitles_td.append($("<img/>").attr({"src": sbRoot+"/images/subtitles/flags/"+language+".png", "alt": language, "width": 16, "height": 11})); } } }); diff --git a/gui/slick/js/lib/jquery.tokeninput.js b/gui/slick/js/lib/jquery.tokeninput.js index 2afcc0f2c4ad5ded5747b8e86353e47904b456d0..bf309d79fd17d3638703f596c3cdcceb25189213 100644 --- a/gui/slick/js/lib/jquery.tokeninput.js +++ b/gui/slick/js/lib/jquery.tokeninput.js @@ -43,8 +43,8 @@ var DEFAULT_SETTINGS = { idPrefix: "token-input-", // Formatters - resultsFormatter: function(item){ return "<li><img src='"+sbRoot+"/images/flags/"+item["id"]+".png' /> " + item[this.propertyToSearch]+ "</li>" }, - tokenFormatter: function(item) { return "<li><img src='"+sbRoot+"/images/flags/"+item["id"]+".png' /> <p>" + item[this.propertyToSearch] + "</p></li>" }, + resultsFormatter: function(item){ return "<li><img src='"+sbRoot+"/images/subtitles/flags/"+item["id"]+".png' /> " + item[this.propertyToSearch]+ "</li>" }, + tokenFormatter: function(item) { return "<li><img src='"+sbRoot+"/images/subtitles/flags/"+item["id"]+".png' /> <p>" + item[this.propertyToSearch] + "</p></li>" }, flag: "flag", // Callbacks diff --git a/gui/slick/js/manageSubtitleMissed.js b/gui/slick/js/manageSubtitleMissed.js index 18d0844824c3cc8417d6f12b9f2897ac8e6f6c10..262ecbb282e38fbba962c0813ac97ca310d6ae03 100644 --- a/gui/slick/js/manageSubtitleMissed.js +++ b/gui/slick/js/manageSubtitleMissed.js @@ -15,7 +15,7 @@ $(document).ready(function() { subtitles = subtitles.split(',') for (i in subtitles) { - row += ' <img src="/images/flags/'+subtitles[i]+'.png" width="16" height="11" alt="'+subtitles[i]+'" /> '; + row += ' <img src="/images/subtitles/flags/'+subtitles[i]+'.png" width="16" height="11" alt="'+subtitles[i]+'" /> '; } row += ' </td>'; row += ' </tr>' @@ -69,4 +69,4 @@ $(document).ready(function() { }); }); -}); \ No newline at end of file +}); diff --git a/lib/guessit/test/__main__.py b/lib/guessit/test/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..32b8dd1001bbbf692d94434545b1fe6825e4a549 --- /dev/null +++ b/lib/guessit/test/__main__.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# GuessIt - A library for guessing information from filenames +# Copyright (c) 2013 Nicolas Wack <wackou@gmail.com> +# +# GuessIt is free software; you can redistribute it and/or modify it under +# the terms of the Lesser GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# GuessIt is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# Lesser GNU General Public License for more details. +# +# You should have received a copy of the Lesser GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +from __future__ import absolute_import, division, print_function, unicode_literals +from guessit.test import (test_api, test_autodetect, test_autodetect_all, test_doctests, + test_episode, test_hashes, test_language, test_main, + test_matchtree, test_movie, test_quality, test_utils) +from unittest import TextTestRunner + + +import logging + +def main(): + for suite in [test_api.suite, test_autodetect.suite, + test_autodetect_all.suite, test_doctests.suite, + test_episode.suite, test_hashes.suite, test_language.suite, + test_main.suite, test_matchtree.suite, test_movie.suite, + test_quality.suite, test_utils.suite]: + TextTestRunner(verbosity=2).run(suite) + + +if __name__ == '__main__': + main() diff --git a/lib/guessit/test/test_doctests.py b/lib/guessit/test/test_doctests.py new file mode 100644 index 0000000000000000000000000000000000000000..9fedeb0f3f9809cfbfe4eb2eb610c11639e87c3d --- /dev/null +++ b/lib/guessit/test/test_doctests.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# GuessIt - A library for guessing information from filenames +# Copyright (c) 2014 Nicolas Wack <wackou@gmail.com> +# +# GuessIt is free software; you can redistribute it and/or modify it under +# the terms of the Lesser GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# GuessIt is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# Lesser GNU General Public License for more details. +# +# You should have received a copy of the Lesser GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +from __future__ import absolute_import, division, print_function, unicode_literals + +from guessit.test.guessittest import * +import guessit +import guessit.hash_ed2k +import unittest +import doctest + + +def load_tests(loader, tests, ignore): + tests.addTests(doctest.DocTestSuite(guessit)) + tests.addTests(doctest.DocTestSuite(guessit.date)) + tests.addTests(doctest.DocTestSuite(guessit.fileutils)) + tests.addTests(doctest.DocTestSuite(guessit.guess)) + tests.addTests(doctest.DocTestSuite(guessit.hash_ed2k)) + tests.addTests(doctest.DocTestSuite(guessit.language)) + tests.addTests(doctest.DocTestSuite(guessit.matchtree)) + tests.addTests(doctest.DocTestSuite(guessit.textutils)) + return tests + +suite = unittest.TestSuite() +load_tests(None, suite, None) + +if __name__ == '__main__': + TextTestRunner(verbosity=2).run(suite) diff --git a/sickbeard/history.py b/sickbeard/history.py index 3f4f042cbbdbb88dd477ac57eefeec10444eb47d..1889af2fdcbf16e2d242440a986ecd6af7c03d07 100644 --- a/sickbeard/history.py +++ b/sickbeard/history.py @@ -77,7 +77,7 @@ def logDownload(episode, filename, new_ep_quality, release_group=None, version=- def logSubtitle(showid, season, episode, status, subtitleResult): - resource = subtitleResult.language.alpha3 + resource = subtitleResult.language.opensubtitles provider = subtitleResult.provider_name status, quality = Quality.splitCompositeStatus(status) diff --git a/sickbeard/subtitles.py b/sickbeard/subtitles.py index 183af22ca50cb6082ea60514a4b295f8762d50f5..8532b57b967adae3c7dbdeb7ad34806f17d5cc5c 100644 --- a/sickbeard/subtitles.py +++ b/sickbeard/subtitles.py @@ -67,7 +67,7 @@ def getEnabledServiceList(): #Hack around this for now. def fromietf(language): - return babelfish.Language.fromietf(language if language not in 'pb' else 'pt-BR') + return babelfish.Language.fromopensubtitles(language) def isValidLanguage(language): try: @@ -81,7 +81,7 @@ def getLanguageName(language): # TODO: Filter here for non-languages in sickbeard.SUBTITLES_LANGUAGES def wantedLanguages(sqlLike = False): - wantedLanguages = sorted(sickbeard.SUBTITLES_LANGUAGES) + wantedLanguages = [x for x in sorted(sickbeard.SUBTITLES_LANGUAGES) if x in babelfish.language_converters['opensubtitles'].codes] if sqlLike: return '%' + ','.join(wantedLanguages) + '%' return wantedLanguages @@ -92,8 +92,10 @@ def subtitlesLanguages(video_path): languages = subliminal.video.scan_subtitle_languages(video_path) for language in languages: - if hasattr(language, 'alpha3') and language.alpha3: - resultList.append(language.alpha3) + if hasattr(language, 'opensubtitles') and language.opensubtitles: + resultList.append(language.opensubtitles) + elif hasattr(language, 'alpha3') and language.alpha3: + resultList.append(language.alpha3) elif hasattr(language, 'alpha2') and language.alpha2: resultList.append(language.alpha2) @@ -101,11 +103,14 @@ def subtitlesLanguages(video_path): if len(resultList) is 1 and len(defaultLang) is 1: return defaultLang + if ('pob' in defaultLang or 'pb' in defaultLang) and ('pt' not in defaultLang and 'por' not in defaultLang): + resultList = [x if not x in ['por', 'pt'] else u'pob' for x in resultList] + return sorted(resultList) # TODO: Return only languages our providers allow def subtitleLanguageFilter(): - return [language for language in babelfish.LANGUAGE_MATRIX if hasattr(language, 'alpha2') and language.alpha2] + return [babelfish.Language.fromopensubtitles(language) for language in babelfish.language_converters['opensubtitles'].codes if len(language) == 3] class SubtitlesFinder(): """ diff --git a/sickbeard/tv.py b/sickbeard/tv.py index b2d33fb3a8586360a985402bf3ded8ec6d5f4181..a5230ca80e6e53b7417a69b4aa3a05ba597026b7 100644 --- a/sickbeard/tv.py +++ b/sickbeard/tv.py @@ -1517,7 +1517,7 @@ class TVEpisode(object): if sickbeard.SUBTITLES_HISTORY: for video, subs in foundSubs.iteritems(): for sub in subs: - logger.log(u'history.logSubtitle %s, %s' % (sub.provider_name, sub.language.alpha3), logger.DEBUG) + logger.log(u'history.logSubtitle %s, %s' % (sub.provider_name, sub.language.opensubtitles), logger.DEBUG) history.logSubtitle(self.show.indexerid, self.season, self.episode, self.status, sub) return self.subtitles