code:
stairs = {
	mod = "redo",
	S = minetest.get_translator(minetest.get_current_modname())
}

-- cache creative
local creative = minetest.settings:get_bool("creative_mode")

local function is_creative_enabled_for(name)

	if creative or minetest.check_player_privs(name, {creative = true}) then
		return true
	end

	return false
end

-- process textures
local set_textures = function(images, worldaligntex)

	local stair_images = {}

	for i, image in ipairs(images) do

		stair_images[i] = type(image) == "string" and {name = image} or table.copy(image)

		if stair_images[i].backface_culling == nil then
			stair_images[i].backface_culling = true
		end

		if worldaligntex and stair_images[i].align_style == nil then
			stair_images[i].align_style = "world"
		end
	end

	return stair_images
end

-- placement helper
local stair_place = function(itemstack, placer, pointed_thing, stair_node)

	-- if sneak pressed then use param2 in node pointed at when placing
	if placer:is_player() and placer:get_player_control().sneak then

		local name  = placer:get_player_name()
		local pos_a = pointed_thing.above
		local node_a = minetest.get_node(pos_a)
		local def_a = minetest.registered_nodes[node_a.name]

		if not def_a.buildable_to or minetest.is_protected(pos_a, name) then
			return itemstack
		end

		local pos_u = pointed_thing.under
		local node_u = minetest.get_node(pos_u)

		if minetest.get_item_group(node_u.name, "stair") > 0
		or minetest.get_item_group(node_u.name, "slab") > 0 then

			minetest.set_node(pos_a, {
				name = stair_node,
				param2 = node_u.param2
			})

			if not is_creative_enabled_for(name) then
				itemstack:take_item()
			end

			return itemstack
		end
	end

	core.rotate_and_place(itemstack, placer, pointed_thing,
			is_creative_enabled_for(placer:get_player_name()),
			{invert_wall = placer:get_player_control().sneak})

	return itemstack
end

-- if recipeitem can be burned then stair can also
local function set_burn(recipeitem, stair_name, v)

	local burntime = minetest.get_craft_result({
		method = "fuel", width = 1, items = {recipeitem} }).time

	if burntime > 0 then

		minetest.register_craft({
			type = "fuel",
			recipe = stair_name,
			burntime = math.floor(burntime * v)
		})
	end
end

-- Node will be called stairs:stair_<subname>
function stairs.register_stair(
		subname, recipeitem, groups, images, description, snds, wat)

	local stair_images = set_textures(images, wat)
	local new_groups = table.copy(groups)

	new_groups.stair = 1

	local def = minetest.registered_nodes[recipeitem] or {}

	minetest.register_node(":stairs:stair_" .. subname, {
		description = description,
		drawtype = "nodebox",
		tiles = stair_images,
		paramtype = "light",
		paramtype2 = "facedir",
		is_ground_content = false,
		use_texture_alpha = def.use_texture_alpha,
		light_source = def.light_source,
		sunlight_propagates = def.sunlight_propagates,
		groups = new_groups,
		sounds = snds or def.sounds,
		node_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0.5, 0.5, 0.5}
			}
		},

		on_place = function(itemstack, placer, pointed_thing)
			return stair_place(
					itemstack, placer, pointed_thing, "stairs:stair_" .. subname)
		end
	})

	-- if no recipe item provided then skip craft recipes
	if not recipeitem then
		return
	end

	-- stair recipes
	minetest.register_craft({
		output = "stairs:stair_" .. subname .. " 8",
		recipe = {
			{recipeitem, "", ""},
			{recipeitem, recipeitem, ""},
			{recipeitem, recipeitem, recipeitem}
		}
	})

	minetest.register_craft({
		output = "stairs:stair_" .. subname .. " 8",
		recipe = {
			{"", "", recipeitem},
			{"", recipeitem, recipeitem},
			{recipeitem, recipeitem, recipeitem}
		}
	})

	-- stair to original material recipe
	minetest.register_craft({
		output = recipeitem .. " 3",
		recipe = {
			{"stairs:stair_" .. subname, "stairs:stair_" .. subname},
			{"stairs:stair_" .. subname, "stairs:stair_" .. subname}
		}
	})

	set_burn(recipeitem, "stairs:stair_" .. subname, 0.75)
end

-- Node will be called stairs:slab_<subname>
function stairs.register_slab(
		subname, recipeitem, groups, images, description, snds, wat)

	local slab_images = set_textures(images, wat)
	local new_groups = table.copy(groups)

	new_groups.slab = 1

	local def = minetest.registered_nodes[recipeitem] or {}

	minetest.register_node(":stairs:slab_" .. subname, {
		description = description,
		drawtype = "nodebox",
		tiles = slab_images,
		paramtype = "light",
		paramtype2 = "facedir",
		is_ground_content = false,
		use_texture_alpha = def.use_texture_alpha,
		light_source = def.light_source,
		sunlight_propagates = def.sunlight_propagates,
		groups = new_groups,
		sounds = snds or def.sounds,
		node_box = {
			type = "fixed",
			fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}
		},

		on_place = function(itemstack, placer, pointed_thing)

			return stair_place(
					itemstack, placer, pointed_thing, "stairs:slab_" .. subname)
		end
	})

	-- if no recipe item provided then skip craft recipes
	if not recipeitem then
		return
	end

	-- slab recipe
	minetest.register_craft({
		output = "stairs:slab_" .. subname .. " 6",
		recipe = {
			{recipeitem, recipeitem, recipeitem}
		}
	})

	-- slab to original material recipe
	minetest.register_craft({
		output = recipeitem,
		recipe = {
			{"stairs:slab_" .. subname},
			{"stairs:slab_" .. subname}
		}
	})

	set_burn(recipeitem, "stairs:slab_" .. subname, 0.5)
end

-- Node will be called stairs:stair_outer_<subname>
function stairs.register_stair_outer(
		subname, recipeitem, groups, images, description, snds, wat, fdesc)

	local stair_images = set_textures(images, wat)
	local new_groups = table.copy(groups)

	new_groups.stair = 1

	local def = minetest.registered_nodes[recipeitem] or {}

	minetest.register_node(":stairs:stair_outer_" .. subname, {
		description = fdesc or "Outer " .. description,
		drawtype = "nodebox",
		tiles = stair_images,
		paramtype = "light",
		paramtype2 = "facedir",
		is_ground_content = false,
		use_texture_alpha = def.use_texture_alpha,
		light_source = def.light_source,
		sunlight_propagates = def.sunlight_propagates,
		groups = new_groups,
		sounds = snds or def.sounds,
		node_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0, 0.5, 0.5}
			},
		},

		on_place = function(itemstack, placer, pointed_thing)

			return stair_place(
					itemstack, placer, pointed_thing, "stairs:stair_outer_" .. subname)
		end
	})

	-- add alias for old stairs redo name
	minetest.register_alias("stairs:corner_" .. subname,
			"stairs:stair_outer_" .. subname)

	-- if no recipe item provided then skip craft recipes
	if not recipeitem then
		return
	end

	-- corner stair recipe
	minetest.register_craft({
		output = "stairs:stair_outer_" .. subname .. " 6",
		recipe = {
			{"", "", ""},
			{"", recipeitem, ""},
			{recipeitem, recipeitem, recipeitem}
		},
	})

	-- corner stair to original material recipe
	minetest.register_craft({
		output = recipeitem .. " 2",
		recipe = {
			{"stairs:stair_outer_" .. subname, "stairs:stair_outer_" .. subname},
			{"stairs:stair_outer_" .. subname, "stairs:stair_outer_" .. subname}
		}
	})

	set_burn(recipeitem, "stairs:stair_outer_" .. subname, 0.625)
end

-- Node will be called stairs:stair_inner_<subname>
function stairs.register_stair_inner(
		subname, recipeitem, groups, images, description, snds, wat, fdesc)

	local stair_images = set_textures(images, wat)
	local new_groups = table.copy(groups)

	new_groups.stair = 1

	local def = minetest.registered_nodes[recipeitem] or {}

	minetest.register_node(":stairs:stair_inner_" .. subname, {
		description = fdesc or "Inner " .. description,
		drawtype = "nodebox",
		tiles = stair_images,
		paramtype = "light",
		paramtype2 = "facedir",
		is_ground_content = false,
		use_texture_alpha = def.use_texture_alpha,
		light_source = def.light_source,
		sunlight_propagates = def.sunlight_propagates,
		groups = new_groups,
		sounds = snds or def.sounds,
		node_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
				{-0.5, 0, -0.5, 0, 0.5, 0}
			}
		},

		on_place = function(itemstack, placer, pointed_thing)

			return stair_place(
					itemstack, placer, pointed_thing, "stairs:stair_inner_" .. subname)
		end,
	})

	-- add alias for old stairs redo name
	minetest.register_alias("stairs:invcorner_" .. subname,
			"stairs:stair_inner_" .. subname)

	-- if no recipe item provided then skip craft recipes
	if not recipeitem then
		return
	end

	-- inside corner stair recipe
	minetest.register_craft({
		output = "stairs:stair_inner_" .. subname .. " 9",
		recipe = {
			{recipeitem, recipeitem, ""},
			{recipeitem, recipeitem, recipeitem},
			{recipeitem, recipeitem, recipeitem},
		}
	})

	-- inside corner stair to original material recipe
	minetest.register_craft({
		output = recipeitem .. " 3",
		recipe = {
			{"stairs:stair_inner_" .. subname, "stairs:stair_inner_" .. subname},
			{"stairs:stair_inner_" .. subname, "stairs:stair_inner_" .. subname}
		}
	})

	set_burn(recipeitem, "stairs:stair_inner_" .. subname, 0.875)
end

-- Node will be called stairs:slope_<subname>
function stairs.register_slope(
		subname, recipeitem, groups, images, description, snds, wat)

	local stair_images = set_textures(images, wat)
	local new_groups = table.copy(groups)

	new_groups.stair = 1

	local def = minetest.registered_nodes[recipeitem] or {}

	minetest.register_node(":stairs:slope_" .. subname, {
		description = description,
		drawtype = "mesh",
		mesh = "stairs_slope.obj",
		tiles = stair_images,
		paramtype = "light",
		paramtype2 = "facedir",
		is_ground_content = false,
		use_texture_alpha = def.use_texture_alpha,
		light_source = def.light_source,
		sunlight_propagates = def.sunlight_propagates,
		groups = new_groups,
		sounds = snds or def.sounds,
		selection_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
			},
		},
		collision_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0.5, 0.5, 0.5}
			},
		},

		on_place = function(itemstack, placer, pointed_thing)

			return stair_place(
					itemstack, placer, pointed_thing, "stairs:slope_" .. subname)
		end
	})

	-- slope recipe
	minetest.register_craft({
		output = "stairs:slope_" .. subname .. " 6",
		recipe = {
			{recipeitem, "", ""},
			{recipeitem, recipeitem, ""}
		}
	})

	-- slope to original material recipe
	minetest.register_craft({
		output = recipeitem,
		recipe = {
			{"stairs:slope_" .. subname, "stairs:slope_" .. subname}
		}
	})

	set_burn(recipeitem, "stairs:slope_" .. subname, 0.5)
end

-- Node will be called stairs:slope_inner_<subname>
function stairs.register_slope_inner(
		subname, recipeitem, groups, images, description, snds, wat)

	local stair_images = set_textures(images, wat)
	local new_groups = table.copy(groups)

	new_groups.stair = 1

	local def = minetest.registered_nodes[recipeitem] or {}

	minetest.register_node(":stairs:slope_inner_" .. subname, {
		description = description,
		drawtype = "mesh",
		mesh = "stairs_slope_inner.obj",
		tiles = stair_images,
		paramtype = "light",
		paramtype2 = "facedir",
		is_ground_content = false,
		use_texture_alpha = def.use_texture_alpha,
		light_source = def.light_source,
		sunlight_propagates = def.sunlight_propagates,
		groups = new_groups,
		sounds = snds or def.sounds,
		selection_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
				{-0.5, 0, -0.5, 0, 0.5, 0}
			}
		},
		collision_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
				{-0.5, 0, -0.5, 0, 0.5, 0}
			}
		},

		on_place = function(itemstack, placer, pointed_thing)

			return stair_place(
					itemstack, placer, pointed_thing, "stairs:slope_inner_" .. subname)
		end
	})

	-- slope recipe
	minetest.register_craft({
		output = "stairs:slope_inner_" .. subname .. " 6",
		recipe = {
			{"", recipeitem, recipeitem},
			{recipeitem, recipeitem, recipeitem}
		}
	})

	-- slope to original material recipe
	minetest.register_craft({
		output = recipeitem,
		recipe = {
			{"stairs:slope_inner_" .. subname, "stairs:slope_inner_" .. subname}
		}
	})

	set_burn(recipeitem, "stairs:slope_inner_" .. subname, 0.5)
end

-- Node will be called stairs:slope_outer_<subname>
function stairs.register_slope_outer(
		subname, recipeitem, groups, images, description, snds, wat)

	local stair_images = set_textures(images, wat)
	local new_groups = table.copy(groups)

	new_groups.stair = 1

	local def = minetest.registered_nodes[recipeitem] or {}

	minetest.register_node(":stairs:slope_outer_" .. subname, {
		description = description,
		drawtype = "mesh",
		mesh = "stairs_slope_outer.obj",
		tiles = stair_images,
		paramtype = "light",
		paramtype2 = "facedir",
		is_ground_content = false,
		use_texture_alpha = def.use_texture_alpha,
		light_source = def.light_source,
		sunlight_propagates = def.sunlight_propagates,
		groups = new_groups,
		sounds = snds or def.sounds,
		selection_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0, 0.5, 0.5}
			},
		},
		collision_box = {
			type = "fixed",
			fixed = {
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
				{-0.5, 0, 0, 0, 0.5, 0.5}
			},
		},

		on_place = function(itemstack, placer, pointed_thing)

			return stair_place(
					itemstack, placer, pointed_thing, "stairs:slope_outer_" .. subname)
		end
	})

	-- slope recipe
	minetest.register_craft({
		output = "stairs:slope_outer_" .. subname .. " 6",
		recipe = {
			{"", "", recipeitem},
			{"", recipeitem, recipeitem}
		}
	})

	-- slope to original material recipe
	minetest.register_craft({
		output = recipeitem,
		recipe = {
			{"stairs:slope_outer_" .. subname, "stairs:slope_outer_" .. subname}
		}
	})

	set_burn(recipeitem, "stairs:slope_outer_" .. subname, 0.5)
end

-- Nodes will be called stairs:{stair,slab}_<subname>
function stairs.register_stair_and_slab(
		subname, recipeitem, groups, images, desc_stair, desc_slab, sounds, wat)

	stairs.register_stair(
			subname, recipeitem, groups, images, desc_stair, sounds, wat)

	stairs.register_stair_inner(
			subname, recipeitem, groups, images, desc_stair, sounds, wat)

	stairs.register_stair_outer(
			subname, recipeitem, groups, images, desc_stair, sounds, wat)

	stairs.register_slab(
			subname, recipeitem, groups, images, desc_slab, sounds, wat)
end

-- Nodes will be called stairs:{stair,slab,corner,invcorner,slope}_<subname>
function stairs.register_all(
		subname, recipeitem, groups, images, desc, snds, wat)

	stairs.register_stair(
			subname, recipeitem, groups, images, desc .. " Stair", snds, wat)

	stairs.register_slab(
			subname, recipeitem, groups, images, desc .. " Slab", snds, wat)

	stairs.register_stair_inner(
			subname, recipeitem, groups, images, desc .. " Stair", snds, wat)

	stairs.register_stair_outer(
			subname, recipeitem, groups, images, desc .. " Stair", snds, wat)

	stairs.register_slope(
			subname, recipeitem, groups, images, desc .. " Slope", snds, wat)

	stairs.register_slope_inner(
			subname, recipeitem, groups, images, desc .. " Slope", snds, wat)

	stairs.register_slope_outer(
			subname, recipeitem, groups, images, desc .. " Slope", snds, wat)
end

-- compatibility function for previous stairs:invcorner_<subname>
function stairs.register_invcorner(
		subname, recipeitem, groups, images, desc, snds, wat)

	stairs.register_stair_inner(
			subname, recipeitem, groups, images, desc .. " Stair", snds, wat)
end

-- compatibility function for previous stairs:corner_<subname>
function stairs.register_corner(
		subname, recipeitem, groups, images, desc, snds, wat)

	stairs.register_stair_outer(
			subname, recipeitem, groups, images, desc .. " Stair", snds, wat)
end

-- Register stairs after mods loaded
minetest.register_on_mods_loaded(function()
	dofile(minetest.get_modpath("stairs") .. "/stairs.lua")
end)

print ("[MOD] Stairs Redo loaded")


code:
# textdomain: stairs

Cloud Stairs=Escalera de Nube
Cloud Slab=Losa de Nube

license: mit


code:
# textdomain: stairs

Cloud Stairs=
Cloud Slab=


code:
name = stairs
description = Adds stairs, slabs, inner and outer corners and slopes.
depends = default
min_minetest_version = 5.0


code: stairs.glass_sides (Show glass stair side texture) bool true


code:
--= Default Minetest

-- Wood

local S = minetest.get_translator("default")

stairs.register_all("wood", "default:wood",
	{choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
	{"default_wood.png"},
	S("Wooden"),
	nil, false)

stairs.register_all("junglewood", "default:junglewood",
	{choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
	{"default_junglewood.png"},
	S("Jungle Wood"),
	nil, false)

stairs.register_all("pine_wood", "default:pinewood",
	{choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
	{"default_pine_wood.png"},
	S("Pine Wood"),
	nil, false)

-- Register aliases for new pine node names
minetest.register_alias("stairs:stair_pinewood", "stairs:stair_pine_wood")
minetest.register_alias("stairs:slab_pinewood", "stairs:slab_pine_wood")

stairs.register_all("acacia_wood", "default:acacia_wood",
	{choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
	{"default_acacia_wood.png"},
	S("Acacia Wood"),
	nil, false)

stairs.register_all("aspen_wood", "default:aspen_wood",
	{choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
	{"default_aspen_wood.png"},
	S("Aspen Wood"),
	nil, false)

-- Stone

stairs.register_all("stone", "default:stone",
	{cracky = 3},
	{"default_stone.png"},
	S("Stone"),
	nil, true)

stairs.register_all("stonebrick", "default:stonebrick",
	{cracky = 2},
	{"default_stone_brick.png"},
	S("Stone Brick"),
	nil, false)

stairs.register_all("stone_block", "default:stone_block",
	{cracky = 2},
	{"default_stone_block.png"},
	S("Stone Block"),
	nil, true)

stairs.register_all("cobble", "default:cobble",
	{cracky = 3},
	{"default_cobble.png"},
	S("Cobble"),
	nil, true)

stairs.register_all("mossycobble", "default:mossycobble",
	{cracky = 3},
	{"default_mossycobble.png"},
	S("Mossy Cobblestone"),
	nil, true)

stairs.register_all("desert_stone", "default:desert_stone",
	{cracky = 3},
	{"default_desert_stone.png"},
	S("Desert Stone"),
	nil, true)

stairs.register_all("desert_stonebrick", "default:desert_stonebrick",
	{cracky = 2},
	{"default_desert_stone_brick.png"},
	S("Desert Stone Brick"),
	nil, false)

stairs.register_all("desert_stone_block", "default:desert_stone_block",
	{cracky = 2},
	{"default_desert_stone_block.png"},
	S("Desert Stone Block"),
	nil, true)

stairs.register_all("desert_cobble", "default:desert_cobble",
	{cracky = 3},
	{"default_desert_cobble.png"},
	S("Desert Cobble"),
	nil, true)

-- Sandstone

stairs.register_all("sandstone", "default:sandstone",
	{crumbly = 1, cracky = 3},
	{"default_sandstone.png"},
	S("Sandstone"),
	nil, true)

stairs.register_all("sandstonebrick", "default:sandstonebrick",
	{cracky = 2},
	{"default_sandstone_brick.png"},
	S("Sandstone Brick"),
	nil, false)

stairs.register_all("sandstone_block", "default:sandstone_block",
	{cracky = 2},
	{"default_sandstone_block.png"},
	S("Sandstone Block"),
	nil, true)

stairs.register_all("desert_sandstone", "default:desert_sandstone",
	{crumbly = 1, cracky = 3},
	{"default_desert_sandstone.png"},
	S("Desert Sandstone"),
	nil, true)

stairs.register_all("desert_sandstone_brick", "default:desert_sandstone_brick",
	{cracky = 2},
	{"default_desert_sandstone_brick.png"},
	S("Desert Sandstone Brick"),
	nil, false)

stairs.register_all("desert_sandstone_block", "default:desert_sandstone_block",
	{cracky = 2},
	{"default_desert_sandstone_block.png"},
	S("Desert Sandstone Block"),
	nil, true)

stairs.register_all("silver_sandstone", "default:silver_sandstone",
	{crumbly = 1, cracky = 3},
	{"default_silver_sandstone.png"},
	S("Silver Sandstone"),
	nil, true)

stairs.register_all("silver_sandstone_brick", "default:silver_sandstone_brick",
	{cracky = 2},
	{"default_silver_sandstone_brick.png"},
	S("Silver Sandstone Brick"),
	nil, false)

stairs.register_all("silver_sandstone_block", "default:silver_sandstone_block",
	{cracky = 2},
	{"default_silver_sandstone_block.png"},
	S("Silver Sandstone Block"),
	nil, true)

-- Obsidian

stairs.register_all("obsidian", "default:obsidian",
	{cracky = 1, level = 2},
	{"default_obsidian.png"},
	S("Obsidian"),
	nil, true)

stairs.register_all("obsidianbrick", "default:obsidianbrick",
	{cracky = 1, level = 2},
	{"default_obsidian_brick.png"},
	S("Obsidian Brick"),
	nil, false)

stairs.register_all("obsidian_block", "default:obsidian_block",
	{cracky = 1, level = 2},
	{"default_obsidian_block.png"},
	S("Obsidian Block"),
	nil, true)

-- Cloud (with overrides)

stairs.register_stair("cloud", "default:cloud",
	{unbreakable = 1, not_in_creative_inventory = 1},
	{"default_cloud.png"},
	stairs.S("Cloud Stair"),
	nil)

minetest.override_item("stairs:stair_cloud", {
	on_blast = function() end,
	on_drop = function(itemstack, dropper, pos) end,
	drop = {},
})

stairs.register_slab("cloud", "default:cloud",
	{unbreakable = 1, not_in_creative_inventory = 1},
	{"default_cloud.png"},
	stairs.S("Cloud Slab"),
	nil)

minetest.override_item("stairs:slab_cloud", {
	on_blast = function() end,
	on_drop = function(itemstack, dropper, pos) end,
	drop = {},
})

-- Ores

stairs.register_all("coal", "default:coalblock",
	{cracky = 3},
	{"default_coal_block.png"},
	S("Coal"),
	nil, true)

stairs.register_all("steelblock", "default:steelblock",
	{cracky = 1, level = 2},
	{"default_steel_block.png"},
	S("Steel"),
	nil, true)

stairs.register_all("copperblock", "default:copperblock",
	{cracky = 1, level = 2},
	{"default_copper_block.png"},
	S("Copper"),
	nil, true)

stairs.register_all("bronzeblock", "default:bronzeblock",
	{cracky = 1, level = 2},
	{"default_bronze_block.png"},
	S("Bronze"),
	nil, true)

stairs.register_all("tinblock", "default:tinblock",
	{cracky = 1, level = 2},
	{"default_tin_block.png"},
	S("Tin"),
	nil, true)

stairs.register_all("mese", "default:mese",
	{cracky = 1, level = 2},
	{"default_mese_block.png"},
	S("Mese"),
	nil)

stairs.register_all("goldblock", "default:goldblock",
	{cracky = 1},
	{"default_gold_block.png"},
	S("Gold"),
	nil)

stairs.register_all("diamondblock", "default:diamondblock",
	{cracky = 1, level = 3},
	{"default_diamond_block.png"},
	S("Diamond"),
	nil)

-- Setting to show glass stair sides
local gsides = minetest.settings:get_bool("stairs.glass_sides") ~= false

-- Old glass stairs
--stairs.register_all("glass", "default:glass",
--	{cracky = 3, oddly_breakable_by_hand = 3},
--	{"default_glass.png"},
--	"Glass",
--	stairs.glass)

-- Glass (stairs registered seperately to use special texture)

local face_tex = "default_glass.png"
local side_tex = gsides and "stairs_glass_quarter.png" or face_tex

stairs.register_stair(
	"glass",
	"default:glass",
	{cracky = 3, oddly_breakable_by_hand = 3},
	{side_tex, face_tex, side_tex, side_tex, face_tex, side_tex},
	S("Glass Stair"),
	nil,
	false
)

stairs.register_slab(
	"glass",
	"default:glass",
	{cracky = 3, oddly_breakable_by_hand = 3},
	{face_tex, face_tex, side_tex},
	S("Glass Slab"),
	nil,
	false
)

stairs.register_stair_inner(
	"glass",
	"default:glass",
	{cracky = 3, oddly_breakable_by_hand = 3},
	{side_tex, face_tex, side_tex, face_tex, face_tex, side_tex},
	"",
	nil,
	false,
	S("Inner Glass Stair")
)

stairs.register_stair_outer(
	"glass",
	"default:glass",
	{cracky = 3, oddly_breakable_by_hand = 3},
	{side_tex, face_tex, side_tex, side_tex, side_tex, side_tex},
	"",
	nil,
	false,
	S("Outer Glass Stair")
)

stairs.register_slope(
	"glass",
	"default:glass",
	{cracky = 3, oddly_breakable_by_hand = 3},
	{face_tex},
	S("Glass Slope"),
	nil
)

stairs.register_slope_inner(
	"glass",
	"default:glass",
	{cracky = 3, oddly_breakable_by_hand = 3},
	{face_tex},
	S("Glass Inner Slope"),
	nil
)

stairs.register_slope_outer(
	"glass",
	"default:glass",
	{cracky = 3, oddly_breakable_by_hand = 3},
	{face_tex},
	S("Glass Outer Slope"),
	nil
)

-- Old obsidian glass stairs
--stairs.register_all("obsidian_glass", "default:obsidian_glass",
--	{cracky = 2},
--	{"default_obsidian_glass.png"},
--	"Obsidian Glass",
--	stairs.glass)

-- Obsidian Glass (stairs registered seperately to use special texture)

face_tex = "default_obsidian_glass.png"
side_tex = gsides and "stairs_obsidian_glass_quarter.png" or face_tex

stairs.register_stair(
	"obsidian_glass",
	"default:obsidian_glass",
	{cracky = 2},
	{side_tex, face_tex, side_tex, side_tex, face_tex, side_tex},
	S("Obsidian Glass Stair"),
	nil,
	false
)

stairs.register_slab(
	"obsidian_glass",
	"default:obsidian_glass",
	{cracky = 2},
	{face_tex, face_tex, side_tex},
	S("Obsidian Glass Slab"),
	nil,
	false
)

stairs.register_stair_inner(
	"obsidian_glass",
	"default:obsidian_glass",
	{cracky = 2},
	{side_tex, face_tex, side_tex, face_tex, face_tex, side_tex},
	"",
	nil,
	false,
	S("Inner Obsidian Glass Stair")
)

stairs.register_stair_outer(
	"obsidian_glass",
	"default:obsidian_glass",
	{cracky = 2},
	{side_tex, face_tex, side_tex, side_tex, side_tex, side_tex},
	"",
	nil,
	false,
	S("Outer Obsidian Glass Stair")
)

stairs.register_slope(
	"obsidian_glass",
	"default:obsidian_glass",
	{cracky = 2},
	{face_tex},
	S("Obsidian Glass Slope"),
	nil
)

stairs.register_slope_inner(
	"obsidian_glass",
	"default:obsidian_glass",
	{cracky = 2},
	{face_tex},
	S("Obsidian Glass Inner Slope"),
	nil
)

stairs.register_slope_outer(
	"obsidian_glass",
	"default:obsidian_glass",
	{cracky = 2},
	{face_tex},
	S("Obsidian Glass Outer Slope"),
	nil
)

-- Brick, Snow and Ice

stairs.register_all("brick", "default:brick",
	{cracky = 3},
	{"default_brick.png"},
	S("Brick"),
	nil, false)

stairs.register_all("snowblock", "default:snowblock",
	{crumbly = 3, cools_lava = 1, snowy = 1},
	{"default_snow.png"},
	S("Snow Block"),
	nil, true)

stairs.register_all("ice", "default:ice",
	{cracky = 3, cools_lava = 1},
	{"default_ice.png"},
	S("Ice"),
	nil, true)

-- More Ores mod

if minetest.get_modpath("moreores") then

	stairs.register_all("silver_block", "moreores:silver_block",
		{cracky = 1, level = 2},
		{"moreores_silver_block.png"},
		minetest.get_translator("moreores")("Silver"),
		nil, true)

	stairs.register_all("mithril_block", "moreores:mithril_block",
		{cracky = 1, level = 2},
		{"moreores_mithril_block.png"},
		minetest.get_translator("moreores")("Mithril"),
		nil, true)
end

-- Mobs mod

if minetest.registered_nodes["mobs:cheeseblock"] then

	stairs.register_all("cheeseblock", "mobs:cheeseblock",
		{crumbly = 3, flammable = 2},
		{"mobs_cheeseblock.png"},
		minetest.get_translator("mobs_animal")("Cheese Block"),
		nil)

	stairs.register_all("honey_block", "mobs:honey_block",
		{crumbly = 3, flammable = 2},
		{"mobs_honey_block.png"},
		minetest.get_translator("mobs_animal")("Honey Block"),
		nil)
end

-- Lapis mod

if minetest.get_modpath("lapis") then

	stairs.register_all("lapis_block", "lapis:lapisblock",
		{cracky = 3},
		{"lapis_block_side.png"},
		minetest.get_translator("lapis")("Lapis Lazuli Block"),
		nil)
end

-- Homedecor mod

if minetest.get_modpath("homedecor") then

	stairs.register_all("shingles_asphalt", "homedecor:shingles_asphalt",
		{snappy = 3},
		{"homedecor_shingles_asphalt.png"},
		minetest.get_translator("homedecor_roofing")("Asphalt Shingles"),
		nil)

	stairs.register_all("shingles_terracotta", "homedecor:shingles_terracotta",
		{snappy = 3},
		{"homedecor_shingles_terracotta.png"},
		minetest.get_translator("homedecor_roofing")("Terracotta Shingles"),
		nil)

	stairs.register_all("shingles_wood", "homedecor:shingles_wood",
		{snappy = 3},
		{"homedecor_shingles_wood.png"},
		minetest.get_translator("homedecor_roofing")("Wooden Shingles"),
		nil)
end

-- Xanadu mod

if minetest.get_modpath("xanadu") then

	stairs.register_all("stained_wood_white", "xanadu:stained_wood_white",
		{choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
		{"stained_wood_white.png"},
		"White Wooden",
		nil, false)

	stairs.register_all("stained_wood_red", "xanadu:stained_wood_red",
		{choppy = 2, oddly_breakable_by_hand = 2, flammable = 3},
		{"stained_wood_red.png"},
		"Red Wooden",
		nil, false)

	stairs.register_all("stone1", "xanadu:stone1",
		{cracky = 3},
		{"stone1.png"},
		"Decorative Stone 1",
		nil)

	stairs.register_all("stone2", "xanadu:stone2",
		{cracky = 3},
		{"stone2.png"},
		"Decorative Stone 2",
		nil)

	stairs.register_all("stone3", "xanadu:stone3",
		{cracky = 3},
		{"stone3.png"},
		"Decorative Stone 3",
		nil)

	stairs.register_all("stone4", "xanadu:stone4",
		{cracky = 3},
		{"stone4.png"},
		"Decorative Stone 4",
		nil)

	stairs.register_all("stone5", "xanadu:stone5",
		{cracky = 3},
		{"stone5.png"},
		"Decorative Stone 5",
		nil)

	stairs.register_all("stone6", "moreblocks:stone_tile",--"xanadu:stone6",
		{cracky = 3},
		{"stone6.png"},
		"Decorative Stone 6",
		nil)

	stairs.register_all("sandstonebrick1", "xanadu:sandstonebrick1",
		{cracky = 3},
		{"sandstonebrick1.png"},
		"Decorative Sandstone 1",
		nil)

	stairs.register_all("sandstonebrick2", "xanadu:sandstonebrick2",
		{cracky = 3},
		{"sandstonebrick2.png"},
		"Decorative Sandstone 2",
		nil)

	stairs.register_all("sandstonebrick4", "xanadu:sandstonebrick4",
		{cracky = 3},
		{"sandstonebrick4.png"},
		"Decorative Sandstone 4",
		nil)

	stairs.register_slab("desert_cobble1", "xanadu:desert_cobble1",
		{cracky = 3},
		{"desert_cobble1.png"},
		"Decorative desert cobble 1 slab",
		nil)

	stairs.register_slab("desert_cobble5", "xanadu:desert_cobble5",
		{cracky = 3},
		{"desert_cobble5.png"},
		"Decorative desert cobble 5 slab",
		nil)

	stairs.register_slab("desert_stone1", "xanadu:desert_stone1",
		{cracky = 3},
		{"desert_stone1.png"},
		"Decorative desert stone 1 slab",
		nil)

	stairs.register_slab("desert_stone3", "xanadu:desert_stone3",
		{cracky = 3},
		{"desert_stone3.png"},
		"Decorative desert stone 3 slab",
		nil)

	stairs.register_slab("desert_stone4", "xanadu:desert_stone4",
		{cracky = 3},
		{"desert_stone4.png"},
		"Decorative desert stone 4 slab",
		nil)

	stairs.register_stair("desert_stone4", "xanadu:desert_stone4",
		{cracky = 3},
		{"desert_stone4.png"},
		"Decorative desert stone 4 stair",
		nil)

	stairs.register_slab("desert_stone5", "xanadu:desert_stone5",
		{cracky = 3},
		{"desert_stone5.png"},
		"Decorative desert stone 5 slab",
		nil)

	stairs.register_slab("red1", "xanadu:red1",
		{cracky = 3},
		{"baked_clay_red1.png"},
		"Decorative baked red clay 1 slab",
		nil)

	stairs.register_all("bred2", "xanadu:red2",
		{cracky = 3},
		{"baked_clay_red2.png"},
		"Decorative baked red clay 2",
		nil)

	stairs.register_all("compressed_cobble", "xanadu:compressed_cobble",
		{cracky = 3, level = 2},
		{"compressed_cobble.png"},
		"Compressed Cobble",
		nil)

	stairs.register_all("compressed_dirt", "xanadu:compressed_dirt",
		{crumbly = 2},
		{"compressed_dirt.png"},
		"Compressed Dirt",
		nil)

	stairs.register_all("goldblock1", "xanadu:goldblock1",
		{cracky = 1},
		{"gold_block1.png"},
		"Decorative Goldblock 1",
		nil)

	stairs.register_slope("steelblock1", "xanadu:steelblock1",
		{cracky = 1, level = 2},
		{"steel_block1.png"},
		"Decorative Steelblock 1",
		nil)

	stairs.register_slab("steelblock3", "xanadu:steelblock3",
		{cracky = 1, level = 2},
		{"steel_block3.png"},
		"Decorative Steelblock 3",
		nil)

	stairs.register_slope("steelblock5", "xanadu:steelblock5",
		{cracky = 1, level = 2},
		{"steel_block5.png"},
		"Decorative Steelblock 5",
		nil)

	stairs.register_slab("sandstone4", "xanadu:sandstone4",
		{crumbly = 2, cracky = 3},
		{"sandstone4.png"},
		"Decorative sandstone 4 slab",
		nil)
end

-- Castle mod

if minetest.get_modpath("castle") then

	stairs.register_all("dungeon_stone", "castle:dungeon_stone",
		{cracky = 2},
		{"castle_dungeon_stone.png"},
		minetest.get_translator("castle_masonry")("Dungeon Stone"),
		nil)

	stairs.register_all("stonewall", "castle:stonewall",
		{cracky = 2},
		{"castle_stonewall.png"},
		stairs.S("Castle Wall"),
		nil)
end

-- Wool mod

if minetest.get_modpath("wool") then

	local colours = {
		{"black", "Black"},
		{"blue", "Blue"},
		{"brown", "Brown"},
		{"cyan", "Cyan"},
		{"dark_green", "Dark Green"},
		{"dark_grey", "Dark Grey"},
		{"green", "Green"},
		{"grey", "Grey"},
		{"magenta", "Magenta"},
		{"orange", "Orange"},
		{"pink", "Pink"},
		{"red", "Red"},
		{"violet", "Violet"},
		{"white", "White"},
		{"yellow", "Yellow"},
	}

	for i = 1, #colours, 1 do

		stairs.register_all("wool_" .. colours[i][1], "wool:" .. colours[i][1],
			{snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, flammable = 3},
			{"wool_" .. colours[i][1] .. ".png"},
			minetest.get_translator("wool")(colours[i][2] .. " Wool"),
			nil) -- nil to use node's own sounds
	end
end


[User] 空

houzhui: .html

jiequqian: 空

jiequhou: 空

tupianqian: data-original="

biaotiqian: title="

lianjieqian: href="

jspic: pic

jsname: name

jsid: id

ssjiequqian: 空

ssjiequhou: 空

ssjiequshuzuqian: 空

ssjiequshuzuhou: 空

sstupianqian: 空

sstupianhou: 空

ssbiaotiqian: 空

ssbiaotihou: 空

sslianjieqian: 空

sslianjiehou: 空

bfjiequqian: 空

bfjiequhou: 空

bfjiequshuzuqian: class="stui-content__playlist clearfix

zhuangtaiqian: class="pic-text text-right">

zhuangtaihou: </span>

daoyanqian: 导演：

zhuyanqian: 主演：

juqingqian: stui-content__desc col-pd clearfix">

juqinghou: </div>

bfyjiequqian: 空

bfyjiequhou: 空

bfyjiequshuzuqian: <li

bflianjieqian: href="

license: unknown


23影院

houzhui: html

jiequshuzuqian: class="pack-ykpack

jiequshuzuhou: </div>

zhuangtaiqian: 类型：</span>

daoyanqian: 导演：</span>

zhuyanqian: 演员：</span>

juqingqian: 简介：</span>

bfyjiequshuzuqian: <a


31看影视

author: dj

jiequqian: <ul class="myui-vodlist

jiequshuzuhou: </span>

tupianqian: original="

sousuohouzhui: /voddetail/

bfjiequshuzuqian: id="playlist

zhuangtaiqian: 更新：</span>

zhuyanqian: 主演：</span>


348电影网

jspic: 空

jsname: 空

jsid: 空

ssjiequshuzuqian: class="thumb

sstupianqian: data-original="

ssbiaotiqian: title="

sslianjieqian: href="

bfjiequshuzuqian: <ul class="content_playlist

zhuangtaiqian: 状态：</span>

juqingqian: 详情：</span>


code:
{
  "name": "4kan电影网",
  "url": "https://www.4kan.cc/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodshow/1--------#国产剧$/vodshow/13-内地-------#日韩剧$/vodshow/15--------#欧美剧$/vodshow/16--------#港台剧$/vodshow/13-香港-------#台剧$/vodshow/13-台湾-------#综艺$/vodshow/3--------#动漫$/vodshow/4--------",
  "houzhui": "---/",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "lazyload",
  "jiequshuzuhou": "
",
  "tupianqian": "data-original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=50",
  "sousuohouzhui": "/voddetail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "style=\"bottom:0;backgroud-color:white;border-radius:0 10px 0 10px;\">",
  "zhuangtaihou": "",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "
",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


[User] User-Agent:Dart/2.14 (dart:io)

jiequqian: class="myui-vodlist clearfix

juqingqian: class="data" style="display: none;">

juqinghou: </span>


jiequshuzuqian: lazyload


sousuohouzhui: /vod/

juqingqian: <p class="col-pd">


code:
{
  "name": "98播播网",
  "url": "https://98bbw.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/whole/1/page/#电视剧$/whole/2/page/#国产剧$/whole/2/area/中国大陆/page/#港剧$/whole/2/area/中国香港/page/#韩剧$/whole/3/page/#日剧$/whole/5/page/#美剧$/whole/4/page/#综艺$/whole/22/page/#国产动漫$/whole/26/page/#日本动漫$/whole/25/page/#更新$/label/new",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "lazyload",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/show/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"stui-content__playlist clearfix\"",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"pic-text text-right\">",
  "zhuangtaihou": "",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "简介：",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


9亿资源

juqinghou: <a


COKEMV

jiequqian: module-page

jiequhou: <div id="page">

jiequshuzuqian: <a

jiequshuzuhou: no-referrer

zhuangtaiqian: 更新：

zhuangtaihou: </div>

daoyanhou: </div>

zhuyanhou: </div>

juqingqian: 简介：

juqinghou: /div>

bfjiequshuzuqian: class="module-list

bfjiequshuzuhou: </div>

bfbiaotiqian: <span>

bfbiaotihou: </span>


GAOAA

jiequqian: blank">百人牛牛，美女陪干！不爽就来干</a>

jiequhou: <div class="box-page">

jiequshuzuqian: class="video-pic loading

jiequshuzuhou: player

sousuoqian: /gaosearch/-/?wd=

sousuohouzhui: /gaotype/

ssjiequqian: blank">百人牛牛，美女陪干！不爽就来干</a>

ssjiequhou: <div class="box-page">

ssjiequshuzuqian: class="video-pic loading

ssjiequshuzuhou: player

sstupianqian: original="

bfjiequshuzuqian: class="item line">

daoyanqian: class="data">类型：

zhuyanqian: class="data">主演：


GIMY影视

bfjiequshuzuqian: class="myui-content__list sort-list scrollbar clearfix"

juqingqian: class="col-pd text-collapse content">

bfyjiequshuzuhou: /li>


code:
{
  "name": "LIBVIO",
  "url": "https://www.libvio.com",
  "tihuan": "dd520.cc",
  "User": "空",
  //"shouye": "1",
  "fenlei": "电视剧$/show/2--------#电影$/show/1--------#综艺$/show/3--------#动漫$/show/4--------#动作片$/show/1---动作-----#喜剧片$/show/1---喜剧-----#爱情片$/show/1---爱情-----#科幻片$/show/1---科幻-----#奇幻片$/show/1---奇幻-----#恐怖片$/show/1---恐怖-----#剧情片$/show/1---剧情-----#战争片$/show/1---战争-----#冒险片$/show/1---冒险-----#国产剧$/show/2-中国大陆-------#台剧$/show/2-中国台湾-------#港剧$/show/2-中国香港-------#韩剧$/show/2-韩国-------#日剧$/show/2-日本-------#美剧$/show/2-美国-------#英剧$/show/2-英国-------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "data",
  "jiequshuzuhou": "
",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/detail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"stui-content__playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"data\">总集数：",
  "zhuangtaihou": "
",
  "daoyanqian": "class=\"data\">类型：",
  "daoyanhou": "
",
  "zhuyanqian": "class=\"data\">主演：",
  "zhuyanhou": "
",
  "juqingqian": "class=\"detail-content\"",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


Nike影视网

sousuohouzhui: /detail/


code:
{
  "name": "TVB云播",
  "url": "https://www.hktv03.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vod/show/id/1/page/#国产剧$/vod/show/id/13/page/#港台剧$/vod/show/id/14/page/#日韩剧$/vod/show/id/15/page/#欧美剧$/vod/show/id/16/page/#综艺$/vod/show/id/3/page/#国产动漫$/vod/show/area/国产/id/4/page/#日本动漫$/vod/show/area/日本/id/4/page/#欧美动漫$/vod/show/area/欧美/id/4/page/",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"myui-vodlist__box\"",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/voddetail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "style=\"max-height",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "更新：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "简介：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


jiequshuzuqian: class="col-md-6 col-sm-4 col-xs-3"

bfjiequshuzuqian: class="stui-content__playlist clearfix"

juqingqian: class="detail-sketch"

bfyjiequshuzuqian: <li >


code:
{
  "name": "VIP电影院",
  "url": "https://www.mycleanlab.com",
  "User": "空",
  "shouye": "1",
  "fenlei": "电视剧$/frim/2-#电影$/frim/1-#综艺$/frim/3-#动漫$/frim/4-#国产剧$/frim/13-#港剧$/frim/28-#台剧$/frim/29-#韩剧$/frim/16-",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"stui-vodlist",
  "jiequshuzuhou": "
",
  "tupianqian": "data-original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/index.php/vod/detail/id/", //搜索页影片跳转详情页的中间标识链接部分
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"stui-content__playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "类型：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "class=\"detail-sketch",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": "title=\"",
  "bfbiaotihou": "\"",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


sh: 高清2

sh: 高清

sh: 高清源

sh: 小宝影院

sh: bili

地区

key: area

n: 全部

n: 大陆

v: 大陆

n: 港台

v: 港台

n: 日韩

v: 日韩

n: 欧美

v: 欧美

n: 其它

v: 其它

分类

key: class

n: 喜剧片

v: 喜剧片

n: 冒险片

v: 冒险片

n: 剧情片

v: 剧情片

n: 动作片

v: 动作片

n: 动画电影

v: 动画电影

n: 同性片

v: 同性片

n: 奇幻片

v: 奇幻片

n: 恐怖片

v: 恐怖片

n: 悬疑片

v: 悬疑片

n: 惊悚片

v: 惊悚片

n: 歌舞片

v: 歌舞片

n: 灾难片

v: 灾难片

n: 爱情片

v: 爱情片

n: 犯罪片

v: 犯罪片

n: 科幻片

v: 科幻片

n: 经典片

v: 经典片

n: 网络电影

v: 网络电影

n: 战争片

v: 战争片

年份

key: year

语言

key: lang

n: 国语

v: 国语

n: 英语

v: 英语

n: 粤语

v: 粤语

n: 韩语

v: 韩语

n: 日语

v: 日语

n: 法语

v: 法语

n: 德语

v: 德语

n: 西班牙

v: 西班牙

n: 意大利

v: 意大利

n: 泰国语

v: 泰国语

排序

key: by

n: 时间

v: time

n: 人气

v: hits

n: 评分

v: score


YYDS影院

jiequshuzuqian: class="col-lg-6 col-md-6 col-sm-4 col-xs-3"

sstupianqian: src="

zhuangtaiqian: 分类：</span>


zhuangtaiqian: class="score text-red">


city电影

jiequshuzuqian: class="col-sm-6 col-xs-3 hide-actor

biaotiqian: alt="

bfjiequshuzuqian: class="play-div-oa


hdmoli

sousuohouzhui: /movie/

ssjiequshuzuqian: class="thumb"

ssjiequshuzuhou: </span>

zhuangtaiqian: 更新周期：</span>


code:
{
  "name": "七年影视",
  "url": "https://www.lipinvip.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodshow/1--time------#国产剧$/vodshow/12--------#网剧$/vodshow/20--------#欧美剧$/vodshow/15--------#日韩剧$/vodshow/14--------#港台剧$/vodshow/13--------#海外剧$/vodshow/18--------#综艺$/vodshow/3--------#动漫$/vodshow/4--------#国产动漫$/vodshow/4-大陆-------#日本动漫$/vodshow/4-日本-------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"stui-vodlist__box",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=50",
  "sousuohouzhui": "/voddetail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"stui-content__playlist clearfix\"",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "状态：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "class=\"col-pd\">",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


不开VIP

juqingqian: class="col-pd">


乌龟影院

juqingqian: style="display: none;">


03-乐猪影视

jiequshuzuqian: class="vbox"

sousuohou: .html

ssjiequshuzuqian: class="vbox"

bfjiequshuzuqian: class="list_block show"

zhuangtaiqian: class="yac">

bfyjiequshuzuqian: <li>


九州影视

jiequshuzuqian: class="col-lg-8 col-md-6 col-sm-4 col-xs-3"

zhuyanqian: 主演:  </span>

juqingqian: class="sketch content">


伊雪湾

jiequshuzuqian: class="module-item-pic"

tupianqian: data-src="

zhuangtaiqian: 备注：</span>

juqingqian: 剧情：</span>


code:
{
  "name": "克拉TV",
  "url": "https://www.kelatv.com",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/dianying/index-#电视剧$/dianshiju/index-#动漫$/dongman/index-",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"layui-col-md2 layui-col-sm4 layui-col-xs6 item\"",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "alt=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/search/",
  "sousuohou": "",
  "sousuohouzhui": "/detail/",
  "ssmoshi": "1",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "class=\"video-txt\"",
  "ssjiequshuzuhou": "
",
  "sstupianqian": "original=\"",
  "sstupianhou": "\"",
  "ssbiaotiqian": "title=\"",
  "ssbiaotihou": "\"",
  "sslianjieqian": "href=\"",
  "sslianjiehou": "\"",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"layui-tab-item bt-playlist layui-show\"",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "
状态：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "class=\"bt-content\">
",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


六度TV

sousuoqian: /?c=search&wd=

ssjiequshuzuqian: class="v-thumb stui-vodlist

juqingqian: class="detail-sketch">

bflianjieqian: href='


创艺影视

zhuangtaiqian: class="text-red">

juqingqian: style="display: none;"><p>


code:
{
  "name": "利丽娅电影",
  "url": "https://www.llyady.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodshow/1--hits------#国产剧$/vodshow/28--------#日韩剧$/vodshow/29--------#欧美剧$/vodshow/30--------#港台剧$/vodshow/31--------#其他剧$/vodshow/31--------#综艺$/vodshow/3--------#动漫$/vodshow/4--------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"module-item-pic\"",
  "jiequshuzuhou": "
",
  "tupianqian": "data-src=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=50",
  "sousuohouzhui": "/video/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"sort-item-",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"module-item-text\">",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "剧情：",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": "",
  "bfbiaotihou": "",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


剧白白-蓝光

bfjiequshuzuqian: class="stui-content__playlist sort-list

zhuangtaiqian: class="data hidden-xs">类型：

daoyanqian: class="data">导演：


北川影视

jiequshuzuhou: class="loading"

bfjiequshuzuqian: class="scroll-content"


厂长资源-蓝光

tihuan: aliyundrive

jiequshuzuqian: <li>

sousuoqian: /xssearch?q=

ssjiequshuzuqian: <li>

ssbiaotiqian: alt="

zhuangtaiqian: 上映：<span>

daoyanqian: <li>导演：

zhuyanqian: <li>主演：


code:
{
  "name": "哔嘀影视",
  "url": "https://bidiys.cc/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "南瓜电影$/vodshow-nanguady--------#4K专区$/vodshow-huiyuanzhuanqu--------#电影$/vodshow-dianying--------#电视剧$/vodshow-lianxuju--------#日本番剧$/vodshow-lianxuju--------#动漫$/vodshow-dongman--------#综艺$/vodshow-zongyi--------#国产剧$/vodshow-guochanju--------#港台剧$/vodshow-gangtaiju--------#日韩剧$/vodshow-rihanju--------#欧美剧$/vodshow-oumeiju--------#其他海外$/vodshow-qita--------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"module-item-pic\"",
  "jiequshuzuhou": "loading",
  "tupianqian": "data-src=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/vodsearch--------------.html?wd=",
  "sousuohou": "",
  "sousuohouzhui": "/voddetail-",
  "ssmoshi": "1",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "class=\"module-item-pic\"",
  "ssjiequshuzuhou": "
",
  "sstupianqian": "data-src=\"",
  "sstupianhou": "\"",
  "ssbiaotiqian": "alt=\"",
  "ssbiaotihou": "\"",
  "sslianjieqian": "href=\"",
  "sslianjiehou": "\"",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"sort-item-",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"module-item-text\">",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "剧情：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": "",
  "bfbiaotihou": "",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


在线之家

zhuangtaiqian: class="data ">类型：


code:
{
  "name": "大师兄影视",
  "url": "https://dsxys.com/",
  "tihuan": "cnzz.com",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/type/1-#电视剧$/type/2-#国产剧$/type/13-#港台剧$/type/14-#日韩剧$/type/15-#欧美剧$/type/16-海外剧$/type/23-动画片$/type/50-#综艺$/type/3-#动漫$/type/4-",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "lazyload",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/v/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "更新：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "简介：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


code:
{
  "name": "大象TV",
  "url": "http://www.daxiangtv.net/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodshow/1--time------#国产剧$/vodshow/13--------#港台剧$/vodshow/14--------#欧美剧$/vodshow/16--------#日韩剧$/vodshow/15--------#海外剧$/vodshow/82--------#海外剧$/vodshow/18--------#综艺$/vodshow/3--------#动漫$/vodshow/4--------#国产动漫$/vodshow/4-国产-------#日本动漫$/vodshow/4-日本-------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "lazyload",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=50",
  "sousuohouzhui": "/voddetail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "更新：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "class=\"sketch content hide\"> ",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


code:
{
  "name": "奇优影院（不支持搜）",
  "url": "http://1e6e.com",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/list/1_#电视剧$/list/2_#综艺$/list/4_#动漫$/list/3_#伦理$/list/6_",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"stui-vodlist__box\"",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/search.php?searchword=",
  "sousuohou": ";post;utf-8",
  "sousuohouzhui": "/view/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"stui-content__playlist clearfix\"",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"pic-text text-right\">",
  "zhuangtaihou": "",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "简介：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}

path: xbiu/奇优影院（不支持搜）.json


奇粹影院

juqingqian: module-info-introduction-content">


code:
{
  "name": "奈菲影院",
  "url": "https://www.1985.one/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodshow/id/1/page/#国产剧$/vodshow/id/2/page/#日韩剧$/vodshow/29--------#欧美剧$/vodshow/30--------#港台剧$/vodshow/31--------#其他剧$/vodshow/31--------#综艺$/vodshow/3--------#动漫$/vodshow/4--------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"module-item-pic\"",
  "jiequshuzuhou": "
",
  "tupianqian": "data-src=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=50",
  "sousuohouzhui": "/voddetail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"sort-item-",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"module-item-text\">",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "剧情：",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": "",
  "bfbiaotihou": "",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


奈落影院

bfjiequshuzuqian: id="sort-item

zhuangtaiqian: 集数：</span>


code:
{
  "name": "完美看看影视",
  "url": "https://www.wanmeikk.me/",
  "tihuan": "cnzz.com",
  "User": "空",
  "shouye": "1",
  "fenlei": "电影$/category/1-#国产剧$/category/5-#欧美剧$/category/2-#韩剧$/category/3-#动漫$/category/6-#泰剧$/category/9-#纪录片$/category/10-", //列表的分类
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "class=\"stui-vodlist__box stui-vodlist__bg",
  "jiequhou": "
",
  "jiequshuzuqian": "lazyload",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/play/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"stui-pannel_bd col-pd clearfix",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "更新：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "class=\"data\" style=\"display: none;\">",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


小傻瓜

ssjiequshuzuqian: class="module-item-pic"

ssjiequshuzuhou: </div>

sstupianqian: data-src="

bfjiequshuzuqian: class="scroll-content

zhuangtaiqian: class="video-info-item">


小强迷

jiequshuzuqian: <li class="stui-vodlist__item">


小熊影视

tupianqian: src="

zhuyanhou: <span class="slash">


code:
{
  "name": "小猫咪",
  "url": "https://xmaomi.net/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodshow/1--------#国产剧$/vodshow/2-中国大陆-------#台剧$/vodshow/2-中国台湾-------#美剧$/vodshow/2-美国-------#港剧$/vodshow/2-中国香港-------#韩剧$/vodshow/2-韩国-------#综艺$/vodshow/3--------#动漫$/vodshow/4--------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"myui-vodlist__box",
  "jiequshuzuhou": "",
  "tupianqian": "data-original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/vodsearch/-------------.html?wd=",
  "sousuohou": "&submit=",
  "sousuohouzhui": "/vodplay/",
  "ssmoshi": "1",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "lazyload",
  "ssjiequshuzuhou": "
",
  "sstupianqian": "data-original=\"",
  "sstupianhou": "\"",
  "ssbiaotiqian": "title=\"",
  "ssbiaotihou": "\"",
  "sslianjieqian": "href=\"",
  "sslianjiehou": "\"",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"pic-text text-right\">",
  "zhuangtaihou": "",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "style=\"display: none;\">",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


尘落影院

jiequshuzuqian: class="movie-item-in

jiequshuzuhou: class="item-hover

sousuohouzhui: /show/

ssjiequshuzuqian: class="movie-item-in

bfjiequshuzuqian: class="row tv-js-list

zhuangtaiqian: 状态

daoyanqian: 导演

zhuyanqian: 主演

juqingqian: border-radius: 4px

bfyjiequshuzuqian: <div

bfyjiequshuzuhou: /div>

bfbiaotiqian: class="tv-js-btn">


开心果电影网

jiequshuzuqian: class="hl-item-thumb hl-lazy"

bfjiequshuzuqian: id="hl-plays-list

zhuangtaiqian: 更新：</em>

daoyanqian: 导演：</em>

zhuyanqian: 主演：</em>

juqingqian: 简介：</em>


code:
{
  "name": "影渣渣",
  "url": "https://www.yingzhazha.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodshow/1--------#电视剧$/vodshow/2--------#国产剧$/vodshow/13--------#港台剧$/vodshow/14--------#日韩剧$/vodshow/15--------#欧美剧$/vodshow/16--------#海外剧$/vodshow/23--------#泰剧$/vodshow/37--------#综艺$/vodshow/3--------#动漫$/vodshow/4--------#体育赛事$/vodshow/22--------#电视直播$/vodshow/28--------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"myui-vodlist__box\"",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/voddetail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "更新：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "简介：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


影视之光

zhuangtaiqian: class="pic-text text-right">

juqingqian: 剧情简介','


10-影视工厂

zhuangtaiqian: class="otherbox">

juqingqian: <span class="data"


思乐影视

jiequshuzuqian: class="module-item-pic

bfjiequshuzuqian: class="sort-item

juqingqian: 简介：</span>


手机看剧

jiequqian: id="list"

zhuangtaiqian: <em>

daoyanqian: class="text-muted">导演：

daoyanhou: </span>

zhuyanqian: class="text-muted">主演：

zhuyanhou: </span>

juqingqian: <div style="text-indent: 2em;">


星空影视

sousuohouzhui: /Moviedsetail/


code:
{
  "name": "极品影视",
  "url": "https://www.jpys.me/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodshow/1--------#电视剧$/vodshow/2--------#国产剧$/vodshow/13--------#港台剧$/vodshow/14--------#日韩剧$/vodshow/15--------#欧美剧$/vodshow/16--------#综艺$/vodshow/3--------#动漫$/vodshow/4--------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"myui-vodlist__box\"",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/voddetail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "更新：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "简介：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


火火影视

jiequshuzuqian: class="hl-list-item hl

zhuangtaiqian: 状态：</em>


炫猫影视

bfjiequshuzuqian: class="myui-content__list scrollbar sort-list clearfix

zhuangtaiqian: 备注：</div>

juqingqian: class="span">


爱港剧

jiequqian: class="stui-vodlist clearfix"

sousuohou: &submit=

sousuohouzhui: /dianshiju/

juqingqian: <span class="detail-sketch">


code:
{
  "name": "牛马TV",
  "url": "http://www.niumatv.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/type/dianying-#电视剧$/type/dianshiju-#国产剧$/vodshow/area/中国大陆/id/dianshiju/page/#港剧$/vodshow/area/中国香港/id/dianshiju/page/#韩剧$/vodshow/area/韩国/id/dianshiju/page/#欧美剧$/vodshow/area/美国/id/dianshiju/page/#综艺$/type/zongyi-#动漫$/type/dongman-",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  // /page/

     '
  "jiequshuzuqian": "lazyload",
  "jiequshuzuhou": "",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/vod/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"stui-content__playlist clearfix",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"pic-text text-right\">",
  "zhuangtaihou": "",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "简介：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


看一看影视

jiequshuzuqian: <a class="link-hover"

jiequshuzuhou: src=

sousuohouzhui: /vodhtml/

ssjiequshuzuqian: <a class="link-hover"

ssjiequshuzuhou: src=

bfjiequshuzuqian: class="videourl clearfix">

zhuangtaiqian: class="bz">


真不卡影院(不支持搜索)

sousuohouzhui: /edu-

bfjiequshuzuqian: class="stui-content__playlist clearfix


真不卡影院-不支持搜索

zhuangtaiqian: 更新：</span>


神马影视

sousuohouzhui: /kan/


神马影院

jiequshuzuqian: class="link-hover"

bfjiequshuzuqian: class="urlli clearfix"


神马影院10

bfjiequshuzuqian: class="btn btn-primary"

zhuangtaiqian: 状态: text-right

juqingqian: 简介


稀饭影视

[User] 无

sousuohouzhui: /yingpiandetail/


红领巾

sousuoqian: /search/

ssjiequshuzuqian: class="module-item-cover

bfjiequshuzuqian: stui-content__playlist clearfix


老电影

ssjiequshuzuqian: <a

zhuangtaiqian: 状态：

juqingqian: 剧情：


老茶馆

bfjiequshuzuqian: id="playlist


code:
{
  "name": "耐看点播",
  "url": "https://www.nkdyw.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/show/1--------#国产剧$/show/13--------#港台剧$/show/14--------#日韩剧$/show/15--------#欧美剧$/show/16--------#综艺$/show/3--------#国产动漫$/show/4-国产-------#日本动漫$/show/4-日本-------#欧美动漫$/show/4-欧美-------",
  "houzhui": "---.html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"module-item-pic",
  "jiequshuzuhou": "
",
  "tupianqian": "data-src=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/detail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"scroll-content",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "集数：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "剧情：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": "",
  "bfbiaotihou": "",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


花猫TV

bfjiequshuzuqian: class="stui-content__playlist clearfix"

zhuangtaiqian: class="data"


莫扎兔

jiequshuzuqian: class="pic"

tupianqian: lay-src="

biaotiqian: class="name">

biaotihou: </div>

bfjiequshuzuqian: id="zu


蓝光影视

jiequshuzuqian: <a

zhuangtaiqian: 更新：

juqingqian: 简介：

bfjiequshuzuqian: class="module-list


code:
{
  "name": "蓝莓影视",
  "url": "https://lanmeiguojiang.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/ys/index.php/vod/type/id/20/page/#电视剧$/vodshow/2--------#综艺$/vodshow/3--------#动漫$/vodshow/4--------#抖音电影$/vodshow/5--------#国产剧$/vodshow/13--------#港台剧$/vodshow/14--------#日韩剧$/vodshow/15--------#欧美剧$/vodshow/16--------#动作片$/vodshow/6--------#喜剧片$/vodshow/7--------#爱情片$/vodshow/8--------#科幻片$/vodshow/9--------#恐怖片$/vodshow/10--------#剧情片$/vodshow/11--------#战争片$/vodshow/12--------#犯罪片$/vodshow/23--------",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"stui-vodlist__box\"",
  "jiequshuzuhou": "
",
  "tupianqian": "original=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/ys/index.php/vod/search/wd/",
  "sousuohou": ".html",
  "sousuohouzhui": "/ys/index.php/vod/detail/id/",
  "ssmoshi": "1",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "class=\"stui-vodlist__box",
  "ssjiequshuzuhou": "",
  "sstupianqian": "data-original=\"",
  "sstupianhou": "\"",
  "ssbiaotiqian": "title=\"",
  "ssbiaotihou": "\"",
  "sslianjieqian": "href=\"",
  "sslianjiehou": "\"",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "id=\"playlist",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "状态：",
  "zhuangtaihou": "
",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "style=\"display: none;\">",
  "juqinghou": "",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


虎猫

zhuangtaiqian: 备注：</span>


视中心影院

bfjiequqian: class="module-heading"

bfjiequhou: type="text/javascript"


豆角网

jiequshuzuqian: class="con"

ssjiequshuzuqian: class="pic"

bfjiequshuzuqian: class="ulNumList clearfix list_1

juqingqian: 剧情:


达达龟

juqingqian: style="display: none;">


code:
{
  "name": "飘花播播",
  "url": "https://www.piaohuabo.com/",
  //"User": "User-Agent:Dart/2.14 (dart:io)",
  "shouye": "1",
  "fenlei": "电影$/vodtype/1-#电视剧$/vodtype/2-#国产剧$/vodtype/13-#港台剧$/vodtype/14-#日韩剧$/vodtype/15-#欧美剧$/vodtype/16-#海外剧$/vodtype/20-#综艺$/vodtype/3-#动漫$/vodtype/4-",
  "houzhui": ".html",
  "shifouercijiequ": "0",
  "jiequqian": "空",
  "jiequhou": "空",
  "jiequshuzuqian": "class=\"stui-vodlist__box\"",
  "jiequshuzuhou": "
",
  "tupianqian": "style=\"",
  "tupianhou": "\"",
  "biaotiqian": "title=\"",
  "biaotihou": "\"",
  "lianjieqian": "href=\"",
  "lianjiehou": "\"",
  "sousuoqian": "/index.php/ajax/suggest?mid=1&wd=",
  "sousuohou": "&limit=500",
  "sousuohouzhui": "/voddetail/",
  "ssmoshi": "0",
  "sousuoshifouercijiequ": "0",
  "jspic": "pic",
  "jsname": "name",
  "jsid": "id",
  "ssjiequqian": "空",
  "ssjiequhou": "空",
  "ssjiequshuzuqian": "空",
  "ssjiequshuzuhou": "空",
  "sstupianqian": "空",
  "sstupianhou": "空",
  "ssbiaotiqian": "空",
  "ssbiaotihou": "空",
  "sslianjieqian": "空",
  "sslianjiehou": "空",
  "bfshifouercijiequ": "0",
  "bfjiequqian": "空",
  "bfjiequhou": "空",
  "bfjiequshuzuqian": "class=\"stui-content__playlist clearfix\"",
  "bfjiequshuzuhou": "
",
  "zhuangtaiqian": "class=\"pic-text text-right\">",
  "zhuangtaihou": "",
  "daoyanqian": "导演：",
  "daoyanhou": "
",
  "zhuyanqian": "主演：",
  "zhuyanhou": "
",
  "juqingqian": "简介：",
  "juqinghou": "
",
  "bfyshifouercijiequ": "0",
  "bfyjiequqian": "空",
  "bfyjiequhou": "空",
  "bfyjiequshuzuqian": "",
  "bfbiaotiqian": ">",
  "bfbiaotihou": "<",
  "bflianjieqian": "href=\"",
  "bflianjiehou": "\""
}


饭团影院

juqingqian: class="data" style="display: none;">


骚火电影

ssjiequshuzuqian: <div class="v_img">

ssjiequshuzuhou: <div class="v_note">

daoyanhou: / 主演

juqingqian: class="p_txt show_part">

juqinghou: <br


鸭奈飞

jiequshuzuqian: <div class="module-item-pic">

juqingqian: 剧情：</span>


黑洞影视

sousuoqian: /vodsearch/


code:
全部
周杰伦
陈奕迅
Beyond
刘德华
郭富城
张学友
黎明
李宗盛
邓丽君
朴树
林子祥
任贤齐
张信哲
孙楠
张宇
周华健
蔡依林
薛之谦
洛天依
初音未来
许嵩
戴佩妮
邓紫棋
张韶涵
蔡健雅
莫文蔚
刘若英
周深
毛不易
汪苏泷
李宇春
徐佳莹
杨宗纬
胡彦斌
杨千嬅
张靓颖
李荣浩
杨丞琳
林志炫
陶喆
胡夏
李玉刚
弦子
陈小春
萧亚轩
鹿晗
纵贯线
许巍
林俊杰
赵雷
谭咏麟
凤凰传奇
容祖儿
周传雄
SHE
苏打绿
五月天
张国荣
梅艳芳
孙燕姿
李健
华晨宇
袁娅维
大张伟
TFBOYS
王俊凯
易烊千玺
王源
田馥甄
小虎队
张杰
王菲
伍佰
刀郎
草蜢
潘玮柏
梁静茹
林宥嘉
蔡徐坤
周慧敏
李圣杰
张惠妹
萧敬腾
周笔畅
焦迈奇
尤长靖
郑中基
谭维维
陈慧娴
张艺兴
王嘉尔
刘宪华
张敬轩
李克勤
阿杜
郭静
崔健
庾澄庆
汪峰
那英
杨坤
叶倩文
王心凌
张震岳
韩红
齐秦
张雨生
黄品源
林忆莲
丁当
郑智化
李玟
谢霆锋
黄小琥
徐小凤
任嘉伦
卓依婷
逃跑计划
青鸟飞鱼
飞儿乐队
花儿乐队
南拳妈妈
水木年华
动力火车
筷子兄弟
鹿先森乐队
信乐队
旅行团乐队
By2
郁可唯
宋亚森
费玉清
费翔
金志文
黄家强
方大同
吴克群
罗大佑
光良
田震
凤飞飞
谭晶
王杰
羽泉
金池
屠洪刚
戴荃
郭采洁
罗志祥
王力宏
林肯公园
迈克尔杰克逊
泰勒·斯威夫特
林肯公园
阿黛尔
BIGBANG
Lady Gaga
贾斯丁比伯
中岛美雪
仓木麻衣
后街男孩
布兰妮
夜愿乐队
----
----


🚬 厂长资源

ext: موارد مدير المصنع

👒 七七

ext: سبعة وسبعة

🐱 酷猫

ext: قط رائع

🧼 真不卡

ext: حقا ليس عالقا

🧿 Auete

ext: أويتي

🌀 低端影视

ext: السينما والتلفزيون الرديئة

🎾 360

ext: ثلاثة مائة وستون

🐱 喵狸盘搜

ext: مواء الراكون

🦊 小纸条

ext: ملاحظة

🎤 演唱会

ext: حفلة موسيقية

🐘 动物世界

ext: عالم الحيوان

🏮戏曲

ext: أوبرا

🪟 假窗·氛围·白噪声

ext: نافذة كاذبة

📺 设置直播为首页

ext: تعيين البث المباشر كصفحة رئيسية

🍭 推送

ext: علي

group: redirect

聚合

url: Demo

group: 软解码

fflags

value: fastseek

group: 硬解码


code:
autom4te.cache/
build-aux/
m4/
src/*.o
src/.deps/
src/audiowmark
aclocal.m4
configure
config.h
config.h.in
config.log
config.status
Makefile
Makefile.in
libtool
stamp-h1

repo_name: Tonypythony/audiowmark

path: .gitignore


code:
FROM gcc:latest

RUN apt-get update && apt-get install -y build-essential
RUN apt-get install -y libfftw3-dev
RUN apt-get install -y libsndfile1-dev
RUN apt-get install -y automake
RUN apt-get install -y autoconf
RUN apt-get install -y libtool
RUN apt-get install -y autoconf-archive

ADD . /audiowmark
WORKDIR /audiowmark

RUN ./autogen.sh
RUN make
RUN make install

ENTRYPOINT ["/usr/local/bin/audiowmark"]

path: Dockerfile


code:
SUBDIRS = src
ACLOCAL_AMFLAGS = -I m4


code:
Audio Watermarking

(TODO)

Building fftw

audiowmark needs the single prevision variant of fftw3.

If you are building fftw3 from source, use the `--enable-float`
configure parameter to build it, e.g.::

	cd ${FFTW3_SOURCE}
	./configure --enable-float --enable-sse && \
	make && \
	sudo make install

or, when building from git

	cd ${FFTW3_GIT}
	./bootstrap.sh --enable-shared --enable-sse --enable-float && \
	make && \
	sudo make install

Docker Build

You should be able to execute audiowmark via Docker.
Example that outputs the usage message:

  docker build -t audiowmark .
  docker run -it audiowmark -h

path: README


code:
#!/bin/bash

if automake --version >/dev/null 2>&1; then
  :
else
  echo "You need to have automake installed to build this package"
  DIE=1
fi

if autoconf --version >/dev/null 2>&1; then
  :
else
  echo "You need to have autoconf installed to build this package"
  DIE=1
fi

if libtoolize --version >/dev/null 2>&1; then
  :
elif glibtoolize --version >/dev/null 2>&1; then # macOS
  :
else
  echo "You need to have libtool installed to build this package"
  DIE=1
fi

if pkg-config --version >/dev/null 2>&1; then
  :
else
  echo "You need to have pkg-config installed to build this package"
  DIE=1
fi

# bail out as scheduled
test "0$DIE" -gt 0 && exit 1

echo "Running: autoreconf -i && ./configure $@"
autoreconf -f -i -Wno-portability && ./configure "$@"


code:
AC_INIT([audiowmark], [0.0.1])
AC_CONFIG_SRCDIR([src/audiowmark.cc])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CXX
AC_PROG_LIBTOOL

dnl
dnl sndfile
dnl
AC_DEFUN([AC_SNDFILE_REQUIREMENTS],
[
    PKG_CHECK_MODULES(SNDFILE, [sndfile])
    AC_SUBST(SNDFILE_CFLAGS)
    AC_SUBST(SNDFILE_LIBS)
])

dnl FFTW3
AC_DEFUN([AC_FFTW_CHECK],
[
    dnl this used to be optional, but is currently required
    PKG_CHECK_MODULES(FFTW, [fftw3f])

    SPECTMORPH_HAVE_FFTW=1
    if test $SPECTMORPH_HAVE_FFTW -gt 0; then
    fftw_save_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $FFTW_CFLAGS"
    AC_MSG_CHECKING([whether FFTW is recent enough])
      AC_COMPILE_IFELSE([
        AC_LANG_SOURCE([
          #include "fftw3.h"
          int x = FFTW_WISDOM_ONLY;
        ])
      ],[
        AC_MSG_RESULT([yes])
      ],[
        AC_MSG_RESULT([no])
        SPECTMORPH_HAVE_FFTW=0
      ])
    fi
    CFLAGS="$fftw_save_CFLAGS"
    AC_DEFINE_UNQUOTED(SPECTMORPH_HAVE_FFTW, $SPECTMORPH_HAVE_FFTW, [Whether libfftw3 is available])
])

AC_SNDFILE_REQUIREMENTS
AC_FFTW_CHECK

# need c++11 mode
AX_CXX_COMPILE_STDCXX_11(ext)

# use -Wall
AC_LANG_PUSH([C++])
AX_CHECK_COMPILE_FLAG([-Wall],                                 [CXXFLAGS="$CXXFLAGS -Wall"])
AC_LANG_POP([C++])

AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT


code:
bin_PROGRAMS = audiowmark

audiowmark_SOURCES = audiowmark.cc wavdata.cc wavdata.hh fft.cc fft.hh
audiowmark_LDFLAGS = $(SNDFILE_LIBS) $(FFTW_LIBS)