code:
from flask import Flask, request, jsonify, make_response
from user_manager import DummyUserManager
from jassjwt import JaaSJwtBuilder
import jwt
from functools import wraps
import datetime as dt
from werkzeug.security import generate_password_hash, check_password_hash
from flask_cors import CORS
from jwt_jitsi import jitsi_opensource_mock_shared_secret

user_manager = DummyUserManager()

app = Flask(__name__)
CORS(app)
app.config['SECRET_KEY'] = 'meowingful'

@app.route('/api/ping')
def index():
    return {"hello": "meowingfull day isn't it"}

# decorator for verifying the JWT
def token_required(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        token = None
        # jwt is passed in the request header
        if 'x-access-token' in request.headers:
            token = request.headers['x-access-token']
        # return 401 if token is not passed
        if not token:
            return jsonify({'message': 'Token is missing !!'}), 401

        try:
            # decoding the payload to fetch the stored details
            data = jwt.decode(token, app.config['SECRET_KEY'], algorithms="HS256")
            current_user = user_manager.get_user(data['public_id']).get_public_user()
            # current_user = User.query \
            #     .filter_by(public_id=data['public_id']) \
            #     .first()
        except Exception as e:
            print(e)
            return jsonify({
                'message': 'Token is invalid !!'
            }), 401
        # returns the current logged in users contex to the routes
        return f(current_user, *args, **kwargs)
    return decorated

@app.route('/api/me', methods=['GET'])
@token_required
def get_current_user(current_user):
    """
    it work because f(current_user, *args, **kwargs)
    :param current_user:
    :return:
    """
    return jsonify({'current_user': current_user})

@app.route('/api/jwt_jaas_8x8', methods=['GET'])
def demo_jaas_token():
    PRIVATE_KEY = "/home/tt/key/jitsi/jitsi.private"
    PUBLIC_KEY = "/home/tt/key/jitsi/jitsi.pub"
    key_content = open(PRIVATE_KEY).read()
    pubkey_content = open(PUBLIC_KEY).read()

    jaasJwt = JaaSJwtBuilder()  # Create new JaaSJwtBuilder and setup the claims.

    token = jaasJwt.withDefaults() \
        .withApiKey("vpaas-magic-cookie-2c39fbf723dc401b89e2f666fa7e6ace/cca7c6") \
        .withUserName("ttpro1995") \
        .withUserEmail("ttpro1995@gmail.com") \
        .withModerator(True) \
        .withAppID("vpaas-magic-cookie-2c39fbf723dc401b89e2f666fa7e6ace") \
        .withUserAvatar("https://asda.com/avatar") \
        .signWith(key_content)  # Pass the private here
    print(token)
    print(type(token))
    print(token.decode("utf-8"))
    token_str = token.decode("utf-8")
    return {"jitsi_jwt": token_str}

@app.route('/api/jwt_jaas_8x8_user', methods=['POST'])
@token_required
def demo_jaas_token_with_user(current_user):
    print(current_user)

    appid = "vpaas-magic-cookie-2c39fbf723dc401b89e2f666fa7e6ace"
    content = request.json
    username = current_user["username"]
    email = username + "@emeow.com"
    room = content["room"]
    roomname = appid + "/" + room
    PRIVATE_KEY = "/home/tt/key/jitsi/jitsi.private"
    PUBLIC_KEY = "/home/tt/key/jitsi/jitsi.pub"
    key_content = open(PRIVATE_KEY).read()
    pubkey_content = open(PUBLIC_KEY).read()

    jaasJwt = JaaSJwtBuilder()  # Create new JaaSJwtBuilder and setup the claims.

    token = jaasJwt.withDefaults() \
        .withApiKey("vpaas-magic-cookie-2c39fbf723dc401b89e2f666fa7e6ace/cca7c6") \
        .withUserName(username) \
        .withUserEmail(email) \
        .withModerator(True) \
        .withAppID("vpaas-magic-cookie-2c39fbf723dc401b89e2f666fa7e6ace") \
        .withUserAvatar("https://i.imgur.com/Jvh1OQm.jpg") \
        .signWith(key_content)  # Pass the private here
    print(token)
    print(type(token))
    print(token.decode("utf-8"))
    token_str = token.decode("utf-8")
    return {"jitsi_jwt": token_str, "username": username, "roomname": roomname, "email": email}

@app.route('/api/jwt_jitsi_sangatel', methods=['POST'])
@token_required
def demo_sangatel_token_with_user(current_user):
    print(current_user)

    appid = "meet-sangatel"
    content = request.json
    username = current_user["username"]
    email = username + "@emeow.com"
    room = content["room"]
    # roomname = appid + "/" + room
    roomname =  room
    PRIVATE_KEY = "/home/tt/key/jitsi/jitsi.private"
    PUBLIC_KEY = "/home/tt/key/jitsi/jitsi.pub"
    # key_content = open(PRIVATE_KEY).read()
    # pubkey_content = open(PUBLIC_KEY).read()
    token = jitsi_opensource_mock_shared_secret(room, username)

    return {"jitsi_jwt": token, "username": username, "roomname": roomname, "email": email}

# route for loging user in
@app.route('/api/login', methods=['POST'])
def login():
    # creates dictionary of form data
    auth = request.form

    if not auth or not auth.get('username') or not auth.get('password'):
        # returns 401 if any email or / and password is missing
        return make_response(
            {"error": -1, 'error_msg': 'Could not verify'},
            400,
            {'WWW-Authenticate': 'Basic realm ="Login required !!"'}
        )

    user = user_manager.get_user_by_username(auth.get("username"))

    if not user:
        # returns 401 if user does not exist
        return make_response(
            {"error": -1, 'error_msg': 'Could not verify'},
            400,
            {'WWW-Authenticate': 'Basic realm ="User does not exist !!"'}
        )

    if check_password_hash(user.password, auth.get('password')):
        # generates the JWT Token
        token = jwt.encode({
            'public_id': user.id,
            'username': user.username,
            'exp': dt.datetime.utcnow() + dt.timedelta(minutes=30)
        }, app.config['SECRET_KEY'], algorithm="HS256")

        return make_response(jsonify({'error': 0, 'token': token}), 201)
    # returns 403 if password is wrong
    return make_response(
        {"error": -1, 'error_msg': 'Could not verify'},
        400,
        {'WWW-Authenticate': 'Basic realm ="Wrong Password !!"'}
    )

if __name__ == '__main__':
    app.run(port=3000)


code:
flask
pyjwt
authlib
gunicorn
flask-cors

repo_name: hahattpro/meow

license: unknown


code:
from werkzeug.security import generate_password_hash, check_password_hash

class DummyUserManager:
    def __init__(self):
        self.user_map = {
            1: User(1, "pusheen", "meow"),
            2: User(2, "stormy", "meow2"),
            3: User(3, "meow1", "meow1"),
            4: User(4, "meow2", "meow2")
        }

    def get_user(self, user_id):
        return self.user_map.get(user_id, None)

    def get_user_by_username(self, username):
        for user_id in self.user_map.keys():
            user = self.user_map.get(user_id)
            if user.username == username:
                return user
        return None

class User:
    def __init__(self, userid, username, password):
        self.id = userid
        self.username = username
        self.password = generate_password_hash(password)

    def get_public_user(self):
        return {"id": self.id, "username": self.username}


code:
;(function() {
	var firstVisitTime = null;
	var previousVisitTime = null;
	var currentvisitTime = null;
	var visitsCount = null;
	var visitorId = null;

	var widgetName = null;
	var uniqueId = null;
	var hostname = null;
	var page_encoding = null;

	//encoding and hostname are optional parameters - used in pageview tracking
	GoogleAnalytics = function(_widgetName, _uniqueId, _hostname, _encoding)
	{
		widgetName = _widgetName;
		uniqueId = _uniqueId;

		if(_hostname == undefined || _hostname == null)
		{
			hostname = '127.0.0.1'; //assume default is localhost
		}
		else
		{
			hostname = _hostname;
		}

		if(_encoding == undefined || _encoding == null)
		{
			page_encoding = 'UTF-8'; //assume default is UTF-8
		}
		else
		{
			page_encoding = _encoding;
		}

		initialize();
	}
	GoogleAnalytics.prototype.trackEvent = function(category, action, label)
	{
		if(label == undefined || label == null)
		{
			label = '';
		}

		httpReq(
			getTrackURL(category, action, label),
			trackEventHandler
		);
	}
	GoogleAnalytics.prototype.trackPageview = function(a_URLToTrack)
	{
		if(a_URLToTrack == undefined || a_URLToTrack == null)
		{
			a_URLToTrack = '/'; //assume default is root
		}

		httpReq(
			getTrackURLPageView(a_URLToTrack),
			trackPageviewHandler
		);
	}

	function saveData()
	{
		var toSave = firstVisitTime + "|" +
			currentVisitTime + "|" +
			visitorId + "|" +
			visitsCount;

		widget.setPreferenceForKey(toSave, 'UserTracking');
	}
	function initialize()
	{
		var savedData = widget.preferenceForKey('UserTracking');

		var now = Math.floor(new Date().getTime() / 1000);

		currentVisitTime = now;

		if(savedData)
		{
			var splitted = savedData.split('|');

			firstVisitTime = splitted[0];
			previousVisitTime = splitted[1];

			visitorId = splitted[2];

			visitsCount = parseInt(splitted[3]) + 1;
		}
		else
		{
			firstVisitTime = now;

			previousVisitTime = now;

			visitorId = Math.floor(Math.random() * 1000000000);

			visitsCount = 1;
		}
		saveData();
	}
	function trackEventHandler(req, success)
	{
		alert(1);
	}
	function trackPageviewHandler(req, success)
	{
		alert(2);
	}
	function getTrackURL(category, action, label)
	{
		return "http://www.google-analytics.com/__utm.gif?" +
			"utmwv=4.6.5&" +
			"utmn=" + Math.floor(Math.random() * 100000000) + "&" +
			"utmhn=127.0.0.1&" +
			"utmt=event&" +
			"utme=5(" + encodeURIComponent(category) +
				"*" + encodeURIComponent(action) +
				"*" + encodeURIComponent(label) + ")&" +
			"utmcn=1&" +
			"utmdt=" + encodeURIComponent(widgetName) + "&" +
			"utmhid=" + Math.floor(Math.random() * 100000000) + "&" +
			"utmr=0&" +
			"utmp=%2Findex.html&" +
			"utmac=" + uniqueId + "&" +
			"utmcc=__utma%3D1." + visitorId +
			"." + firstVisitTime +
			"." + previousVisitTime + "." + currentVisitTime +
			"." + visitsCount +
			"%3B%2B__utmz%3D1." + firstVisitTime +
			"." + visitsCount +
			".1.utmcsr%3D(direct)|utmccn%3D(direct)|utmcmd%3D(none)%3B";
	}
	function getTrackURLPageView(a_URLToTrack)
	{
		return "http://www.google-analytics.com/__utm.gif?" +
			"utmwv=4.8.6" +
			"utmn=" + Math.floor(Math.random() * 100000000) + "&" +
			"utmhn=" + hostname + "&" +
			"utmcs=" + page_encoding +
			"utmdt=" + encodeURIComponent(widgetName) + "&" +
			"utmhid=" + Math.floor(Math.random() * 100000000) + "&" +
			"utmr=-&" +
			"utmp=" + encodeURIComponent(a_URLToTrack) + "&" +
			"utmac=" + uniqueId + "&" +
			"utmcc=__utma%3D1." + visitorId +
			"." + firstVisitTime +
			"." + previousVisitTime + "." + currentVisitTime +
			"." + visitsCount +
			"%3B%2B__utmz%3D1." + firstVisitTime +
			"." + visitsCount +
			".1.utmcsr%3D(direct)|utmccn%3D(direct)|utmcmd%3D(none)%3B&utmu=D";
	}
	function httpReq(url, func)
	{
		try
		{
			netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
		}
		catch(e)
		{
		}

		var request = new XMLHttpRequest();

		request.onreadystatechange = function()
		{
			if(request.readyState == 4)
			{
				if(request.status == 200)
					func(request, true);
				else
					func(request, false);
			}
		}
		request.open( "GET", url, true );

		request.send(null);
	}
})();

repo_name: snapshot/wrtgoogleanalytics


code:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>GoogleAnalyticsTest</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>com.nokia.wrt.widgetPreviewBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>com.nokia.wrt.WidgetProjectNature</nature>
		<nature>com.aptana.ide.project.nature.web</nature>
	</natures>
</projectDescription>


code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Nokia//DTD PLIST 1.0//EN" "http://www.nokia.com/DTDs/plist-1.0.dtd">
<plist version="1.0">
<dict>
	<key>DisplayName</key>
	<string>GoogleAnalytics</string>
	<key>Identifier</key>
	<string>com.jappit.wrt.googleanalytics</string>
	<key>Version</key>
	<string>1.0</string>
	<key>AllowNetworkAccess</key>
	<true/>
	<key>MainHTML</key>
	<string>index.html</string>
	<key>MiniViewEnabled</key>
	<false/>
</dict>
</plist>


code:
#track_actions a {
	display: block;
	padding: 16px 2px;
	border: 1px solid gray;
	background: lightgray;
	text-align: center;
	color: #333;
	margin-bottom: 4px;
	text-decoration: none;
}
#track_actions a:hover {
	background: blue;
	color: white;
}


code:
var tracker;

function init()
{
	// insert your own widget name Google Analytics account ID here
	//tracker = new GoogleAnalytics('Test Widget', 'UA-298789-6');

	//if you are planning to use trackPageview(); you can also specify a hostname
	tracker = new GoogleAnalytics('Test Widget', 'UA-298789-6', 'www.example.com');
}


code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

		<title> Sample Widget</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    	<link rel="stylesheet" href="basic.css" type="text/css">
    	<META NAME="Generator" CONTENT="Nokia WRT plug-in for Aptana Studio 2.0.0" />

Track actions:

			Category 1, Action 1, No label
			Category 1, Action 2, Label 1
			Category 1, Action 2, Label 2
			Category 2, Action 1, No Label
			Track PageView test


code:
;(function() {
	var firstVisitTime = null;
	var previousVisitTime = null;
	var currentvisitTime = null;
	var visitsCount = null;
	var visitorId = null;

	var widgetName = null;
	var uniqueId = null;
	var hostname = null;
	var page_encoding = null;

	//encoding and hostname are optional parameters - used in pageview tracking
	GoogleAnalytics = function(_widgetName, _uniqueId, _hostname, _encoding)
	{
		widgetName = _widgetName;
		uniqueId = _uniqueId;

		if(_hostname == undefined || _hostname == null)
		{
			hostname = '127.0.0.1'; //assume default is localhost
		}
		else
		{
			hostname = _hostname;
		}

		if(_encoding == undefined || _encoding == null)
		{
			page_encoding = 'UTF-8'; //assume default is UTF-8
		}
		else
		{
			page_encoding = _encoding;
		}

		initialize();
	}
	GoogleAnalytics.prototype.trackEvent = function(category, action, label)
	{
		if(label == undefined || label == null)
		{
			label = '';
		}

		httpReq(
			getTrackURL(category, action, label),
			trackEventHandler
		);
	}
	GoogleAnalytics.prototype.trackPageview = function(a_URLToTrack)
	{
		if(a_URLToTrack == undefined || a_URLToTrack == null)
		{
			a_URLToTrack = '/'; //assume default is root
		}

		httpReq(
			getTrackURLPageView(a_URLToTrack),
			trackPageviewHandler
		);
	}

	function saveData()
	{
		var toSave = firstVisitTime + "|" +
			currentVisitTime + "|" +
			visitorId + "|" +
			visitsCount;

		widget.setPreferenceForKey(toSave, 'UserTracking');
	}
	function initialize()
	{
		var savedData = widget.preferenceForKey('UserTracking');

		var now = Math.floor(new Date().getTime() / 1000);

		currentVisitTime = now;

		if(savedData)
		{
			var splitted = savedData.split('|');

			firstVisitTime = splitted[0];
			previousVisitTime = splitted[1];

			visitorId = splitted[2];

			visitsCount = parseInt(splitted[3]) + 1;
		}
		else
		{
			firstVisitTime = now;

			previousVisitTime = now;

			visitorId = Math.floor(Math.random() * 1000000000);

			visitsCount = 1;
		}
		saveData();
	}
	function trackEventHandler(req, success)
	{
		alert(1);
	}
	function trackPageviewHandler(req, success)
	{
		alert(2);
	}
	function getTrackURL(category, action, label)
	{
		return "http://www.google-analytics.com/__utm.gif?" +
			"utmwv=4.6.5&" +
			"utmn=" + Math.floor(Math.random() * 100000000) + "&" +
			"utmhn=127.0.0.1&" +
			"utmt=event&" +
			"utme=5(" + encodeURIComponent(category) +
				"*" + encodeURIComponent(action) +
				"*" + encodeURIComponent(label) + ")&" +
			"utmcn=1&" +
			"utmdt=" + encodeURIComponent(widgetName) + "&" +
			"utmhid=" + Math.floor(Math.random() * 100000000) + "&" +
			"utmr=0&" +
			"utmp=%2Findex.html&" +
			"utmac=" + uniqueId + "&" +
			"utmcc=__utma%3D1." + visitorId +
			"." + firstVisitTime +
			"." + previousVisitTime + "." + currentVisitTime +
			"." + visitsCount +
			"%3B%2B__utmz%3D1." + firstVisitTime +
			"." + visitsCount +
			".1.utmcsr%3D(direct)|utmccn%3D(direct)|utmcmd%3D(none)%3B";
	}
	function getTrackURLPageView(a_URLToTrack)
	{
		return "http://www.google-analytics.com/__utm.gif?" +
			"utmwv=4.8.6" +
			"utmn=" + Math.floor(Math.random() * 100000000) + "&" +
			"utmhn=" + hostname + "&"
			"utmcs=" + page_encoding +
			"utmdt=" + encodeURIComponent(widgetName) + "&" +
			"utmhid=" + Math.floor(Math.random() * 100000000) + "&" +
			"utmr=-&" +
			"utmp=" + encodeURIComponent(a_URLToTrack) + "&" +
			"utmac=" + uniqueId + "&" +
			"utmcc=__utma%3D1." + visitorId +
			"." + firstVisitTime +
			"." + previousVisitTime + "." + currentVisitTime +
			"." + visitsCount +
			"%3B%2B__utmz%3D1." + firstVisitTime +
			"." + visitsCount +
			".1.utmcsr%3D(direct)|utmccn%3D(direct)|utmcmd%3D(none)%3B&utmu=D";
	}
	function httpReq(url, func)
	{
		try
		{
			netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
		}
		catch(e)
		{
		}

		var request = new XMLHttpRequest();

		request.onreadystatechange = function()
		{
			if(request.readyState == 4)
			{
				if(request.status == 200)
					func(request, true);
				else
					func(request, false);
			}
		}
		request.open( "GET", url, true );

		request.send(null);
	}
})();


code:
{
  "sites": [
    {
      "key": "豆瓣",
      "name": "🐼┃豆瓣┃飞天",
      "type": 3,
      "api": "csp_DouDou",
      "searchable": 0,
      "quickSearch": 0,
      "filterable": 0
    },
    {
      "key": "直播转点播",
      "name": "🐼┃电视┃直播",
      "type": 3,
      "api": "http://我不是.肥猫.love:63/JS/直播转点播2.js",
      "ext": "https://notabug.org/0.0/1/raw/master/zb.js"
    },
	{
      "key": " 在线┃直播",
      "name": "📺┃竞技┃直播",
      "type": 3,
      "api": "csp_Yj1211",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "Aid",
      "name": "🚑┃急救┃教学",
      "type": 3,
      "api": "csp_FirstAid",
      "searchable": 0,
      "quickSearch": 0,
      "style": {
        "type": "rect",
        "ratio": 3.8
      },
      "gridview": "0-0-4.1"
    },
    {
      "key": "alist",
      "name": "🍰┃小鸭┃网盘",
      "type": 3,
      "api": "csp_AList",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext":"http://alist.xn--z7x900a.love:63/alist.json"
    },
    {
      "key": "YGP",
      "name": "🚀┃叨观┃荐影",
      "type": 3,
      "api": "csp_YGP",
      "searchable": 0,
      "quickSearch": 0
    },
    {
      "key": "荐片",
      "name": "🎬┃荐片┃影视",
      "type": 3,
      "api": "https://agit.ai/fantaiying/fty/raw/branch/master/JS/drpy1.min.js",
      "ext": "https://agit.ai/fantaiying/fty/raw/branch/master/JS/js/jp.js"
    },
    {
      "key": "磁力熊",
      "name": "🐻┃熊熊┃磁力",
      "type": 3,
      "api": "http://alist.xn--z7x900a.love:63/ddrpy2.m.js",
      "ext": "http://alist.xn--z7x900a.love:63/磁力熊.js",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
    "key": "素白",
    "name": "🦢┃素白┃影视",
    "type": 3,
    "api": "csp_XBPQ",
    "ext": "http://我不是.肥猫.love:63/json/素白白.json"
    },
    {
    "key": "虎虎",
    "name": "🐯┃虎虎┃影视",
    "type": 3,
    "api": "csp_XBPQ",
    "ext": "http://我不是.肥猫.love:63/json/虎虎.json"
    },
{
   "key": "熊猫",
   "name": "🐼┃熊猫┃影视",
   "type": 3,
   "api": "csp_XBPQ",
   "ext": {
      "简介": "
&&
",
      "主演": "主演：class=\"module-info-item-title\">&&",
      "导演": "导演：&&",
      "影片年代": "年份：&&
",
      "影片地区": "地区：&&
",
      "影片类型": "类型：&&
",
      "影片状态": "更新：&&",
      "数组": "<a&&

",
      "标题": "title=\"&&\"",
      "图片": "data-original=\"&&\"",
      "链接": "href=\"&&\"",
      "副标题": "
&&
",
      "线路数组": "data-dropdown-value=&&
[排序:索尼>快看]",
      "线路标题": "&&[替换:>>🐼共]+集",
      "播放数组": "
&&
",
      "播放标题": "&&",
      "播放列表": "<a&&",
      "播放链接": "href=\"&&\"",
      "分类": "电影&电视剧&综艺&动漫",
      "分类值": "52&69&77&75",
      "分类url": "https://xmvod520.com/index.php/vod/show/by/{by}/id/{cateId}/page/{catePg}/year/{year}.html"
   }
},
{    "key": "蜗牛弹幕",
                "name": "🐌┃蜗牛┃影视",
                "type": 3,
                "api": "csp_XBPQ",
                "ext": {
 "简介":"class=\"video-info-item video-info-content vod_content\">&&",
 "数组":"class=\"module-item-text\"&&class=\"loading\"",
  "线路数组":"data-dropdown-value=&&
",
   "线路标题":"&&[替换:>>共]+集",
 "副标题":" class=\"module-item-text\">&&
",
 "分类":"电影$1#日韩剧$21#海外剧$2#动漫$20",
    "分类url":"https://v.wuxivlog.cn/index.php/vod/show/area/{area}/by/{by}/class/{class}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html"
        }
        },

{"key":"快帆","name":"⛵┃快帆┃影视","type":1,"api":"https://api.kuaifan.tv/api.php/provide/vod","categories":["国产剧","香港剧","台湾剧","韩国剧","日本剧","欧美剧","动作片","动画片","短片","喜剧片","爱情片","科幻片","古装片","历史片","大陆综艺","港台综艺","日韩综艺","国产动漫","欧美动漫","日本动漫"]},

    {
      "key": "YQK_spider",
      "name": "🙆┃一起┃电视",
      "type": 3,
      "api": "csp_YQKAPP",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "playerType": 2,
      "ext": "https://hk-api-cf.yqk5659.com"
    },
    {
       "key": "益达影视",
       "name": "🌝┃益达┃影视",
       "type": 3,
       "api": "csp_AppYsV2",
       "searchable": 1,
       "quickSearch": 1,
       "filterable": 1,
       "ext": "https://myd666.tv/lvdou_api.php/v1.vod"
    },
    {
      "key": "七七",
      "name": "🌈┃七七┃影视",
      "type": 3,
      "api": "csp_Kunyu77",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "csp_Nmys",
      "name": "🌾┃农民┃影视",
      "type": 3,
      "api": "csp_Nmys",
      "ext": "https://agit.ai/fantaiying/fty/raw/branch/master/json/nmys.json"
    },
    {
      "key": "csp_DiDuan",
      "name": "⏮┃低端┃影视",
      "type": 3,
      "api": "csp_Ddrk",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 0
    },
    {
      "key": "厂长",
      "name": "🏭┃厂长┃影视",
      "type": 3,
      "api": "csp_Czsapp",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "playerType": 2,
      "ext": "https://cz01.cc/"
    },
    {
      "key": "csp_FanYY",
      "name": "🧸┃玩偶┃影视",
      "type": 3,
      "api": "csp_WoGG",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "http://127.0.0.1:9978/file/fatcat/token.txt$$$https://wogg.xyz/"
    },
    {
      "key": "csp_AppMr",
      "name": "👻┃明明┃影视",
      "type": 3,
      "api": "csp_AppMr",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "奇奇",
      "name": "🐭┃迷迷┃影视",
      "type": 3,
      "api": "csp_AppYsV2",
      "playerType": "2",
      "ext": "http://www.miniku.cc/xgapp.php/v1/",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "爱迪",
      "name": "💡┃爱迪┃影视",
      "type": 3,
      "api": "csp_AppYsV2",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "playerType": 2,
      "ext": "https://api123.adys.app/xgapp.php/v3/"
    },
    {
      "key": "Kuaikan",
      "name": "👀┃快看┃影视",
      "type": 3,
      "api": "csp_Kuaikan",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
        "key": "飞速",
        "name": "🚄┃影探┃影视",
        "type": 3,
        "api": "csp_YTVIP",
        "searchable": 1,
        "quickSearch": 1,
        "filterable": 1,
        "ext": "vip.lyyytv.cn"
    },
    /*{
      "key": "蘑菇",
      "name": "🍄┃蘑菇┃影视",
      "type": 3,
      "api": "csp_XBPQ",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "http://我不是.肥猫.love:63/json/蘑菇.json"
    },*/
    {
      "key": "csp_Lib",
      "name": "💫┃Lib  ┃影视",
      "type": 3,
      "api": "csp_Libvio",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 0,
      "playerType": 2,
      "ext": "https://www.libvio.fun/"
    },
    /*{
      "key": "csp_Auete",
      "name": "🏝┃Aue ┃影视",
      "type": 3,
      "api": "csp_Auete",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },*/
    {
      "key": "鸭鸭",
      "name": "🦆┃鸭鸭┃影视",
      "type": 3,
      "api": "csp_AppYsV2",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "https://yayayaaapp.ynf.icu/api.php/app/"
    },
    {
      "key": "drpy_js_奇珍异兽",
      "name": "🐨┃爱奇┃官源",
      "type": 3,
      "api": "http://alist.xn--z7x900a.love:63/ddrpy2.m.js",
      "ext": "http://alist.xn--z7x900a.love:63/爱奇.js"
    },
    {
      "key": "Qtv",
      "name": "🐧┃企鹅┃官源",
      "type": 3,
      "api": "csp_Qtv",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "csp_SP360",
      "name": "📺┃360┃官源",
      "type": 3,
      "api": "csp_XBPQ",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "http://我不是.肥猫.love:63/json/360影视.json"
    },
    {
      "key": "MGT",
      "name": "🍋┃芒果┃官源",
      "type": 3,
      "api": "csp_Mtv",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "csp_Ysgc",
      "name": "🎥┃影视┃工厂",
      "type": 3,
      "api": "csp_Ysgc",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "https://www.ysgc.fun"
    },
    {
      "key": "蓝猫动漫",
      "name": "🌊┃蓝猫┃动漫",
      "type": 3,
      "api": "csp_XBPQ",
      "ext": "分类:日漫$1#国漫$2#剧场$3#美漫$4#少儿$5,分类url:https://www.lmfun.vip/vodshow/area/{area}/by/{by}/class/{class}/id/{cateId}/page/{catePg}/year/{year}.html"
    },
    {
      "key": "csp_Ying",
      "name": "🌸┃樱花┃动漫",
      "type": 3,
      "api": "csp_Ying",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "csp_Anime1",
      "name": "💀┃日本┃动漫",
      "type": 3,
      "api": "csp_Anime1",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    /*{
      "key": "csp_XBiuCOKEMV",
      "name": "🍬┃可乐┃影视",
      "type": 3,
      "api": "csp_Cokemv",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "playerType": 2
    },*/
    {
      "key":"豪华资源",
      "name":"🥬┃豪华┃影视",
      "type":1,
      "api":"https://hhzyapi.com/api.php/provide/vod/?ac=list",
      "searchable":1,
      "quickSearch":1,
      "categories":["动画片","中国动漫","日本动漫","欧美动漫","剧情片","战争片","动作片","科幻片","记录片","爱情片","喜剧片","灾难片","悬疑片","犯罪片","内地剧","香港剧","欧美剧","韩剧","日剧","马泰剧","台湾剧","大陆综艺","日韩综艺","港台综艺","欧美综艺"]
    },
    {
      "key": "csp_search_七夜",
      "name": "👴┃七夜┃搜索",
      "type": 3,
      "api": "csp_Dovx",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 0,
      "ext": "http://127.0.0.1:9978/file/fatcat/token.txt"
    },
    {
      "key": "csp_search_PanSearch",
      "name": "🗂┃盘搜┃搜索",
      "type": 3,
      "api": "csp_PanSearch",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 0,
      "ext": "http://127.0.0.1:9978/file/fatcat/token.txt"
    },
    {
      "key": "csp_search_Yisou",
      "name": "🐏┃易搜┃搜索",
      "type": 3,
      "api": "csp_YiSo",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 0,
      "playerType": 1,
      "ext": "http://127.0.0.1:9978/file/fatcat/token.txt"
    },
    {
      "key": "csp_search_Zhaozy",
      "name": "🐑┃资源┃搜索",
      "type": 3,
      "api": "csp_Zhaozy",
      "searchable": 1,
      "quickSearch": 0,
      "filterable": 0,
      "playerType": 1,
      "ext": "http://127.0.0.1:9978/file/fatcat/token.txt$$$feimao$$$123456"
    },
    {
      "key": "csp_search_Upyunso",
      "name": "🐐┃云搜┃搜索",
      "type": 3,
      "api": "csp_UpYun",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 0,
      "playerType": 1,
      "ext": "http://127.0.0.1:9978/file/fatcat/token.txt"
    },
    {
      "key": "csp_search_Alips",
      "name": "🦌┃盘搜┃搜索",
      "type": 3,
      "api": "csp_PanSou",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 0,
      "playerType": 1,
      "ext": "http://127.0.0.1:9978/file/fatcat/token.txt"
    },
    {
      "key": "csp_BBB",
      "name": "🅱┃哔哩┃合集",
      "type": 3,
      "api": "csp_Bili",
      "searchable": 1,
      "quickSearch": 0,
      "ext": "http://我不是.肥猫.love:63/json/bili.json"
    },
    {
      "key": "csp_戏曲",
      "name": "🅱┃哔哩┃戏曲",
      "type": 3,
      "api": "csp_Bili",
      "searchable": 1,
      "quickSearch": 0,
      "ext": "http://我不是.肥猫.love:63/json/戏曲.json"
    },
    {
      "key": "演唱会",
      "name": "🅱┃哔哩┃音乐",
      "type": 3,
      "api": "csp_Bili",
      "searchable": 0,
      "quickSearch": 0,
      "ext": "http://我不是.肥猫.love:63/json/ych.json"
    },
    /*{
      "key": "js虎牙",
      "name": "🐅┃虎牙┃直播",
      "type": 3,
      "api": "http://alist.xn--z7x900a.love:63/ddrpy2.m.js",
      "searchable": 0,
      "quickSearch": 0,
      "filterable": 0,
      "ext": "http://alist.xn--z7x900a.love:63/虎牙直播.js"
    },
    {
      "key": "csp_XYQBiu_斗鱼",
      "name": "🐟┃斗鱼┃直播",
      "type": 3,
      "api": "csp_XYQBiu",
      "searchable": 0,
      "quickSearch": 0,
      "filterable": 0,
      "ext": "http://我不是.肥猫.love:63/json/斗鱼.json"
    },
    {
      "key": "csp_XPath_企鹅体育",
      "name": "🐧┃企鹅┃体育",
      "type": 3,
      "api": "csp_XPath",
      "searchable": 0,
      "quickSearch": 0,
      "filterable": 0,
      "ext": "http://我不是.肥猫.love:63/json/企鹅直播.json"
    },
    {
      "key": "dr_88看球",
      "name": "🏀┃八八┃看球",
      "type": 3,
      "api": "http://alist.xn--z7x900a.love:63/ddrpy2.m.js",
      "searchable": 0,
      "quickSearch": 0,
      "filterable": 0,
      "ext": "http://alist.xn--z7x900a.love:63/88看球.js"
    },
    {
      "key": "drpy_js_JRKAN直播",
      "name": "🏀┃JRS┃看球",
      "type": 3,
      "api": "http://alist.xn--z7x900a.love:63/ddrpy2.m.js",
      "ext": "http://alist.xn--z7x900a.love:63/JRKAN直播.js"
    },*/
    {
      "key": "csp_XYQBiu_聚合短视频",
      "name": "📽┃视频┃聚合",
      "type": 3,
      "api": "csp_XYQBiu",
      "searchable": 0,
      "quickSearch": 0,
      "filterable": 0,
      "ext": "http://我不是.肥猫.love:63/json/短视频.json"
    },
   /* {
      "key": "drpy_js_有声小说吧",
      "name": "📻┃有声┃小说",
      "type": 3,
      "api": "http://alist.xn--z7x900a.love:63/ddrpy2.m.js",
      "ext": "http://alist.xn--z7x900a.love:63/有声小说吧.js"
    },
    {
      "key": "drpy_js_蜻蜓FM",
      "name": "📻┃蜻蜓┃收音",
      "type": 3,
      "api": "http://alist.xn--z7x900a.love:63/ddrpy2.m.js",
      "ext": "http://alist.xn--z7x900a.love:63/蜻蜓FM.js"
    },*/
    {
      "key": "csp_Nbys",
      "name": "✈┃泥巴┃墙外",
      "type": 3,
      "api": "csp_NiNi",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "csp_trj",
      "name": "✈┃唐人┃墙外",
      "type": 3,
      "api": "csp_Tangrenjie",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "csp_If101",
      "name": "✈┃If10 ┃墙外",
      "type": 3,
      "api": "csp_If101",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "csp_Xiaoh",
      "name": "✈┃小宝┃墙外",
      "type": 3,
      "api": "csp_Xiaoh",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1
    },
    {
      "key": "儿童",
      "name": "📚┃少儿┃教育",
      "type": 3,
      "api": "csp_Bili",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "http://52bsj.vip:81/api/v3/file/get/61578/%E5%B0%91%E5%84%BF%E6%95%99%E8%82%B2.json?sign=3BlFTWj-rXJPPgJB6eQ1_C0odRnDCaW28cr8afXaO_I%3D%3A0"
    },
    {
      "key": "小学",
      "name": "📚┃小学┃课堂",
      "type": 3,
      "api": "csp_Bili",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "http://52bsj.vip:81/api/v3/file/get/61579/%E5%B0%8F%E5%AD%A6%E8%AF%BE%E5%A0%82.json?sign=Oqbf9547dxbhVTf07kdHsuNZgzIWH2UT9uY7zRbTA5M%3D%3A0"
    },
    {
      "key": "初中",
      "name": "📚┃初中┃课堂",
      "type": 3,
      "api": "csp_Bili",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "http://52bsj.vip:81/api/v3/file/get/61581/%E5%88%9D%E4%B8%AD%E8%AF%BE%E5%A0%82.json?sign=7Jxqd0BzuIm-2OvXZyoRasDb1P3OojENYkxLf6bhLr0%3D%3A0"
    },
    {
      "key": "高中",
      "name": "📚┃高中┃课堂",
      "type": 3,
      "api": "csp_Bili",
      "searchable": 1,
      "quickSearch": 1,
      "filterable": 1,
      "ext": "http://52bsj.vip:81/api/v3/file/get/61580/%E9%AB%98%E4%B8%AD%E8%AF%BE%E5%A0%82.json?sign=ESNTJf_EMO0ch_J5j-kV35jFLeg1GvG4VJjUqW2DJCc%3D%3A0"
    },
    {
      "key": "push_agent",
      "name": "▶┃推送┃磁力",
      "type": 3,
      "api": "csp_Push",
      "searchable": 0,
      "quickSearch": 0,
      "filterable": 0,
      "playerType": 1,
      "ext": "http://127.0.0.1:9978/file/fatcat/token.txt+4k|auto|fhd"
    }
  ],
  "lives": [
    {
      "name": "live",
      "type": 0,
      "playerType": 1,
      "url": "https://notabug.org/0.0/1/raw/master/live.txt",
      "ua": "okhttp/3.12.13",
      "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}",
      "logo": "https://epg.112114.xyz/logo/{name}.png"
    },
    {
      "group": "redirect",
      "channels": [
        {
          "name": "redirect",
          "urls": [
            "proxy://do=live&type=txt&ext=aHR0cHM6Ly9ub3RhYnVnLm9yZy8wLjAvMS9yYXcvbWFzdGVyL2xpdmUudHh0"
          ]
        }
      ]
    }
  ],
  "parses": [
    {
      "name": "解析聚合",
      "type": 3,
      "url": "Demo"
    },
    {
      "name": "Web聚合",
      "type": 3,
      "url": "Web"
    },
    {
      "name": "Json轮询",
      "type": 2,
      "url": "Sequence"
    },
    {
      "name": "Json并发",
      "type": 2,
      "url": "Parallel"
    },
    {
      "name": "但行好事",
      "type": 1,
      "url": "http://jx.fuqizhishi.com:63/接口地址www.肥猫.love/肥猫专用.php?url="
    },
    {
      "name": "莫问前程",
      "type": 1,
      "url": "http://27.124.4.42:4567/jhjson/ceshi.php?url="
    },
    {
      "name": "左岸解析",
      "type": 1,
      "url": "http://110.42.2.247:880/analysis/json/?uid=2449&my=acfgikquvzFGJRW459&url="
    },
    {
      "name": "星辰云解析",
      "type": 1,
      "url": "https://json.key521.cn/api/?key=df27d9ca9ec97e22c47f8565a50aa6f5&url="
    },
    {
      "name": "小新解析",
      "type": 1,
      "url": "http://xiaoxin.1080p.fun/home/api?type=ys&uid=91198&key=bhntuwyAJLMTUY1478&url="
    },
    {
      "name": "小鱼解析",
      "type": 1,
      "url": "http://json.84jia.com/home/api?type=ys&uid=335253&key=fjklpqsyCDGMNQRWX8&url="
    },
    {
"name": "夜曲解析",
"type": 1,
"url": "http://xhww.fun:63/小米特别爱肥猫.php?url=",
"ext": {
"flag": ["qq", "腾讯", "qiyi", "爱奇艺", "奇艺", "youku", "优酷", "sohu", "搜狐", "letv", "乐视", "mgtv", "芒果", "CL4K", "renrenmi", "ltnb", "bilibili", "1905", "xigua", "nongmin", "CL4K", "xfyun", "ffm3u8", "lzm3u8", "netease", "pgyer","TD", "qzone", "FY", "ppayun", "Feiyun", "zhibo"],
"header": {
"User-Agent": "Dalvik/2.1.0 (Linux; U; Android 10; PDHM00 Build/QKQ1.191222.002)"

}
}}
  ],

  "flags": [
    "youku",
    "优酷",
    "优 酷",
    "优酷视频",
    "qq",
    "腾讯",
    "腾 讯",
    "腾讯视频",
    "iqiyi",
    "qiyi",
    "奇艺",
    "爱奇艺",
    "爱 奇 艺",
    "m1905",
    "xigua",
    "letv",
    "leshi",
    "乐视",
    "乐 视",
    "sohu",
    "搜狐",
    "搜 狐",
    "搜狐视频",
    "tudou",
    "pptv",
    "mgtv",
    "芒果",
    "imgo",
    "芒果TV",
    "芒 果 T V",
    "bilibili",
    "哔 哩",
    "哔 哩 哔 哩",
    "FY",
    "fy",
    "FeiYun",
    "feiyun",
    "飞云"
  ],
  "ijk": [
    {
      "group": "软解码",
      "options": [
        {
          "category": 4,
          "name": "opensles",
          "value": "0"
        },
        {
          "category": 4,
          "name": "overlay-format",
          "value": "842225234"
        },
        {
          "category": 4,
          "name": "framedrop",
          "value": "1"
        },
        {
          "category": 4,
          "name": "soundtouch",
          "value": "1"
        },
        {
          "category": 4,
          "name": "start-on-prepared",
          "value": "1"
        },
        {
          "category": 1,
          "name": "http-detect-range-support",
          "value": "0"
        },
        {
          "category": 1,
          "name": "fflags",
          "value": "fastseek"
        },
        {
          "category": 2,
          "name": "skip_loop_filter",
          "value": "48"
        },
        {
          "category": 4,
          "name": "reconnect",
          "value": "1"
        },
        {
          "category": 4,
          "name": "max-buffer-size",
          "value": "5242880"
        },
        {
          "category": 4,
          "name": "enable-accurate-seek",
          "value": "0"
        },
        {
          "category": 4,
          "name": "mediacodec",
          "value": "0"
        },
        {
          "category": 4,
          "name": "mediacodec-auto-rotate",
          "value": "0"
        },
        {
          "category": 4,
          "name": "mediacodec-handle-resolution-change",
          "value": "0"
        },
        {
          "category": 4,
          "name": "mediacodec-hevc",
          "value": "0"
        },
        {
          "category": 1,
          "name": "dns_cache_timeout",
          "value": "600000000"
        }
      ]
    },
    {
      "group": "硬解码",
      "options": [
        {
          "category": 4,
          "name": "opensles",
          "value": "0"
        },
        {
          "category": 4,
          "name": "overlay-format",
          "value": "842225234"
        },
        {
          "category": 4,
          "name": "framedrop",
          "value": "1"
        },
        {
          "category": 4,
          "name": "soundtouch",
          "value": "1"
        },
        {
          "category": 4,
          "name": "start-on-prepared",
          "value": "1"
        },
        {
          "category": 1,
          "name": "http-detect-range-support",
          "value": "0"
        },
        {
          "category": 1,
          "name": "fflags",
          "value": "fastseek"
        },
        {
          "category": 2,
          "name": "skip_loop_filter",
          "value": "48"
        },
        {
          "category": 4,
          "name": "reconnect",
          "value": "1"
        },
        {
          "category": 4,
          "name": "max-buffer-size",
          "value": "5242880"
        },
        {
          "category": 4,
          "name": "enable-accurate-seek",
          "value": "0"
        },
        {
          "category": 4,
          "name": "mediacodec",
          "value": "1"
        },
        {
          "category": 4,
          "name": "mediacodec-auto-rotate",
          "value": "1"
        },
        {
          "category": 4,
          "name": "mediacodec-handle-resolution-change",
          "value": "1"
        },
        {
          "category": 4,
          "name": "mediacodec-hevc",
          "value": "1"
        },
        {
          "category": 1,
          "name": "dns_cache_timeout",
          "value": "600000000"
        }
      ]
    }
  ],
  "ads": [
    "wan.51img1.com",
    "iqiyi.hbuioo.com",
    "vip.ffzyad.com",
    "https://lf1-cdn-tos.bytegoofy.com/obj/tos-cn-i-dy/455ccf9e8ae744378118e4bd289288dd"
  ],
  "wallpaper": "http://我不是.肥猫.love:63/ppic/feimao.php",
  "warningText": "接口自用",
  "spider": "http://我不是.肥猫.love:63/Jar/pandaQ230928.jar;md5;02c40490ea14c433b66fcc0ce2f2ed94"
}