diff --git a/111477/111477.js b/archive/111477/111477.js similarity index 100% rename from 111477/111477.js rename to archive/111477/111477.js diff --git a/111477/111477.json b/archive/111477/111477.json similarity index 100% rename from 111477/111477.json rename to archive/111477/111477.json diff --git a/anicore/anicore.js b/archive/anicore/anicore.js similarity index 100% rename from anicore/anicore.js rename to archive/anicore/anicore.js diff --git a/anicore/anicore.json b/archive/anicore/anicore.json similarity index 100% rename from anicore/anicore.json rename to archive/anicore/anicore.json diff --git a/anilibria/anilibria.js b/archive/anilibria/anilibria.js similarity index 100% rename from anilibria/anilibria.js rename to archive/anilibria/anilibria.js diff --git a/anilibria/anilibria.json b/archive/anilibria/anilibria.json similarity index 100% rename from anilibria/anilibria.json rename to archive/anilibria/anilibria.json diff --git a/anilibria/icon.png b/archive/anilibria/icon.png similarity index 100% rename from anilibria/icon.png rename to archive/anilibria/icon.png diff --git a/anilibria/iconalt.png b/archive/anilibria/iconalt.png similarity index 100% rename from anilibria/iconalt.png rename to archive/anilibria/iconalt.png diff --git a/anime3rb/anime3rb.js b/archive/anime3rb/anime3rb.js similarity index 100% rename from anime3rb/anime3rb.js rename to archive/anime3rb/anime3rb.js diff --git a/anime3rb/anime3rb.json b/archive/anime3rb/anime3rb.json similarity index 100% rename from anime3rb/anime3rb.json rename to archive/anime3rb/anime3rb.json diff --git a/anime3rb/iconalt.png b/archive/anime3rb/iconalt.png similarity index 100% rename from anime3rb/iconalt.png rename to archive/anime3rb/iconalt.png diff --git a/anime4up/anime4up.js b/archive/anime4up/anime4up.js similarity index 100% rename from anime4up/anime4up.js rename to archive/anime4up/anime4up.js diff --git a/anime4up/anime4up.json b/archive/anime4up/anime4up.json similarity index 100% rename from anime4up/anime4up.json rename to archive/anime4up/anime4up.json diff --git a/animebum/animebum.js b/archive/animebum/animebum.js similarity index 100% rename from animebum/animebum.js rename to archive/animebum/animebum.js diff --git a/animebum/animebum.json b/archive/animebum/animebum.json similarity index 100% rename from animebum/animebum.json rename to archive/animebum/animebum.json diff --git a/animeepisodeseries/animeepisodeseries.js b/archive/animeepisodeseries/animeepisodeseries.js similarity index 100% rename from animeepisodeseries/animeepisodeseries.js rename to archive/animeepisodeseries/animeepisodeseries.js diff --git a/animeepisodeseries/animeepisodeseries.json b/archive/animeepisodeseries/animeepisodeseries.json similarity index 100% rename from animeepisodeseries/animeepisodeseries.json rename to archive/animeepisodeseries/animeepisodeseries.json diff --git a/animefhd/animefhd.js b/archive/animefhd/animefhd.js similarity index 100% rename from animefhd/animefhd.js rename to archive/animefhd/animefhd.js diff --git a/animefhd/animefhd.json b/archive/animefhd/animefhd.json similarity index 100% rename from animefhd/animefhd.json rename to archive/animefhd/animefhd.json diff --git a/animemeow/animemeow.js b/archive/animemeow/animemeow.js similarity index 100% rename from animemeow/animemeow.js rename to archive/animemeow/animemeow.js diff --git a/animemeow/animemeow.json b/archive/animemeow/animemeow.json similarity index 100% rename from animemeow/animemeow.json rename to archive/animemeow/animemeow.json diff --git a/animeq/animeq.js b/archive/animeq/animeq.js similarity index 100% rename from animeq/animeq.js rename to archive/animeq/animeq.js diff --git a/animeq/animeq.json b/archive/animeq/animeq.json similarity index 100% rename from animeq/animeq.json rename to archive/animeq/animeq.json diff --git a/animesdrive/animesdrive.js b/archive/animesdrive/animesdrive.js similarity index 100% rename from animesdrive/animesdrive.js rename to archive/animesdrive/animesdrive.js diff --git a/animesdrive/animesdrive.json b/archive/animesdrive/animesdrive.json similarity index 100% rename from animesdrive/animesdrive.json rename to archive/animesdrive/animesdrive.json diff --git a/animesonline/animesonline.js b/archive/animesonline/animesonline.js similarity index 100% rename from animesonline/animesonline.js rename to archive/animesonline/animesonline.js diff --git a/animesonline/animesonline.json b/archive/animesonline/animesonline.json similarity index 100% rename from animesonline/animesonline.json rename to archive/animesonline/animesonline.json diff --git a/animesroll/animesroll.js b/archive/animesroll/animesroll.js similarity index 100% rename from animesroll/animesroll.js rename to archive/animesroll/animesroll.js diff --git a/animesroll/animesroll.json b/archive/animesroll/animesroll.json similarity index 100% rename from animesroll/animesroll.json rename to archive/animesroll/animesroll.json diff --git a/animeytx/animeytx.js b/archive/animeytx/animeytx.js similarity index 100% rename from animeytx/animeytx.js rename to archive/animeytx/animeytx.js diff --git a/animeytx/animeytx.json b/archive/animeytx/animeytx.json similarity index 100% rename from animeytx/animeytx.json rename to archive/animeytx/animeytx.json diff --git a/anroll/anroll.js b/archive/anroll/anroll.js similarity index 100% rename from anroll/anroll.js rename to archive/anroll/anroll.js diff --git a/anroll/anroll.json b/archive/anroll/anroll.json similarity index 100% rename from anroll/anroll.json rename to archive/anroll/anroll.json diff --git a/arablionz/arablionz.js b/archive/arablionz/arablionz.js similarity index 100% rename from arablionz/arablionz.js rename to archive/arablionz/arablionz.js diff --git a/arablionz/arablionz.json b/archive/arablionz/arablionz.json similarity index 100% rename from arablionz/arablionz.json rename to archive/arablionz/arablionz.json diff --git a/arabseed/arabseed.js b/archive/arabseed/arabseed.js similarity index 100% rename from arabseed/arabseed.js rename to archive/arabseed/arabseed.js diff --git a/arabseed/arabseed.json b/archive/arabseed/arabseed.json similarity index 100% rename from arabseed/arabseed.json rename to archive/arabseed/arabseed.json diff --git a/asialiveaction/asialiveaction.js b/archive/asialiveaction/asialiveaction.js similarity index 100% rename from asialiveaction/asialiveaction.js rename to archive/asialiveaction/asialiveaction.js diff --git a/asialiveaction/asialiveaction.json b/archive/asialiveaction/asialiveaction.json similarity index 100% rename from asialiveaction/asialiveaction.json rename to archive/asialiveaction/asialiveaction.json diff --git a/atsu/atsu.js b/archive/atsu/atsu.js similarity index 100% rename from atsu/atsu.js rename to archive/atsu/atsu.js diff --git a/atsu/atsu.json b/archive/atsu/atsu.json similarity index 100% rename from atsu/atsu.json rename to archive/atsu/atsu.json diff --git a/audible/audible.js b/archive/audible/audible.js similarity index 100% rename from audible/audible.js rename to archive/audible/audible.js diff --git a/audible/audible.json b/archive/audible/audible.json similarity index 100% rename from audible/audible.json rename to archive/audible/audible.json diff --git a/az-animex/az-animex.js b/archive/az-animex/az-animex.js similarity index 100% rename from az-animex/az-animex.js rename to archive/az-animex/az-animex.js diff --git a/az-animex/az-animex.json b/archive/az-animex/az-animex.json similarity index 100% rename from az-animex/az-animex.json rename to archive/az-animex/az-animex.json diff --git a/beatz-anime/beatz-anime.js b/archive/beatz-anime/beatz-anime.js similarity index 100% rename from beatz-anime/beatz-anime.js rename to archive/beatz-anime/beatz-anime.js diff --git a/beatz-anime/beatz-anime.json b/archive/beatz-anime/beatz-anime.json similarity index 100% rename from beatz-anime/beatz-anime.json rename to archive/beatz-anime/beatz-anime.json diff --git a/checkmate/checkmate.js b/archive/checkmate/checkmate.js similarity index 100% rename from checkmate/checkmate.js rename to archive/checkmate/checkmate.js diff --git a/checkmate/checkmate.json b/archive/checkmate/checkmate.json similarity index 100% rename from checkmate/checkmate.json rename to archive/checkmate/checkmate.json diff --git a/cinecalidad/cinecalidad.js b/archive/cinecalidad/cinecalidad.js similarity index 100% rename from cinecalidad/cinecalidad.js rename to archive/cinecalidad/cinecalidad.js diff --git a/cinecalidad/cinecalidad.json b/archive/cinecalidad/cinecalidad.json similarity index 100% rename from cinecalidad/cinecalidad.json rename to archive/cinecalidad/cinecalidad.json diff --git a/cksub/cksub.js b/archive/cksub/cksub.js similarity index 100% rename from cksub/cksub.js rename to archive/cksub/cksub.js diff --git a/cksub/cksub.json b/archive/cksub/cksub.json similarity index 100% rename from cksub/cksub.json rename to archive/cksub/cksub.json diff --git a/cloudy/cloudy.js b/archive/cloudy/cloudy.js similarity index 100% rename from cloudy/cloudy.js rename to archive/cloudy/cloudy.js diff --git a/cloudy/cloudy.json b/archive/cloudy/cloudy.json similarity index 100% rename from cloudy/cloudy.json rename to archive/cloudy/cloudy.json diff --git a/comet/comet.js b/archive/comet/comet.js similarity index 100% rename from comet/comet.js rename to archive/comet/comet.js diff --git a/comet/comet.json b/archive/comet/comet.json similarity index 100% rename from comet/comet.json rename to archive/comet/comet.json diff --git a/ddys/ddys.js b/archive/ddys/ddys.js similarity index 100% rename from ddys/ddys.js rename to archive/ddys/ddys.js diff --git a/ddys/ddys.json b/archive/ddys/ddys.json similarity index 100% rename from ddys/ddys.json rename to archive/ddys/ddys.json diff --git a/desu-online/desu-online.js b/archive/desu-online/desu-online.js similarity index 100% rename from desu-online/desu-online.js rename to archive/desu-online/desu-online.js diff --git a/desu-online/desu-online.json b/archive/desu-online/desu-online.json similarity index 100% rename from desu-online/desu-online.json rename to archive/desu-online/desu-online.json diff --git a/divxfilmeonline/divxfilmeonline.js b/archive/divxfilmeonline/divxfilmeonline.js similarity index 100% rename from divxfilmeonline/divxfilmeonline.js rename to archive/divxfilmeonline/divxfilmeonline.js diff --git a/divxfilmeonline/divxfilmeonline.json b/archive/divxfilmeonline/divxfilmeonline.json similarity index 100% rename from divxfilmeonline/divxfilmeonline.json rename to archive/divxfilmeonline/divxfilmeonline.json diff --git a/dmand5/dmand5.js b/archive/dmand5/dmand5.js similarity index 100% rename from dmand5/dmand5.js rename to archive/dmand5/dmand5.js diff --git a/dmand5/dmand5.json b/archive/dmand5/dmand5.json similarity index 100% rename from dmand5/dmand5.json rename to archive/dmand5/dmand5.json diff --git a/donghuanosekai/donghuanosekai.js b/archive/donghuanosekai/donghuanosekai.js similarity index 100% rename from donghuanosekai/donghuanosekai.js rename to archive/donghuanosekai/donghuanosekai.js diff --git a/donghuanosekai/donghuanosekai.json b/archive/donghuanosekai/donghuanosekai.json similarity index 100% rename from donghuanosekai/donghuanosekai.json rename to archive/donghuanosekai/donghuanosekai.json diff --git a/dorabash/dorabash.js b/archive/dorabash/dorabash.js similarity index 100% rename from dorabash/dorabash.js rename to archive/dorabash/dorabash.js diff --git a/dorabash/dorabash.json b/archive/dorabash/dorabash.json similarity index 100% rename from dorabash/dorabash.json rename to archive/dorabash/dorabash.json diff --git a/doramasyt/doramasyt.js b/archive/doramasyt/doramasyt.js similarity index 100% rename from doramasyt/doramasyt.js rename to archive/doramasyt/doramasyt.js diff --git a/doramasyt/doramasyt.json b/archive/doramasyt/doramasyt.json similarity index 100% rename from doramasyt/doramasyt.json rename to archive/doramasyt/doramasyt.json diff --git a/egydead-(Fasel-reuploader)/egydead.js b/archive/egydead-(Fasel-reuploader)/egydead.js similarity index 100% rename from egydead-(Fasel-reuploader)/egydead.js rename to archive/egydead-(Fasel-reuploader)/egydead.js diff --git a/egydead-(Fasel-reuploader)/egydead.json b/archive/egydead-(Fasel-reuploader)/egydead.json similarity index 100% rename from egydead-(Fasel-reuploader)/egydead.json rename to archive/egydead-(Fasel-reuploader)/egydead.json diff --git a/egydead/egydead.js b/archive/egydead/egydead.js similarity index 100% rename from egydead/egydead.js rename to archive/egydead/egydead.js diff --git a/egydead/egydead.json b/archive/egydead/egydead.json similarity index 100% rename from egydead/egydead.json rename to archive/egydead/egydead.json diff --git a/estrenosdoramas/estrenosdoramas.js b/archive/estrenosdoramas/estrenosdoramas.js similarity index 100% rename from estrenosdoramas/estrenosdoramas.js rename to archive/estrenosdoramas/estrenosdoramas.js diff --git a/estrenosdoramas/estrenosdoramas.json b/archive/estrenosdoramas/estrenosdoramas.json similarity index 100% rename from estrenosdoramas/estrenosdoramas.json rename to archive/estrenosdoramas/estrenosdoramas.json diff --git a/filmehd/filmehd.js b/archive/filmehd/filmehd.js similarity index 100% rename from filmehd/filmehd.js rename to archive/filmehd/filmehd.js diff --git a/filmehd/filmehd.json b/archive/filmehd/filmehd.json similarity index 100% rename from filmehd/filmehd.json rename to archive/filmehd/filmehd.json diff --git a/flixlatam/flixlatam.js b/archive/flixlatam/flixlatam.js similarity index 100% rename from flixlatam/flixlatam.js rename to archive/flixlatam/flixlatam.js diff --git a/flixlatam/flixlatam.json b/archive/flixlatam/flixlatam.json similarity index 100% rename from flixlatam/flixlatam.json rename to archive/flixlatam/flixlatam.json diff --git a/franime/franime.js b/archive/franime/franime.js similarity index 100% rename from franime/franime.js rename to archive/franime/franime.js diff --git a/franime/franime.json b/archive/franime/franime.json similarity index 100% rename from franime/franime.json rename to archive/franime/franime.json diff --git a/funmovieslix/funmovieslix.js b/archive/funmovieslix/funmovieslix.js similarity index 100% rename from funmovieslix/funmovieslix.js rename to archive/funmovieslix/funmovieslix.js diff --git a/funmovieslix/funmovieslix.json b/archive/funmovieslix/funmovieslix.json similarity index 100% rename from funmovieslix/funmovieslix.json rename to archive/funmovieslix/funmovieslix.json diff --git a/gnulahd/gnulahd.js b/archive/gnulahd/gnulahd.js similarity index 100% rename from gnulahd/gnulahd.js rename to archive/gnulahd/gnulahd.js diff --git a/gnulahd/gnulahd.json b/archive/gnulahd/gnulahd.json similarity index 100% rename from gnulahd/gnulahd.json rename to archive/gnulahd/gnulahd.json diff --git a/hdhub4u/hdhub4u.js b/archive/hdhub4u/hdhub4u.js similarity index 100% rename from hdhub4u/hdhub4u.js rename to archive/hdhub4u/hdhub4u.js diff --git a/hdhub4u/hdhub4u.json b/archive/hdhub4u/hdhub4u.json similarity index 100% rename from hdhub4u/hdhub4u.json rename to archive/hdhub4u/hdhub4u.json diff --git a/helioscans/helioscans.js b/archive/helioscans/helioscans.js similarity index 100% rename from helioscans/helioscans.js rename to archive/helioscans/helioscans.js diff --git a/helioscans/helioscans.json b/archive/helioscans/helioscans.json similarity index 100% rename from helioscans/helioscans.json rename to archive/helioscans/helioscans.json diff --git a/hicartoon/hicartoon.js b/archive/hicartoon/hicartoon.js similarity index 100% rename from hicartoon/hicartoon.js rename to archive/hicartoon/hicartoon.js diff --git a/hicartoon/hicartoon.json b/archive/hicartoon/hicartoon.json similarity index 100% rename from hicartoon/hicartoon.json rename to archive/hicartoon/hicartoon.json diff --git a/hicine/hicine.js b/archive/hicine/hicine.js similarity index 100% rename from hicine/hicine.js rename to archive/hicine/hicine.js diff --git a/hicine/hicine.json b/archive/hicine/hicine.json similarity index 100% rename from hicine/hicine.json rename to archive/hicine/hicine.json diff --git a/hollymoviehd/hollymoviehd.js b/archive/hollymoviehd/hollymoviehd.js similarity index 100% rename from hollymoviehd/hollymoviehd.js rename to archive/hollymoviehd/hollymoviehd.js diff --git a/hollymoviehd/hollymoviehd.json b/archive/hollymoviehd/hollymoviehd.json similarity index 100% rename from hollymoviehd/hollymoviehd.json rename to archive/hollymoviehd/hollymoviehd.json diff --git a/honadrama/honadrama.js b/archive/honadrama/honadrama.js similarity index 100% rename from honadrama/honadrama.js rename to archive/honadrama/honadrama.js diff --git a/honadrama/honadrama.json b/archive/honadrama/honadrama.json similarity index 100% rename from honadrama/honadrama.json rename to archive/honadrama/honadrama.json diff --git a/iyinghua/iyinghua.js b/archive/iyinghua/iyinghua.js similarity index 100% rename from iyinghua/iyinghua.js rename to archive/iyinghua/iyinghua.js diff --git a/iyinghua/iyinghua.json b/archive/iyinghua/iyinghua.json similarity index 100% rename from iyinghua/iyinghua.json rename to archive/iyinghua/iyinghua.json diff --git a/jiao/jiao.js b/archive/jiao/jiao.js similarity index 100% rename from jiao/jiao.js rename to archive/jiao/jiao.js diff --git a/jiao/jiao.json b/archive/jiao/jiao.json similarity index 100% rename from jiao/jiao.json rename to archive/jiao/jiao.json diff --git a/kawaiines/kawaiines.js b/archive/kawaiines/kawaiines.js similarity index 100% rename from kawaiines/kawaiines.js rename to archive/kawaiines/kawaiines.js diff --git a/kawaiines/kawaiines.json b/archive/kawaiines/kawaiines.json similarity index 100% rename from kawaiines/kawaiines.json rename to archive/kawaiines/kawaiines.json diff --git a/kissasian/kissasian.js b/archive/kissasian/kissasian.js similarity index 100% rename from kissasian/kissasian.js rename to archive/kissasian/kissasian.js diff --git a/kissasian/kissasian.json b/archive/kissasian/kissasian.json similarity index 100% rename from kissasian/kissasian.json rename to archive/kissasian/kissasian.json diff --git a/kisscartoon/kisscartoon.js b/archive/kisscartoon/kisscartoon.js similarity index 100% rename from kisscartoon/kisscartoon.js rename to archive/kisscartoon/kisscartoon.js diff --git a/kisscartoon/kisscartoon.json b/archive/kisscartoon/kisscartoon.json similarity index 100% rename from kisscartoon/kisscartoon.json rename to archive/kisscartoon/kisscartoon.json diff --git a/kuramanime/kuramanime.js b/archive/kuramanime/kuramanime.js similarity index 100% rename from kuramanime/kuramanime.js rename to archive/kuramanime/kuramanime.js diff --git a/kuramanime/kuramanime.json b/archive/kuramanime/kuramanime.json similarity index 100% rename from kuramanime/kuramanime.json rename to archive/kuramanime/kuramanime.json diff --git a/mapple/mapple.js b/archive/mapple/mapple.js similarity index 100% rename from mapple/mapple.js rename to archive/mapple/mapple.js diff --git a/mapple/mapple.json b/archive/mapple/mapple.json similarity index 100% rename from mapple/mapple.json rename to archive/mapple/mapple.json diff --git a/mavanimes/mavanimes.js b/archive/mavanimes/mavanimes.js similarity index 100% rename from mavanimes/mavanimes.js rename to archive/mavanimes/mavanimes.js diff --git a/mavanimes/mavanimes.json b/archive/mavanimes/mavanimes.json similarity index 100% rename from mavanimes/mavanimes.json rename to archive/mavanimes/mavanimes.json diff --git a/mediafusion/mediafusion.js b/archive/mediafusion/mediafusion.js similarity index 100% rename from mediafusion/mediafusion.js rename to archive/mediafusion/mediafusion.js diff --git a/mediafusion/mediafusion.json b/archive/mediafusion/mediafusion.json similarity index 100% rename from mediafusion/mediafusion.json rename to archive/mediafusion/mediafusion.json diff --git a/megakino/megakino.js b/archive/megakino/megakino.js similarity index 100% rename from megakino/megakino.js rename to archive/megakino/megakino.js diff --git a/megakino/megakino.json b/archive/megakino/megakino.json similarity index 100% rename from megakino/megakino.json rename to archive/megakino/megakino.json diff --git a/movi/movi.js b/archive/movi/movi.js similarity index 100% rename from movi/movi.js rename to archive/movi/movi.js diff --git a/movi/movi.json b/archive/movi/movi.json similarity index 100% rename from movi/movi.json rename to archive/movi/movi.json diff --git a/novelcool/novelcool.js b/archive/novelcool/novelcool.js similarity index 100% rename from novelcool/novelcool.js rename to archive/novelcool/novelcool.js diff --git a/novelcool/novelcool.json b/archive/novelcool/novelcool.json similarity index 100% rename from novelcool/novelcool.json rename to archive/novelcool/novelcool.json diff --git a/onlinemovieshindi/onlinemovieshindi.js b/archive/onlinemovieshindi/onlinemovieshindi.js similarity index 100% rename from onlinemovieshindi/onlinemovieshindi.js rename to archive/onlinemovieshindi/onlinemovieshindi.js diff --git a/onlinemovieshindi/onlinemovieshindi.json b/archive/onlinemovieshindi/onlinemovieshindi.json similarity index 100% rename from onlinemovieshindi/onlinemovieshindi.json rename to archive/onlinemovieshindi/onlinemovieshindi.json diff --git a/pelisplushd/pelisplushd.js b/archive/pelisplushd/pelisplushd.js similarity index 100% rename from pelisplushd/pelisplushd.js rename to archive/pelisplushd/pelisplushd.js diff --git a/pelisplushd/pelisplushd.json b/archive/pelisplushd/pelisplushd.json similarity index 100% rename from pelisplushd/pelisplushd.json rename to archive/pelisplushd/pelisplushd.json diff --git a/prmovies/prmovies.js b/archive/prmovies/prmovies.js similarity index 100% rename from prmovies/prmovies.js rename to archive/prmovies/prmovies.js diff --git a/prmovies/prmovies.json b/archive/prmovies/prmovies.json similarity index 100% rename from prmovies/prmovies.json rename to archive/prmovies/prmovies.json diff --git a/shahidd4u/shahidd4u.js b/archive/shahidd4u/shahidd4u.js similarity index 100% rename from shahidd4u/shahidd4u.js rename to archive/shahidd4u/shahidd4u.js diff --git a/shahidd4u/shahidd4u.json b/archive/shahidd4u/shahidd4u.json similarity index 100% rename from shahidd4u/shahidd4u.json rename to archive/shahidd4u/shahidd4u.json diff --git a/smashystream/smashystream.js b/archive/smashystream/smashystream.js similarity index 100% rename from smashystream/smashystream.js rename to archive/smashystream/smashystream.js diff --git a/smashystream/smashystream.json b/archive/smashystream/smashystream.json similarity index 100% rename from smashystream/smashystream.json rename to archive/smashystream/smashystream.json diff --git a/soaperlive/soaperlive.js b/archive/soaperlive/soaperlive.js similarity index 100% rename from soaperlive/soaperlive.js rename to archive/soaperlive/soaperlive.js diff --git a/soaperlive/soaperlive.json b/archive/soaperlive/soaperlive.json similarity index 100% rename from soaperlive/soaperlive.json rename to archive/soaperlive/soaperlive.json diff --git a/sololatino/sololatino.js b/archive/sololatino/sololatino.js similarity index 100% rename from sololatino/sololatino.js rename to archive/sololatino/sololatino.js diff --git a/sololatino/sololatino.json b/archive/sololatino/sololatino.json similarity index 100% rename from sololatino/sololatino.json rename to archive/sololatino/sololatino.json diff --git a/soundcloud/soundcloud.js b/archive/soundcloud/soundcloud.js similarity index 100% rename from soundcloud/soundcloud.js rename to archive/soundcloud/soundcloud.js diff --git a/soundcloud/soundcloud.json b/archive/soundcloud/soundcloud.json similarity index 100% rename from soundcloud/soundcloud.json rename to archive/soundcloud/soundcloud.json diff --git a/temp/temp.js b/archive/temp/temp.js similarity index 100% rename from temp/temp.js rename to archive/temp/temp.js diff --git a/temp/temp.json b/archive/temp/temp.json similarity index 100% rename from temp/temp.json rename to archive/temp/temp.json diff --git a/test/.gitignore b/archive/test/.gitignore similarity index 100% rename from test/.gitignore rename to archive/test/.gitignore diff --git a/test/debug_viewer.html b/archive/test/debug_viewer.html similarity index 100% rename from test/debug_viewer.html rename to archive/test/debug_viewer.html diff --git a/test/host.py b/archive/test/host.py similarity index 100% rename from test/host.py rename to archive/test/host.py diff --git a/test/modulehost.exe b/archive/test/modulehost.exe similarity index 100% rename from test/modulehost.exe rename to archive/test/modulehost.exe diff --git a/test/requirements.txt b/archive/test/requirements.txt similarity index 100% rename from test/requirements.txt rename to archive/test/requirements.txt diff --git a/test/run_module.beta.js b/archive/test/run_module.beta.js similarity index 100% rename from test/run_module.beta.js rename to archive/test/run_module.beta.js diff --git a/toonitalia/toonitalia.js b/archive/toonitalia/toonitalia.js similarity index 100% rename from toonitalia/toonitalia.js rename to archive/toonitalia/toonitalia.js diff --git a/toonitalia/toonitalia.json b/archive/toonitalia/toonitalia.json similarity index 100% rename from toonitalia/toonitalia.json rename to archive/toonitalia/toonitalia.json diff --git a/torrentio/torrentio.js b/archive/torrentio/torrentio.js similarity index 100% rename from torrentio/torrentio.js rename to archive/torrentio/torrentio.js diff --git a/torrentio/torrentio.json b/archive/torrentio/torrentio.json similarity index 100% rename from torrentio/torrentio.json rename to archive/torrentio/torrentio.json diff --git a/vegamovies/vegamovies.js b/archive/vegamovies/vegamovies.js similarity index 100% rename from vegamovies/vegamovies.js rename to archive/vegamovies/vegamovies.js diff --git a/vegamovies/vegamovies.json b/archive/vegamovies/vegamovies.json similarity index 100% rename from vegamovies/vegamovies.json rename to archive/vegamovies/vegamovies.json diff --git a/verseriesonline/verseriesonline.js b/archive/verseriesonline/verseriesonline.js similarity index 100% rename from verseriesonline/verseriesonline.js rename to archive/verseriesonline/verseriesonline.js diff --git a/verseriesonline/verseriesonline.json b/archive/verseriesonline/verseriesonline.json similarity index 100% rename from verseriesonline/verseriesonline.json rename to archive/verseriesonline/verseriesonline.json diff --git a/vidsrc/vidsrc.js b/archive/vidsrc/vidsrc.js similarity index 100% rename from vidsrc/vidsrc.js rename to archive/vidsrc/vidsrc.js diff --git a/vidsrc/vidsrc.json b/archive/vidsrc/vidsrc.json similarity index 100% rename from vidsrc/vidsrc.json rename to archive/vidsrc/vidsrc.json diff --git a/wearechecking/wearechecking.js b/archive/wearechecking/wearechecking.js similarity index 100% rename from wearechecking/wearechecking.js rename to archive/wearechecking/wearechecking.js diff --git a/wearechecking/wearechecking.json b/archive/wearechecking/wearechecking.json similarity index 100% rename from wearechecking/wearechecking.json rename to archive/wearechecking/wearechecking.json diff --git a/x/x.js b/archive/x/x.js similarity index 100% rename from x/x.js rename to archive/x/x.js diff --git a/x/x.json b/archive/x/x.json similarity index 100% rename from x/x.json rename to archive/x/x.json diff --git a/xprime/xprime.js b/archive/xprime/xprime.js similarity index 100% rename from xprime/xprime.js rename to archive/xprime/xprime.js diff --git a/xprime/xprime.json b/archive/xprime/xprime.json similarity index 100% rename from xprime/xprime.json rename to archive/xprime/xprime.json diff --git a/yummyanime/yummyanime.js b/archive/yummyanime/yummyanime.js similarity index 100% rename from yummyanime/yummyanime.js rename to archive/yummyanime/yummyanime.js diff --git a/yummyanime/yummyanime.json b/archive/yummyanime/yummyanime.json similarity index 100% rename from yummyanime/yummyanime.json rename to archive/yummyanime/yummyanime.json diff --git a/archive_folders.py b/archive_folders.py new file mode 100644 index 0000000..04f7ea9 --- /dev/null +++ b/archive_folders.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +import json +import os +import shutil +from pathlib import Path +from typing import Set + +INDEX_FILE = "index.json" +ARCHIVE_FOLDER = "archive" +RESERVED_PATHS = { + '.git', '.gitignore', '.github', 'node_modules', '.vscode', + 'archive', '.idea', '__pycache__', '.DS_Store', '.env', '.gitea' +} + + +def load_index() -> Set[str]: + try: + with open(INDEX_FILE, 'r', encoding='utf-8') as f: + data = json.load(f) + print(f"Loaded {INDEX_FILE}") + + indexed_folders = set() + for key in data.keys(): + folder = key.split('/')[0] + indexed_folders.add(folder) + + print(f"Found {len(indexed_folders)} indexed folders") + return indexed_folders + except FileNotFoundError: + print(f"Error: {INDEX_FILE} not found") + raise + except json.JSONDecodeError as e: + print(f"Error parsing {INDEX_FILE}: {e}") + raise + + +def get_all_folders() -> Set[str]: + all_folders = set() + try: + for item in os.listdir('.'): + item_path = os.path.join('.', item) + if os.path.isdir(item_path) and item not in RESERVED_PATHS: + all_folders.add(item) + + print(f"Found {len(all_folders)} total folders in repo") + return all_folders + except Exception as e: + print(f"Error scanning directories: {e}") + raise + + +def create_archive_folder() -> None: + if not os.path.exists(ARCHIVE_FOLDER): + os.makedirs(ARCHIVE_FOLDER) + print(f"Created '{ARCHIVE_FOLDER}' folder") + else: + print(f"'{ARCHIVE_FOLDER}' folder already exists") + + +def archive_folders(indexed_folders: Set[str], all_folders: Set[str]) -> None: + folders_to_archive = all_folders - indexed_folders + + if not folders_to_archive: + print(f"\nAll folders are indexed, nothing to archive") + return + + print(f"\nFound {len(folders_to_archive)} folders to archive:") + + for folder in sorted(folders_to_archive): + source = os.path.join('.', folder) + destination = os.path.join(ARCHIVE_FOLDER, folder) + + try: + if os.path.exists(destination): + print(f"Skipping '{folder}' (already exists in archive)") + continue + + shutil.move(source, destination) + print(f"Archived: {folder}") + except Exception as e: + print(f"Error archiving '{folder}': {e}") + + +def main(): + """Main execution function.""" + print("=" * 60) + print("FOLDER ARCHIVAL SCRIPT") + print("=" * 60) + print() + + try: + indexed_folders = load_index() + + all_folders = get_all_folders() + + create_archive_folder() + + archive_folders(indexed_folders, all_folders) + + print("\n" + "=" * 60) + print("ARCHIVAL COMPLETE") + print("=" * 60) + + except Exception as e: + print(f"\nScript failed: {e}") + return 1 + + return 0 + + +if __name__ == "__main__": + exit(main()) diff --git a/index.json b/index.json index aef1694..528aa02 100644 --- a/index.json +++ b/index.json @@ -151,28 +151,6 @@ "supportsLuna": true, "supportsMojuru": true }, - "gnulahd/gnulahd.json": { - "sourceName": "GnulaHD", - "iconUrl": "https://i3.wp.com/ww3.gnulahd.nu/wp-content/uploads/2025/07/cropped-faviconhd3-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://ww3.gnulahd.nu/", - "searchBaseUrl": "https://ww3.gnulahd.nu/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/gnulahd/gnulahd.js", - "type": "anime/shows/movies", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/gnulahd/gnulahd.json" - }, "hianime/hianime.json": { "sourceName": "HiAnime", "iconUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/hianime/iconapp.png", @@ -327,28 +305,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/cuevana3/cuevana3.json" }, - "hdhub4u/hdhub4u.json": { - "sourceName": "hdhub4u", - "iconUrl": "https://hdhub4u.navy/wp-content/uploads/2021/05/cropped-cropped-1-1-1-2-1-180x180.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Hindi", - "streamType": "MKV", - "quality": "4K - 1080p", - "baseUrl": "https://hdhub4u.co/", - "searchBaseUrl": "https://hdhub4u.co/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/hdhub4u/hdhub4u.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/hdhub4u/hdhub4u.json" - }, "kimcartoon/kimcartoon.json": { "sourceName": "KimCartoon", "iconUrl": "https://i2.wp.com/kimcartoon.com.co/wp-content/uploads/2023/03/favicon.png", @@ -370,48 +326,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kimcartoon/kimcartoon.json" }, - "egydead/egydead.json": { - "sourceName": "EgyDead", - "iconUrl": "https://tv3.egydead.live/wp-content/uploads/2019/01/cropped-yXYdE2f-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "Arabic", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://tv3.egydead.live/", - "searchBaseUrl": "https://tv3.egydead.live/?s=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/egydead/egydead.js", - "type": "shows/movies/anime", - "asyncJS": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/egydead/egydead.json" - }, - "animefhd/animefhd.json": { - "sourceName": "AnimeFHD", - "iconUrl": "https://animefhd.net/wp-content/uploads/2024/12/270.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.2", - "language": "Portuguese (SUB)", - "streamType": "MP4", - "quality": "1080p", - "baseUrl": "https://animefhd.net/", - "searchBaseUrl": "https://animefhd.net/?s=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animefhd/animefhd.js", - "asyncJS": true, - "type": "anime", - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animefhd/animefhd.json" - }, "s.to/sToEngDub.json": { "sourceName": "s.to (ENG DUB)", "iconUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/s.to/sto.png", @@ -433,29 +347,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/s.to/sToEngDub.json" }, - "anicore/anicore.json": { - "sourceName": "Anicore", - "iconUrl": "https://anicore.tv/_app/immutable/assets/favicon.Bq_xX7js.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://anicore.tv/", - "searchBaseUrl": "https://anicore.tv/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anicore/anicore.js", - "type": "anime", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anicore/anicore.json" - }, "wikipedia/wikipedia.json": { "sourceName": "Public Domain in the US", "iconUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/wikipedia/wikipedia-logo.png", @@ -512,52 +403,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/comix/comix.json" }, - "anroll/anroll.json": { - "sourceName": "AnimesRoll", - "iconUrl": "https://files.catbox.moe/9lx2bp.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.anroll.net/", - "searchBaseUrl": "https://www.anroll.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anroll/anroll.js", - "type": "anime", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anroll/anroll.json" - }, - "animeytx/animeytx.json": { - "sourceName": "AnimeYTX", - "iconUrl": "https://i1.wp.com/animeytx.net/wp-content/uploads/2024/09/cropped-hgn584ghj45-1-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://animeytx.net/", - "searchBaseUrl": "https://animeytx.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animeytx/animeytx.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animeytx/animeytx.json" - }, "himovies/himovies.json": { "sourceName": "HiMovies", "iconUrl": "https://himovies.sx/images/group_1/theme_1/favicon.png", @@ -617,70 +462,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anihq/anihq.json" }, - "egydead-(Fasel-reuploader)/egydead.json": { - "sourceName": "EgyDead (Fasel reuploader)", - "iconUrl": "https://tv3.egydead.live/wp-content/uploads/2019/01/cropped-yXYdE2f-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "Arabic", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://egydead.com.co/", - "searchBaseUrl": "https://egydead.com.co/?s=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/egydead%20(Fasel%20reuploader)/egydead.js", - "type": "shows/movies/anime", - "asyncJS": true, - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/egydead-(Fasel-reuploader)/egydead.json" - }, - "novelcool/novelcool.json": { - "sourceName": "NovelCool", - "iconUrl": "https://www.novelcool.com/files/img/144.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "English", - "streamType": "novels", - "quality": "N/A", - "baseUrl": "https://www.novelcool.com/", - "searchBaseUrl": "https://www.novelcool.com/search/?wd=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/novelcool/novelcool.js", - "type": "novels", - "asyncJS": true, - "novel": true, - "supportsSora": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/novelcool/novelcool.json" - }, - "desu-online/desu-online.json": { - "sourceName": "Desu-Online", - "iconUrl": "https://desu-online.pl/wp-content/uploads/2021/03/53454540000-300x300.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Polish", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://desu-online.pl/", - "searchBaseUrl": "https://desu-online.pl/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/desu-online/desu-online.js", - "type": "anime", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/desu-online/desu-online.json" - }, "mangacloud/mangacloud.json": { "sourceName": "MangaCloud", "iconURL": "https://files.catbox.moe/v73ujk.png", @@ -832,51 +613,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animekai/dub/animekai.json" }, - "franime/franime.json": { - "sourceName": "Franime", - "iconUrl": "https://franime.fr/logos/apple-touch-icon.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.3", - "language": "French (DUB/SUB)", - "streamType": "mp4", - "quality": "1080p", - "baseUrl": "https://franime.fr/", - "searchBaseUrl": "https://franime.fr/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/franime/franime.js", - "type": "anime", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/franime/franime.json" - }, - "divxfilmeonline/divxfilmeonline.json": { - "sourceName": "DivXFilmeOnline", - "iconUrl": "https://www1.divxfilmeonline.net/wp-content/uploads/2015/11/cropped-movies-40-180x180.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Romanian (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://divxfilmeonline.net/", - "searchBaseUrl": "https://divxfilmeonline.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/divxfilmeonline/divxfilmeonline.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/divxfilmeonline/divxfilmeonline.json" - }, "animelib/animelib.json": { "sourceName": "AnimeLib", "iconUrl": "https://i.ibb.co/rfktbGyD/Untitled-design.png", @@ -923,29 +659,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/crimsonfansubs/crimsonfansubs.json" }, - "animesdrive/animesdrive.json": { - "sourceName": "AnimesDrive", - "iconUrl": "https://animesdrive.blog/wp-content/uploads/2025/08/cropped-ico-1-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Portuguese", - "streamType": "mp4", - "quality": "1080p", - "baseUrl": "https://animesdrive.blog/", - "searchBaseUrl": "https://animesdrive.blog/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animesdrive/animesdrive.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": true, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animesdrive/animesdrive.json" - }, "fireanime/FireAnimeGer.json": { "sourceName": "FireAnime SUB", "iconUrl": "https://i.ibb.co/dJ1SN5ch/favicon.png", @@ -1060,28 +773,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animevost/animevost.json" }, - "cloudy/cloudy.json": { - "sourceName": "Cloudy", - "iconUrl": "https://cloudy.pk/wp-content/uploads/2018/02/cloudy.pk-icon-200x200.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Hindi (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://cloudy.pk/", - "searchBaseUrl": "https://cloudy.pk/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/cloudy/cloudy.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/cloudy/cloudy.json" - }, "animedefenders/animedefenders.json": { "sourceName": "AnimeDefenders", "iconUrl": "https://cdn.jsdelivr.net/gh/756751uosmaqy/vjplayer@main/2fcbd487e5cacb41cbe7802d5ccfc0dc.png", @@ -1141,27 +832,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/videasy/videasy.json" }, - "arablionz/arablionz.json": { - "sourceName": "ArabLionz", - "iconUrl": "https://arablionztv.cam/wp-content/uploads/2023/04/vRA6ewKk_400x400-280x280.jpeg", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Arabic", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://arablionztv.cam/", - "searchBaseUrl": "https://arablionztv.cam/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/arablionz/arablionz.js", - "type": "shows/movies", - "asyncJS": true, - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/arablionz/arablionz.json" - }, "novelbin/novelbin.json": { "sourceName": "NovelBin", "iconUrl": "https://novelbin.com/img/logo.png", @@ -1183,29 +853,6 @@ "supportsSora": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/novelbin/novelbin.json" }, - "az-animex/az-animex.json": { - "sourceName": "AZ-Animex", - "iconUrl": "https://www.az-animex.com/wp-content/uploads/2023/11/Logo-icono-144x144-1.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.az-animex.com/", - "searchBaseUrl": "https://www.az-animex.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/az-animex/az-animex.js", - "type": "Anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/az-animex/az-animex.json" - }, "animeunity/animeuntiy.json": { "sourceName": "AnimeUnity", "iconUrl": "https://github.com/cottonable/Ryu-preservation/blob/2f10226aa087154974a70c1ec78aa83a47daced9/Ryu/Assets.xcassets/Sources/AnimeUnity.imageset/apple-touch-icon.jpg?raw=true", @@ -1248,71 +895,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/s.to/sToGerDub.json" }, - "helioscans/helioscans.json": { - "sourceName": "HelioScan", - "iconUrl": "https://wsrv.nl/?url=image.meowing.org/uploads/_9FxZ8P7Tik&w=44", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "English", - "streamType": "novels", - "quality": "N/A", - "baseUrl": "https://helioscans.com/", - "searchBaseUrl": "https://helioscans.com/%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/helioscans/helioscans.js", - "type": "novels", - "asyncJS": true, - "novel": true, - "downloadSupport": false, - "supportsSora": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/helioscans/helioscans.json" - }, - "estrenosdoramas/estrenosdoramas.json": { - "sourceName": "EstrenosDoramas", - "iconUrl": "https://i0.wp.com/estrenosdoramas.es/wp-content/uploads/2023/12/cropped-unnamed-7-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://vidmoly.to/", - "searchBaseUrl": "https://vidmoly.to/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/estrenosdoramas/estrenosdoramas.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/estrenosdoramas/estrenosdoramas.json" - }, - "megakino/megakino.json": { - "sourceName": "MegaKino", - "iconUrl": "https://megakino.vip/wp-content/uploads/2024/03/cropped-favicon-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "German", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://megakino.com/", - "searchBaseUrl": "https://megakino.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/megakino/megakino.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/megakino/megakino.json" - }, "topstreamfilm/topstreamfilm.json": { "sourceName": "TopStreamFilm", "iconUrl": "https://www.topstreamfilm.live/templates/topstreamfilm/images/cropped-topstreamIcon-192x192.png", @@ -1336,52 +918,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/topstreamfilm/topstreamfilm.json" }, - "mavanimes/mavanimes.json": { - "sourceName": "MavAnimes", - "iconUrl": "https://www.mavanimes.co/wp-content/uploads/2018/03/cropped-mav-192x192.jpg", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "French (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.mavanimes.co/", - "searchBaseUrl": "https://www.mavanimes.co/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mavanimes/mavanimes.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mavanimes/mavanimes.json" - }, - "toonitalia/toonitalia.json": { - "sourceName": "ToonItalia", - "iconUrl": "https://toonitalia.xyz/wp-content/uploads/2023/08/cropped-Majintoon-192x192.jpg", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "Italian", - "streamType": "HLS", - "encrypted": true, - "quality": "1080p", - "baseUrl": "https://toonitalia.xyz/", - "searchBaseUrl": "https://toonitalia.xyz/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/toonitalia/toonitalia.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/toonitalia/toonitalia.json" - }, "streamingunity/streamingunity.json": { "sourceName": "StreamingUnity", "iconUrl": "https://virginiapertutte.it/templates/sub-ita/images/logo.png", @@ -1402,51 +938,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/streamingunity/streamingunity.json" }, - "cinecalidad/cinecalidad.json": { - "sourceName": "CineCalidad", - "iconUrl": "https://www.cinecalidad.ec/wp-content/themes/Cinecalidad/assets/img/favicon.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.cinecalidad.ec/", - "searchBaseUrl": "https://www.cinecalidad.ec/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/cinecalidad/cinecalidad.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/cinecalidad/cinecalidad.json" - }, - "animesonline/animesonline.json": { - "sourceName": "AnimesOnline", - "iconUrl": "https://animesonline.cloud/wp-content/uploads/2025/06/Icone.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Portuguese", - "streamType": "mp4", - "quality": "1080p", - "baseUrl": "https://animesonline.cloud", - "searchBaseUrl": "https://animesonline.cloud", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animesonline/animesonline.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": true, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animesonline/animesonline.json" - }, "animesaturn/animesaturn.json": { "sourceName": "AnimeSaturn", "iconUrl": "https://www.animesaturn.cx/immagini/apple-touch-icon.png", @@ -1490,50 +981,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/onetouch/onetouch.json" }, - "x/x.json": { - "sourceName": "X", - "iconUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRJO2SeTQHtzL024EkApdOOoQ1QlTxBsqKCSQ&s", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://x.com/", - "searchBaseUrl": "https://x.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/x/x.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/x/x.json" - }, - "movi/movi.json": { - "sourceName": "Movi", - "iconUrl": "https://www.movi.pk/wp-content/uploads/2024/12/favicon.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Hindi (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.movi.pk/", - "searchBaseUrl": "https://www.movi.pk/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/movi/movi.js", - "type": "movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/movi/movi.json" - }, "animenix/animenix.json": { "sourceName": "AnimeNix", "iconUrl": "https://i3.wp.com/animenix.com/wp-content/uploads/2024/11/cropped-favicon-1-192x192.png", @@ -1557,119 +1004,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animenix/animenix.json" }, - "wearechecking/wearechecking.json": { - "sourceName": "WeAreChecking", - "iconUrl": "https://files.catbox.moe/lpsbf8.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://wearechecking.wtf/", - "searchBaseUrl": "https://wearechecking.wtf/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/wearechecking/wearechecking.js", - "type": "shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/wearechecking/wearechecking.json" - }, - "animemeow/animemeow.json": { - "sourceName": "AnimeMeow", - "iconUrl": "https://files.catbox.moe/5phbht.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://animemeow.xyz/", - "searchBaseUrl": "https://animemeow.xyz/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animemeow/animemeow.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animemeow/animemeow.json" - }, - "dorabash/dorabash.json": { - "sourceName": "DoraBash", - "iconUrl": "https://dorabash.com/wp-content/uploads/2023/06/cropped-Untitled_design-removebg-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.2", - "language": "Hindi", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://dorabash.com/", - "searchBaseUrl": "https://dorabash.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/dorabash/dorabash.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/dorabash/dorabash.json" - }, - "flixlatam/flixlatam.json": { - "sourceName": "FlixLatam", - "iconUrl": "https://flixlatam.com/wp-content/uploads/2022/04/cropped-Series-Latinoamerica-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://flixlatam.com/", - "searchBaseUrl": "https://flixlatam.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/flixlatam/flixlatam.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/flixlatam/flixlatam.json" - }, - "kawaiines/kawaiines.json": { - "sourceName": "Kawaiines", - "iconUrl": "https://kawaiines.in/logo.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Hindi", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://kawaiines.in/", - "searchBaseUrl": "https://kawaiines.in/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kawaiines/kawaiines.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kawaiines/kawaiines.json" - }, "tidal/tidal.json": { "sourceName": "Tidal", "iconUrl": "https://images.icon-icons.com/2429/PNG/512/tidal_logo_icon_147227.png", @@ -1715,28 +1049,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anime-sama/anime-sama.json" }, - "soundcloud/soundcloud.json": { - "sourceName": "Soundcloud", - "iconUrl": "https://cdn-icons-png.flaticon.com/512/145/145809.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Music", - "streamType": "HLS", - "quality": "128 kbps", - "baseUrl": "https://soundcloud.com/", - "searchBaseUrl": "https://soundcloud.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/soundcloud/soundcloud.js", - "asyncJS": true, - "softsub": true, - "type": "anime/movies/shows", - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/soundcloud/soundcloud.json" - }, "luciferdonghua/luciferdonghua.json": { "sourceName": "LuciferDonghua", "iconUrl": "https://i.ibb.co/MwKW01H/cropped-lucifer-donghua-DP-192x192-webp.png", @@ -1760,28 +1072,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/luciferdonghua/luciferdonghua.json" }, - "smashystream/smashystream.json": { - "sourceName": "SmashyStream", - "iconUrl": "https://smashystream.xyz/icon.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.3", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://smashystream.xyz/", - "searchBaseUrl": "https://smashystream.xyz/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/smashystream/smashystream.js", - "type": "shows/movies/anime", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/smashystream/smashystream.json" - }, "readnovels/readnovels.json": { "sourceName": "ReadNovels", "iconUrl": "https://readnovel.eu/apple-touch-icon.png", @@ -1863,28 +1153,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mangapark/mangapark.json" }, - "kissasian/kissasian.json": { - "sourceName": "KissAsian", - "iconUrl": "https://kissasian.cam/wp-content/uploads/2020/02/cropped-icon-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Chinese", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://zjet7.com", - "searchBaseUrl": "https://zjet7.com", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kissasian/kissasian.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kissasian/kissasian.json" - }, "hexa/hexa.json": { "sourceName": "Hexa", "iconUrl": "https://files.catbox.moe/8ua0ls.png", @@ -1930,97 +1198,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animeler/animeler.json" }, - "shahidd4u/shahidd4u.json": { - "sourceName": "SHahidd4u", - "iconUrl": "https://files.catbox.moe/njj6oe.webp", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "Arabic", - "streamType": "HLS", - "encrypted": true, - "quality": "1080p", - "baseUrl": "https://shahidd4u.net/", - "searchBaseUrl": "https://shahidd4u.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/shahidd4u/shahidd4u.js", - "type": "movies/shows", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/shahidd4u/shahidd4u.json" - }, - "verseriesonline/verseriesonline.json": { - "sourceName": "VerSeriesOnline", - "iconUrl": "https://www.verseriesonline.net/images/faveicon.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.verseriesonline.net/", - "searchBaseUrl": "https://www.verseriesonline.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/verseriesonline/verseriesonline.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/verseriesonline/verseriesonline.json" - }, - "checkmate/checkmate.json": { - "sourceName": "Tsumi (詰み) - Literally Everything 2.0", - "iconUrl": "https://files.catbox.moe/krovkt.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.6", - "language": "English", - "streamType": "HLS", - "quality": "4K", - "baseUrl": "https://google.com/", - "searchBaseUrl": "https://google.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/checkmate/checkmate.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/checkmate/checkmate.json" - }, - "beatz-anime/beatz-anime.json": { - "sourceName": "Beatz-Anime", - "iconUrl": "https://files.catbox.moe/vij8dw.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.beatz-anime.net/", - "searchBaseUrl": "https://www.beatz-anime.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/beatz-anime/beatz-anime.js", - "type": "Anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "note": "Use external player!", - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/beatz-anime/beatz-anime.json" - }, "monoschinos2/monoschinos2.json": { "sourceName": "Monoschinos2", "iconUrl": "https://files.catbox.moe/jz9l88.png", @@ -2044,29 +1221,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/monoschinos2/monoschinos2.json" }, - "animebum/animebum.json": { - "sourceName": "AnimeBum", - "iconUrl": "https://files.catbox.moe/i96cs1.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.animebum.net/", - "searchBaseUrl": "https://www.animebum.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animebum/animebum.js", - "type": "Anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animebum/animebum.json" - }, "animeheaven/animeheaven.json": { "sourceName": "AnimeHeaven", "iconUrl": "https://animeheaven.me/ah_logo.png", @@ -2212,27 +1366,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/aksv/aksv.json" }, - "arabseed/arabseed.json": { - "sourceName": "ArabSeed", - "iconUrl": "https://a.asd.homes/wp-content/themes/Elshaikh2021/UI/images/logo333.webp", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.2", - "language": "Arabic", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://a.asd.homes/", - "searchBaseUrl": "https://a.asd.homes/?s=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/arabseed/arabseed.js", - "type": "shows/movies/anime", - "asyncJS": true, - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/arabseed/arabseed.json" - }, "readnovelfull/readnovelfull.json": { "sourceName": "ReadNovelFull", "iconUrl": "https://readnovelfull.com/img/logo.png", @@ -2318,28 +1451,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/dev/dev.json" }, - "funmovieslix/funmovieslix.json": { - "sourceName": "FunMoviesLix", - "iconUrl": "https://funmovieslix.com/wp-content/uploads/2023/12/cropped-download.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Hindi", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://funmovieslix.com/", - "searchBaseUrl": "https://funmovieslix.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/funmovieslix/funmovieslix.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/funmovieslix/funmovieslix.json" - }, "filmpalast/filmpalast.json": { "sourceName": "Filmpalast", "iconUrl": "https://api.jm26.net/sora-modules/filmpalast/filmpalast.ico", @@ -2362,75 +1473,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/filmpalast/filmpalast.json" }, - "asialiveaction/asialiveaction.json": { - "sourceName": "AsiaLiveAction", - "iconUrl": "https://asialiveaction.com/wp-content/uploads/cropped-favicon-200x200.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://asialiveaction.com/", - "searchBaseUrl": "https://asialiveaction.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/asialiveaction/asialiveaction.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/asialiveaction/asialiveaction.json" - }, - "kisscartoon/kisscartoon.json": { - "sourceName": "KissCartoon", - "iconUrl": "https://files.catbox.moe/ajv0go.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://kisscartoon.sh/", - "searchBaseUrl": "https://kisscartoon.sh/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kisscartoon/kisscartoon.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "note": "Only works with nPlayer: https://nplayer.com/", - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kisscartoon/kisscartoon.json" - }, - "anime4up/anime4up.json": { - "sourceName": "Anime4Up", - "iconUrl": "https://ww.anime4up.rest/wp-content/uploads/2019/03/Anime4up-Icon-1.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "Arabic", - "streamType": "HLS", - "encrypted": true, - "quality": "1080p", - "baseUrl": "https://uqload.cx/", - "searchBaseUrl": "https://uqload.cx/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anime4up/anime4up.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": true, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anime4up/anime4up.json" - }, "kawaiifu/kawaiifu.json": { "sourceName": "Kawaiifu", "iconUrl": "https://kawaiifu.com/wp-content/uploads/2018/05/Kawaiifu_favicon.png", @@ -2490,109 +1532,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/rumanhua1/rumanhua.json" }, - "atsu/atsu.json": { - "sourceName": "Atsu", - "iconURL": "https://atsu.moe/favicon/apple-touch-icon-180x180.png", - "version": "1.0", - "language": "English", - "scriptURL": "https://git.luna-app.eu/50n50/sources/raw/branch/main/atsu/atsu.js", - "author": { - "name": "50/50", - "iconURL": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/atsu/atsu.json" - }, - "sololatino/sololatino.json": { - "sourceName": "SoloLatino", - "iconUrl": "https://sololatino.net/wp-content/uploads/2020/10/cropped-logo-final-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://sololatino.net/", - "searchBaseUrl": "https://sololatino.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/sololatino/sololatino.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/sololatino/sololatino.json" - }, - "doramasyt/doramasyt.json": { - "sourceName": "DoramasYT", - "iconUrl": "https://files.catbox.moe/afzsms.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.doramasyt.com/", - "searchBaseUrl": "https://www.doramasyt.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/doramasyt/doramasyt.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/doramasyt/doramasyt.json" - }, - "animeepisodeseries/animeepisodeseries.json": { - "sourceName": "AnimeEpisodeSeries", - "iconUrl": "https://animeepisodeseries.com/wp-content/uploads/2019/10/cropped-anime-episode-1-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "English (DUB/SUB)", - "streamType": "mp4", - "quality": "1080p", - "baseUrl": "hhttps://animeepisodeseries.com/", - "searchBaseUrl": "https://animeepisodeseries.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animeepisodeseries/animeepisodeseries.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": true, - "note": "Use external player.", - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animeepisodeseries/animeepisodeseries.json" - }, - "comet/comet.json": { - "sourceName": "Comet", - "iconUrl": "https://i.imgur.com/jmVoVMu.jpeg", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "English", - "streamType": "MKV", - "quality": "4K", - "baseUrl": "https://www.google.com/", - "searchBaseUrl": "https://www.google.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/comet/comet.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "settings": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/comet/comet.json" - }, "aniliberty/aniliberty.json": { "sourceName": "AniLiberty", "iconUrl": "https://anilibria.top/static/apple-touch-icon.png", @@ -2617,49 +1556,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/aniliberty/aniliberty.json" }, - "hicartoon/hicartoon.json": { - "sourceName": "HiCartoon", - "iconUrl": "https://hicartoon.to/assets/images/icons-512.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://hicartoon.to/home", - "searchBaseUrl": "https://hicartoon.to/home", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/hicartoon/hicartoon.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/hicartoon/hicartoon.json" - }, - "honadrama/honadrama.json": { - "sourceName": "HonaDrama", - "iconUrl": "https://tn.honadrama.us/wp-content/uploads/2023/06/cropped-logo-google-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Arabic", - "streamType": "mp4", - "quality": "1080p", - "baseUrl": "https://uqload.cx/", - "searchBaseUrl": "https://uqload.cx/?s=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/honadrama/honadrama.js", - "type": "shows/movies", - "asyncJS": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/honadrama/honadrama.json" - }, "vidfast/vidfast.json": { "sourceName": "VidFast", "iconUrl": "https://files.catbox.moe/i6r78t.png", @@ -2682,49 +1578,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/vidfast/vidfast.json" }, - "111477/111477.json": { - "sourceName": "111477", - "iconUrl": "https://media.tenor.com/tIOhF5a8McEAAAAe/heart-emoji-love-nonchalant.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Multi Language", - "streamType": "MKV", - "quality": "1080p", - "baseUrl": "https://a.111477.xyz/", - "searchBaseUrl": "https://a.111477.xyz/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/111477/111477.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "note": "USE AN EXTERNAL PLAYER (E.G., VLC/MPV)", - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/111477/111477.json" - }, - "ddys/ddys.json": { - "sourceName": "DDYS", - "iconUrl": "https://ddys.pro/apple-touch-icon.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Chinese", - "streamType": "mp4", - "quality": "1080p", - "baseUrl": "https://ddys.pro/", - "searchBaseUrl": "https://ddys.pro/?s=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/ddys/ddys.js", - "asyncJS": true, - "type": "movies/shows", - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/ddys/ddys.json" - }, "animexin/animexin.json": { "sourceName": "AnimeXin", "iconUrl": "https://animexin.dev/wp-content/uploads/2020/06/cropped-index-192x192.jpg", @@ -2748,29 +1601,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animexin/animexin.json" }, - "donghuanosekai/donghuanosekai.json": { - "sourceName": "Donghanosekai", - "iconUrl": "https://files.catbox.moe/vgb4mq.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://donghuanosekai.com/", - "searchBaseUrl": "https://donghuanosekai.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/donghuanosekai/donghuanosekai.js", - "type": "anime", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/donghuanosekai/donghuanosekai.json" - }, "dora-video/dora-video.json": { "sourceName": "Dora-Video", "iconUrl": "https://www.dora-video.cn/favicon.ico", @@ -2792,26 +1622,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/dora-video/dora-video.json" }, - "onlinemovieshindi/onlinemovieshindi.json": { - "sourceName": "OnlineMoviesHindi", - "iconUrl": "https://cdn-icons-png.freepik.com/256/14272/14272467.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "Hindi (SUB)", - "streamType": "mp4", - "quality": "1080p", - "baseUrl": "https://111.90.159.132/", - "searchBaseUrl": "https://111.90.159.132/?s=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/onlinemovieshindi/onlinemovieshindi.js", - "asyncJS": true, - "type": "movies/shows", - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/onlinemovieshindi/onlinemovieshindi.json" - }, "1movies/1movies.json": { "sourceName": "1Movies", "iconUrl": "https://1movies.bz/assets/uploads/675b5c22f2829fc8e3a4030af7f4284acad017e5241280b3dc21.png", @@ -2900,28 +1710,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/vidlink/vidlink.json" }, - "pelisplushd/pelisplushd.json": { - "sourceName": "PelisPlusHD", - "iconUrl": "https://pelisplushd.bz/images/logo/favicon.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Spanish (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://pelisplushd.bz/", - "searchBaseUrl": "https://pelisplushd.bz/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/pelisplushd/pelisplushd.js", - "type": "shows/movies/anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/pelisplushd/pelisplushd.json" - }, "anitube/anitube.json": { "sourceName": "AniTube", "iconUrl": "https://www.anitube.news/wp-content/uploads/cropped-Favicon6-192x192.png", @@ -3025,52 +1813,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mangakatana/mangakatana.json" }, - "prmovies/prmovies.json": { - "sourceName": "PrMovies", - "iconUrl": "https://prmovies.casa/wp-content/uploads/2025/08/100595544-play-button-round-green-3d-icon-symbol-.jpg", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Hindi", - "streamType": "HLS", - "encrypted": true, - "quality": "1080p", - "baseUrl": "https://spedostream.com", - "searchBaseUrl": "https://spedostream.com", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/prmovies/prmovies.js", - "type": "movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/prmovies/prmovies.json" - }, - "dmand5/dmand5.json": { - "sourceName": "Dmand5", - "iconUrl": "https://www.dmand5.com/template/dmd8pc/images/logo.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Chinese", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.dmand5.com/", - "searchBaseUrl": "https://www.dmand5.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/dmand5/dmand5.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/dmand5/dmand5.json" - }, "coflix/coflix.json": { "sourceName": "CoFlix", "iconUrl": "https://coflix.cc/wp-content/uploads/2022/10/cropped-coflix-180x180-1.png", @@ -3163,48 +1905,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animekai/hardsub/animekai.json" }, - "vidsrc/vidsrc.json": { - "sourceName": "VidSrc", - "iconUrl": "https://vsrc.su/template/vidsrc-ico.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.2", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://vsrc.su/", - "searchBaseUrl": "https://vsrc.su/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/vidsrc/vidsrc.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/vidsrc/vidsrc.json" - }, - "soaperlive/soaperlive.json": { - "sourceName": "Soaper Live", - "iconUrl": "https://files.catbox.moe/gwqviy.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.4", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://soaper.live/", - "searchBaseUrl": "https://soaper.live/%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/soaperlive/soaperlive.js", - "asyncJS": true, - "type": "movies", - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/soaperlive/soaperlive.json" - }, "donghuastream/donghuastream.json": { "sourceName": "DonghuaStream", "iconUrl": "https://donghuastream.org/wp-content/uploads/2023/05/cropped-Donghua-Stream-scaled-1-192x192.jpeg", @@ -3228,29 +1928,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/donghuastream/donghuastream.json" }, - "animeq/animeq.json": { - "sourceName": "Animeq", - "iconUrl": "https://animeq.blog/wp-content/uploads/2025/06/Favicon-AnimeQ-1.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Portuguese", - "streamType": "mp4", - "quality": "1080p", - "baseUrl": "https://animeq.blog/", - "searchBaseUrl": "https://animeq.blog/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animeq/animeq.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": true, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animeq/animeq.json" - }, "poseidonhd2/poseidonhd2.json": { "sourceName": "PoseidonHD2", "iconUrl": "https://www.poseidonhd2.co/apple-touch-icon.png", @@ -3273,72 +1950,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/poseidonhd2/poseidonhd2.json" }, - "torrentio/torrentio.json": { - "sourceName": "Torrentio", - "iconUrl": "https://torrentio.org/wp-content/uploads/2024/12/cropped-Torrentio-Favicon-192x192.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "English", - "streamType": "MKV", - "quality": "4K", - "baseUrl": "https://www.google.com/", - "searchBaseUrl": "https://www.google.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/torrentio/torrentio.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "settings": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/torrentio/torrentio.json" - }, - "iyinghua/iyinghua.json": { - "sourceName": "Iyinghua", - "iconUrl": "https://files.catbox.moe/mh7uxf.ico", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Chinese", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "hhttp://www.iyinghua.com/", - "searchBaseUrl": "http://www.iyinghua.com/%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/iyinghua/iyinghua.js", - "asyncJS": true, - "type": "anime", - "note": "SOME STUFF IS REGION LOCKED", - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/iyinghua/iyinghua.json" - }, - "vegamovies/vegamovies.json": { - "sourceName": "VegaMovies", - "iconUrl": "https://www.arcgis.com/sharing/rest/content/items/e6b7ab2c49de42e0b4aa9ea75198737c/info/thumbnail/ago_downloaded.jpg?w=800", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.2", - "language": "Hindi (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://vegamovies10.com/", - "searchBaseUrl": "https://vegamovies10.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/vegamovies/vegamovies.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/vegamovies/vegamovies.json" - }, "animeworld/animeworld.json": { "sourceName": "AnimeWorld", "iconUrl": "https://raw.githubusercontent.com/cranci1/Ryu/d48d716ec6c5ef9ae7b3711c117f920b0c7eb1ce/Ryu/Assets.xcassets/Sources/AnimeWorld.imageset/animeworld.png", @@ -3382,28 +1993,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/youtube/youtube.json" }, - "animesroll/animesroll.json": { - "sourceName": "AnimesRoll", - "iconUrl": "https://cdn.countryflags.com/thumbs/portugal/flag-button-round-250.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Portuguese", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://www.anroll.net/", - "searchBaseUrl": "https://www.anroll.net/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animesroll/animesroll.js", - "type": "animes", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animesroll/animesroll.json" - }, "an1me/an1me.json": { "sourceName": "An1me", "iconUrl": "https://an1me.to/assets/apple-touch-icon.png", @@ -3428,28 +2017,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/an1me/an1me.json" }, - "xprime/xprime.json": { - "sourceName": "XPrime", - "iconUrl": "https://files.catbox.moe/i6t2mb.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "English", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://xprime.tv/", - "searchBaseUrl": "https://xprime.tv/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/xprime/xprime.js", - "type": "shows/movies/anime", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/xprime/xprime.json" - }, "novelnext/novelnext.json": { "sourceName": "NovelNext", "iconUrl": "https://novelnext.dramanovels.io/img/logo.png", @@ -3516,70 +2083,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/aniworld/AniWorldEngSub.json" }, - "filmehd/filmehd.json": { - "sourceName": "FilmeHD", - "iconUrl": "https://filmehd.to/wp-content/uploads/2020/01/favicon.ico", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "3.0.1", - "language": "Romanian (DUB/SUB)", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://filmehd.to/", - "searchBaseUrl": "https://filmehd.to/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/filmehd/filmehd.js", - "type": "shows/movies", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/filmehd/filmehd.json" - }, - "anilibria/anilibria.json": { - "sourceName": "AniLibria", - "iconUrl": "https://github.com/50n50/sources/blob/main/anilibria/icon.png?raw=true", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Russian", - "streamType": "HLS", - "quality": "720p", - "baseUrl": "https://api.anilibria.tv/", - "searchBaseUrl": "https://api.anilibria.tv/v3/title/search?search=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anilibria/anilibria.js", - "asyncJS": true, - "type": "anime", - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anilibria/anilibria.json" - }, - "anime3rb/anime3rb.json": { - "sourceName": "Anime3rb", - "iconUrl": "https://anime3rb.com/favicon/apple-touch-icon.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.2.0", - "language": "Arabic (SUB)", - "streamType": "MP4", - "quality": "1080p - 720p - 360p", - "baseUrl": "https://anime3rb.com/", - "searchBaseUrl": "https://anime3rb.com/search?q=%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anime3rb/anime3rb.js", - "streamAsyncJS": true, - "type": "anime", - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/anime3rb/anime3rb.json" - }, "nivod/nivod.json": { "sourceName": "Nivod", "iconUrl": "https://www.nivod.cc/static/nivod/image/logo/logo_512x512.png", @@ -3602,28 +2105,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/nivod/nivod.json" }, - "mediafusion/mediafusion.json": { - "sourceName": "MediaFusion", - "iconUrl": "https://github.com/mhdzumair/MediaFusion/raw/main/resources/images/mediafusion_logo.png?raw=true", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.1", - "language": "English", - "streamType": "MKV", - "quality": "4K", - "baseUrl": "https://www.google.com/", - "searchBaseUrl": "https://www.google.com/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mediafusion/mediafusion.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "settings": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mediafusion/mediafusion.json" - }, "animetoast/animetoast.json": { "sourceName": "AnimeToast", "iconUrl": "https://www.animetoast.cc/wp-content/uploads/2018/03/toastfavi-300x300.png", @@ -3682,71 +2163,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/animesdigital/animesdigital.json" }, - "temp/temp.json": { - "sourceName": "MangaKatana", - "iconUrl": "https://i.pinimg.com/736x/5c/25/c1/5c25c16af08e250ee917726afafe068f.jpg", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.6", - "language": "English", - "streamType": "novels", - "quality": "N/A", - "baseUrl": "https://mangakatana.net/", - "searchBaseUrl": "https://mangakatana.net/%s", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/temp/temp.js", - "type": "novels", - "asyncJS": true, - "novel": true, - "supportsSora": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/temp/temp.json" - }, - "cksub/cksub.json": { - "sourceName": "CKSub", - "iconUrl": "https://cksub.org/wp-content/uploads/2024/12/cropped-i-am-the-fated-villain-gu-changge-192x192.jpg", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Chinese", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://cksub.org/", - "searchBaseUrl": "https://cksub.org/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/cksub/cksub.js", - "type": "anime", - "asyncJS": true, - "softsub": false, - "downloadSupport": false, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/cksub/cksub.json" - }, - "mapple/mapple.json": { - "sourceName": "Mapple", - "iconUrl": "https://files.catbox.moe/evufrq.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.5", - "language": "English", - "streamType": "HLS", - "quality": "4K", - "baseUrl": "https://mapple.uk/", - "searchBaseUrl": "https://mapple.uk/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mapple/mapple.js", - "type": "anime/movies/shows", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mapple/mapple.json" - }, "toontales/toontales.json": { "sourceName": "ToonTales", "iconUrl": "https://www.toontales.net/wp-content/uploads/cropped-favicon-192x192.png", @@ -3790,29 +2206,6 @@ "supportsLuna": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/turkish123/turkish123.json" }, - "kuramanime/kuramanime.json": { - "sourceName": "Kuramanime", - "iconUrl": "https://v8.kuramanime.tel/images/icons/icon-512x512.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "Indonesian", - "streamType": "HLS", - "quality": "1080p", - "baseUrl": "https://v8.kuramanime.tel/", - "searchBaseUrl": "https://v8.kuramanime.tel/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kuramanime/kuramanime.js", - "type": "anime", - "asyncJS": true, - "softsub": true, - "downloadSupport": true, - "supportsMojuru": true, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/kuramanime/kuramanime.json" - }, "animebalkan/animebalkan.json": { "sourceName": "AnimeBalkan", "iconUrl": "https://i.ibb.co/7tRnVMqY/favicon.png", @@ -3905,37 +2298,15 @@ "supportsSora": true, "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/chireads/chireads.json" }, - "audible/audible.json": { - "sourceName": "Audible", - "iconUrl": "https://m.media-amazon.com/images/I/51iKw5dFQoL.png", + "animepahe/animepahe.json": { + "sourceName": "AnimePahe", + "iconUrl": "https://files.catbox.moe/fu5sq7.png", "author": { "name": "50/50", "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" }, "version": "1.0.0", "language": "English", - "streamType": "MP3", - "quality": "Audio", - "baseUrl": "https://www.audible.co.uk/", - "searchBaseUrl": "https://www.audible.co.uk/", - "scriptUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/audible/audible.js", - "type": "audiobooks", - "asyncJS": true, - "softsub": true, - "downloadSupport": false, - "supportsSora": true, - "supportsLuna": true, - "jsonUrl": "https://git.luna-app.eu/50n50/sources/raw/branch/main/audible/audible.json" - }, - "animepahe/animepahe.json": { - "sourceName": "AnimePahe", - "iconUrl": "https://files.catbox.moe/fu5sq7.png", - "author": { - "name": "50/50", - "icon": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" - }, - "version": "1.0.0", - "language": "English", "streamType": "HLS", "quality": "1080p", "baseUrl": "https://animepahe.si/", @@ -3970,5 +2341,31 @@ "supportsMojuru": true, "supportsSora": true, "supportsLuna": true + }, + "mangadex/mangadex.json": { + "sourceName": "MangaDex", + "iconURL": "https://files.catbox.moe/ouogm2.png", + "version": "1.0", + "language": "Multi Language", + "scriptURL": "https://git.luna-app.eu/50n50/sources/raw/branch/main/mangadex/mangadex.js", + "author": { + "name": "50/50", + "iconURL": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" + }, + "type": "mangas", + "supportsLuna": true + }, + "weebcentral/weebcentral.json": { + "sourceName": "WeebCentral", + "iconURL": "https://favicons.statusgator.com/1bi5zotvuQiK08wI.png", + "version": "1.0", + "language": "English", + "scriptURL": "https://git.luna-app.eu/50n50/sources/raw/branch/main/weebcentral/weebcentral.js", + "author": { + "name": "50/50", + "iconURL": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ3122kQwublLkZ6rf1fEpUP79BxZOFmH9BSA&s" + }, + "type": "mangas", + "supportsLuna": true } -} +} \ No newline at end of file diff --git a/update_index.py b/update_index.py new file mode 100644 index 0000000..0cb90d3 --- /dev/null +++ b/update_index.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 + +import json +import urllib.request +import urllib.error +from typing import Dict, Set, Any +from pathlib import Path + +API_URL = "https://library.cufiy.net/api/modules.min.json" +INDEX_FILE = "index.json" +AUTHOR_TO_SYNC = "50/50" + + +def fetch_api_data() -> list: + try: + print(f"Fetching data from {API_URL}") + req = urllib.request.Request( + API_URL, + headers={ + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' + } + ) + with urllib.request.urlopen(req) as response: + data = json.loads(response.read().decode('utf-8')) + print(f"Successfully fetched {len(data)} modules from API") + return data + except urllib.error.URLError as e: + print(f"Error fetching API data: {e}") + raise + except json.JSONDecodeError as e: + print(f"Error parsing API response: {e}") + raise + + +def extract_manifest_path(manifest_url: str) -> str: + parts = manifest_url.split('/') + try: + main_index = parts.index('main') + path = '/'.join(parts[main_index + 1:]) + return path + except (ValueError, IndexError): + return '/'.join(parts[-2:]) + + +def filter_author_modules(api_data: list, author: str) -> Set[str]: + author_paths = set() + + for module in api_data: + module_author = module.get('author', {}) + author_name = module_author.get('name') if isinstance(module_author, dict) else module_author + + if author_name == author: + manifest_url = module.get('manifestUrl', '') + if manifest_url: + path = extract_manifest_path(manifest_url) + author_paths.add(path) + + print(f"Found {len(author_paths)} modules from author '{author}' in API") + return author_paths + + +def load_index() -> Dict[str, Any]: + try: + with open(INDEX_FILE, 'r', encoding='utf-8') as f: + data = json.load(f) + print(f"Loaded {len(data)} modules from {INDEX_FILE}") + return data + except FileNotFoundError: + print(f"✗Error: {INDEX_FILE} not found") + raise + except json.JSONDecodeError as e: + print(f"Error parsing {INDEX_FILE}: {e}") + raise + + +def is_manga_module(module_type: str) -> bool: + return module_type in ("manga", "mangas") + + +def update_index(index_data: Dict[str, Any], api_paths: Set[str], author: str) -> Dict[str, Any]: + updated_index = {} + removed_count = 0 + kept_count = 0 + manga_protected = 0 + + for path, module_data in index_data.items(): + module_author = module_data.get('author', {}) + author_name = module_author.get('name') if isinstance(module_author, dict) else module_author + module_type = module_data.get('type', '') + should_keep = False + reason = "" + + # ALWAYS protect manga modules FIRST (highest priority) + if is_manga_module(module_type): + should_keep = True + reason = f"manga module (protected, type: {module_type})" + manga_protected += 1 + elif author_name != author: + should_keep = True + reason = f"different author ({author_name})" + elif path in api_paths: + should_keep = True + reason = "exists in API" + else: + reason = f"not in API (author: {author})" + + if should_keep: + updated_index[path] = module_data + kept_count += 1 + else: + print(f" - Removing: {path} ({reason})") + removed_count += 1 + + print(f"\nKept {kept_count} modules") + if manga_protected > 0: + print(f"Protected {manga_protected} manga modules from removal") + if removed_count > 0: + print(f"Removed {removed_count} modules") + else: + print(f"No modules needed to be removed") + + return updated_index + + +def save_index(index_data: Dict[str, Any]) -> None: + try: + with open(INDEX_FILE, 'w', encoding='utf-8') as f: + json.dump(index_data, f, indent=2, ensure_ascii=False) + print(f"\nSuccessfully saved updated {INDEX_FILE}") + except Exception as e: + print(f"Error saving {INDEX_FILE}: {e}") + raise + + +def main(): + print("=" * 60) + print("INDEX.JSON UPDATE SCRIPT") + print("=" * 60) + print(f"Syncing author: {AUTHOR_TO_SYNC}") + print(f"Protected types: manga, mangas") + print("=" * 60) + print() + + try: + api_data = fetch_api_data() + + api_paths = filter_author_modules(api_data, AUTHOR_TO_SYNC) + + index_data = load_index() + + print(f"\nProcessing modules") + updated_index = update_index(index_data, api_paths, AUTHOR_TO_SYNC) + + save_index(updated_index) + + print("\n" + "=" * 60) + print("UPDATE COMPLETE") + print("=" * 60) + + except Exception as e: + print(f"\nScript failed: {e}") + return 1 + + return 0 + + +if __name__ == "__main__": + exit(main())