Basic functionality implemented
This commit is contained in:
		
							
								
								
									
										127
									
								
								api/api.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								api/api.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,127 @@
 | 
			
		||||
from hashlib import new
 | 
			
		||||
from typing import DefaultDict
 | 
			
		||||
import flask, werkzeug
 | 
			
		||||
from flask import request, jsonify
 | 
			
		||||
import myjdapi
 | 
			
		||||
import getpass
 | 
			
		||||
import configparser
 | 
			
		||||
 | 
			
		||||
app = flask.Flask(__name__)
 | 
			
		||||
app.config["DEBUG"] = True
 | 
			
		||||
 | 
			
		||||
jd = myjdapi.Myjdapi()
 | 
			
		||||
jd.set_app_key("flaskapiios")
 | 
			
		||||
 | 
			
		||||
config = configparser.RawConfigParser()
 | 
			
		||||
config.read('config.ini')
 | 
			
		||||
config.sections()
 | 
			
		||||
Email = config['Auth']['Email']
 | 
			
		||||
Password = config['Auth']['Password']
 | 
			
		||||
 | 
			
		||||
def get_id(links, uuid):
 | 
			
		||||
    for i, obj in enumerate(links):
 | 
			
		||||
        if obj["uuid"] == uuid:
 | 
			
		||||
            return i
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.route('/api/devices', methods=['GET'])
 | 
			
		||||
def api_devices():
 | 
			
		||||
    jd.connect(Email,Password)
 | 
			
		||||
    jd.update_devices()
 | 
			
		||||
    devicelist = jd.list_devices()
 | 
			
		||||
    devicesDict = dict()
 | 
			
		||||
    for i, obj in enumerate(devicelist):
 | 
			
		||||
        devicesDict[obj["name"]] = obj["name"]
 | 
			
		||||
    return jsonify(devicesDict)
 | 
			
		||||
 | 
			
		||||
@app.route('/api/linkgrabber', methods=['GET'])
 | 
			
		||||
def api_url():
 | 
			
		||||
    jd.connect(Email,Password)
 | 
			
		||||
    # Check if a URL was provided as part of the URL.
 | 
			
		||||
    # If URL is provided, assign it to a variable.
 | 
			
		||||
    # If no URL is provided, display an error in the browser.
 | 
			
		||||
    if 'url' in request.args:
 | 
			
		||||
        url = request.args['url']
 | 
			
		||||
        print(url)
 | 
			
		||||
    else:
 | 
			
		||||
        return "Error: No url field provided."
 | 
			
		||||
    if 'device' in request.args:
 | 
			
		||||
        print("THIS IS DEVICE: ")
 | 
			
		||||
        print(str(request.args['device']))
 | 
			
		||||
        device = jd.get_device(str(request.args['device']))
 | 
			
		||||
    else:
 | 
			
		||||
        return "Error: No device provided."
 | 
			
		||||
    device.linkgrabber.add_links([{
 | 
			
		||||
                                "autostart" : False,
 | 
			
		||||
                                "links" : url}])
 | 
			
		||||
    return ("Tue")
 | 
			
		||||
 | 
			
		||||
@app.route('/api/links', methods=['GET'])
 | 
			
		||||
def api_listlinks():
 | 
			
		||||
    jd.connect(Email,Password)
 | 
			
		||||
    if 'device' in request.args:
 | 
			
		||||
        device = jd.get_device(str(request.args['device']))
 | 
			
		||||
    else:
 | 
			
		||||
        return "Error: No device provided."
 | 
			
		||||
    links = device.linkgrabber.query_links()
 | 
			
		||||
    linkDict = dict()
 | 
			
		||||
    for i, obj in enumerate(links):
 | 
			
		||||
        linkDict[obj["name"]] = obj["uuid"]
 | 
			
		||||
    newList = list(linkDict.items())
 | 
			
		||||
 | 
			
		||||
    return dict(newList)
 | 
			
		||||
    return jsonify(device.linkgrabber.query_links())
 | 
			
		||||
 | 
			
		||||
@app.route('/api/variants', methods=['GET'])
 | 
			
		||||
def api_variants():
 | 
			
		||||
    jd.connect(Email,Password)
 | 
			
		||||
    if 'uuid' in request.args:
 | 
			
		||||
        uuid = int(request.args['uuid'])
 | 
			
		||||
    else:
 | 
			
		||||
        return "Error: no file selected"
 | 
			
		||||
    if 'device' in request.args:
 | 
			
		||||
        device = jd.get_device(str(request.args['device']))
 | 
			
		||||
    else:
 | 
			
		||||
        return "Error: No device provided."
 | 
			
		||||
 | 
			
		||||
    #links = device.linkgrabber.query_links()
 | 
			
		||||
 | 
			
		||||
    uuid = str(uuid).split()
 | 
			
		||||
    varid = "MKV_VP9_1080P_30FPS_AAC_128KBIT_DASH"
 | 
			
		||||
    varid = varid
 | 
			
		||||
    a = device.linkgrabber.get_variants(uuid)
 | 
			
		||||
    s = {
 | 
			
		||||
            "id" : "MP4_H264_1080P_30FPS_AAC_128KBIT_DASH",
 | 
			
		||||
            "data" : "{\r\n  \"aBitrate\" : -1,\r\n  \"height\" : 1080,\r\n  \"width\" : 1920,\r\n  \"fps\" : 30,\r\n  \"projection\" : \"NORMAL\"\r\n}"
 | 
			
		||||
        }
 | 
			
		||||
    print (s)
 | 
			
		||||
    s = str(s).split()
 | 
			
		||||
    device.linkgrabber.set_variant(uuid, s)
 | 
			
		||||
 | 
			
		||||
    return jsonify(device.linkgrabber.get_variants(uuid))
 | 
			
		||||
 | 
			
		||||
@app.route('/api/download', methods=['GET'])
 | 
			
		||||
def api_addownload():
 | 
			
		||||
    jd.connect(Email,Password)
 | 
			
		||||
    if 'uuid' in request.args:
 | 
			
		||||
#        file = []
 | 
			
		||||
        uuid = int(request.args['uuid'])
 | 
			
		||||
    else:
 | 
			
		||||
        return "Error: No file selected"
 | 
			
		||||
    if 'device' in request.args:
 | 
			
		||||
        device = jd.get_device(str(request.args['device']))
 | 
			
		||||
    else:
 | 
			
		||||
        return "Error: No device provided."
 | 
			
		||||
 | 
			
		||||
    links = device.linkgrabber.query_links()
 | 
			
		||||
 | 
			
		||||
    id = get_id(links, uuid)
 | 
			
		||||
    id = str(id).split()
 | 
			
		||||
    uuid = str(uuid).split() 
 | 
			
		||||
 | 
			
		||||
    device.linkgrabber.move_to_downloadlist(id, uuid)
 | 
			
		||||
    device.linkgrabber.clear_list()
 | 
			
		||||
    return ("Tue")
 | 
			
		||||
 
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
	app.run(host='0.0.0.0', port=5000)
 | 
			
		||||
		Reference in New Issue
	
	Block a user