Aggiunto supporto alla paginazione delle API
							parent
							
								
									70b135bb4a
								
							
						
					
					
						commit
						4e498f3c3b
					
				
							
								
								
									
										198
									
								
								onedriveLinks.py
								
								
								
								
							
							
						
						
									
										198
									
								
								onedriveLinks.py
								
								
								
								
							| 
						 | 
				
			
			@ -1,91 +1,107 @@
 | 
			
		|||
import re
 | 
			
		||||
from functools import reduce
 | 
			
		||||
import mysql.connector
 | 
			
		||||
import requests
 | 
			
		||||
 | 
			
		||||
LC_URL = "https://onedrive-vercel-index-3lgqsp5f2-tartamafajak22.vercel.app/api/?path=/"
 | 
			
		||||
LC_FILEURL = "https://onedrive-vercel-index-3lgqsp5f2-tartamafajak22.vercel.app/api/raw/?path=/"
 | 
			
		||||
session = requests.Session()
 | 
			
		||||
 | 
			
		||||
# CONNESSIONE AL DB
 | 
			
		||||
mydb = mysql.connector.connect(
 | 
			
		||||
  host="localhost",
 | 
			
		||||
  user="root",
 | 
			
		||||
  password="Lost66tmv",
 | 
			
		||||
  database="lordb"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
def DBSearchAndUpdate(link,value):
 | 
			
		||||
    mycursor = mydb.cursor()
 | 
			
		||||
    # sql = "SELECT * FROM `tbl_episode` WHERE titolo LIKE %s"
 | 
			
		||||
    sql = "UPDATE tbl_episode SET `link embedded` = %s WHERE titolo LIKE %s"
 | 
			
		||||
    val = (f'{link}',f'%{value}%')
 | 
			
		||||
    mycursor.execute(sql,val)
 | 
			
		||||
    myresult = mycursor.fetchone()
 | 
			
		||||
    print(myresult)
 | 
			
		||||
    if mycursor.rowcount == 1:
 | 
			
		||||
        print(myresult)
 | 
			
		||||
        mydb.commit()
 | 
			
		||||
    else:
 | 
			
		||||
        print("Impossibile trovare il file desiderato!")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def replaceString(string):
 | 
			
		||||
    repls = (".", " "), ("mp4", ""), ("_", " "),("SUB"," "),("ITA"," "),("XX","xx")
 | 
			
		||||
    return reduce(lambda a, kv: a.replace(*kv), repls, string)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def removeYearString(string):
 | 
			
		||||
    pattern = r"\d{4}"
 | 
			
		||||
    str_data = re.sub(pattern, "", string)
 | 
			
		||||
    return str_data
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def findOneDriveLinks(str):
 | 
			
		||||
    str = replaceString(str)
 | 
			
		||||
    str = removeYearString(str)
 | 
			
		||||
    match_str = re.findall(
 | 
			
		||||
        r"([a-zA-Z0-9]+)", str
 | 
			
		||||
    )  # In caso la stringa manipolata non dovesse dare risultati sul DB, viene suddiva in gruppi e testati fino a trovare un match
 | 
			
		||||
    if len(match_str)>0:
 | 
			
		||||
        title = separateUpperString(match_str[0])
 | 
			
		||||
        del(match_str[0])
 | 
			
		||||
        match_str = title + match_str 
 | 
			
		||||
        new_string = ""
 | 
			
		||||
        for x in match_str:
 | 
			
		||||
            new_string += x + " "
 | 
			
		||||
        new_string = new_string.rstrip()
 | 
			
		||||
        print(new_string)
 | 
			
		||||
        return new_string
 | 
			
		||||
    else:
 | 
			
		||||
        print(match_str)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def separateUpperString(str):
 | 
			
		||||
    title = re.findall('[a-zA-Z][^A-Z]*', str)
 | 
			
		||||
    return title
 | 
			
		||||
 | 
			
		||||
def apiOneDrive(folderType=None,nameFile=None):
 | 
			
		||||
    apiURL = f"{LC_URL}{folderType}"
 | 
			
		||||
    rawURL = f"{LC_FILEURL}{folderType}"
 | 
			
		||||
    r = session.get(apiURL)
 | 
			
		||||
    if r.status_code == 200:
 | 
			
		||||
        data = r.json()
 | 
			
		||||
        counter = 1
 | 
			
		||||
        fileCount = len(data["folder"]["value"])
 | 
			
		||||
        for file in data["folder"]["value"]:
 | 
			
		||||
            mp4File = file["name"]
 | 
			
		||||
            if nameFile:
 | 
			
		||||
                if counter<10:
 | 
			
		||||
                    fileName = f"{nameFile} Ep 0{counter}"
 | 
			
		||||
                else:
 | 
			
		||||
                    fileName = f"{nameFile} Ep {counter}"
 | 
			
		||||
            else:
 | 
			
		||||
                fileName = findOneDriveLinks(file["name"])
 | 
			
		||||
            link = f"{rawURL}{mp4File}"
 | 
			
		||||
            counter+=1
 | 
			
		||||
            DBSearchAndUpdate(link,fileName)
 | 
			
		||||
        print(f"Modificati con successo {fileCount} file in totale!")
 | 
			
		||||
    else:
 | 
			
		||||
        print(r.status_code)
 | 
			
		||||
        print(r.content)
 | 
			
		||||
import re
 | 
			
		||||
from functools import reduce
 | 
			
		||||
import mysql.connector
 | 
			
		||||
import requests
 | 
			
		||||
 | 
			
		||||
LC_URL = "https://onedrive-vercel-index-3lgqsp5f2-tartamafajak22.vercel.app/api/?path=/"
 | 
			
		||||
LC_FILEURL = "https://onedrive-vercel-index-3lgqsp5f2-tartamafajak22.vercel.app/api/raw/?path=/"
 | 
			
		||||
session = requests.Session()
 | 
			
		||||
 | 
			
		||||
# CONNESSIONE AL DB
 | 
			
		||||
mydb = mysql.connector.connect(
 | 
			
		||||
  host="localhost",
 | 
			
		||||
  user="root",
 | 
			
		||||
  password="Lost66tmv",
 | 
			
		||||
  database="lordb"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
def DBSearchAndUpdate(link,value):
 | 
			
		||||
    mycursor = mydb.cursor(buffered=True)
 | 
			
		||||
    sql = "UPDATE tbl_episode SET `link embedded` = %s WHERE `titolo` LIKE %s LIMIT 1"
 | 
			
		||||
    val = (f'{link}',f'%{value}%')
 | 
			
		||||
    mycursor.execute(sql,val)
 | 
			
		||||
    print(f"{mycursor.rowcount} - {value} - {link}")
 | 
			
		||||
    if mycursor.rowcount == 1:
 | 
			
		||||
        text = f"Modificato : {value}"
 | 
			
		||||
        writeToText(text)
 | 
			
		||||
        mydb.commit()
 | 
			
		||||
    else:
 | 
			
		||||
        text = f"Non Modificato : {value}"
 | 
			
		||||
        writeToText(text)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def replaceString(string):
 | 
			
		||||
    repls = (".", " "), ("mp4", ""), ("_", " "),("SUB"," "),("ITA"," "),("XX","xx")
 | 
			
		||||
    return reduce(lambda a, kv: a.replace(*kv), repls, string)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def removeYearString(string):
 | 
			
		||||
    pattern = r"\d{4}"
 | 
			
		||||
    str_data = re.sub(pattern, "", string)
 | 
			
		||||
    return str_data
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def findOneDriveLinks(str):
 | 
			
		||||
    str = replaceString(str)
 | 
			
		||||
    str = removeYearString(str)
 | 
			
		||||
    match_str = re.findall(
 | 
			
		||||
        r"([a-zA-Z0-9]+)", str
 | 
			
		||||
    )  # In caso la stringa manipolata non dovesse dare risultati sul DB, viene suddiva in gruppi e testati fino a trovare un match
 | 
			
		||||
    if len(match_str)>0:
 | 
			
		||||
        title = separateUpperString(match_str[0])
 | 
			
		||||
        del(match_str[0])
 | 
			
		||||
        match_str = title + match_str 
 | 
			
		||||
        new_string = ""
 | 
			
		||||
        for x in match_str:
 | 
			
		||||
            new_string += x + " "
 | 
			
		||||
        new_string = new_string.rstrip()
 | 
			
		||||
        return new_string
 | 
			
		||||
    else:
 | 
			
		||||
        print(match_str)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def separateUpperString(str):
 | 
			
		||||
    title = re.findall('[a-zA-Z][^A-Z]*', str)
 | 
			
		||||
    return title
 | 
			
		||||
 | 
			
		||||
def apiOneDrive(folderType=None,nameFile=None):
 | 
			
		||||
    apiURL = f"{LC_URL}{folderType}"
 | 
			
		||||
    rawURL = f"{LC_FILEURL}{folderType}"
 | 
			
		||||
    counter = 1
 | 
			
		||||
    r = session.get(apiURL)
 | 
			
		||||
    if r.status_code == 200:
 | 
			
		||||
        r = r.json()
 | 
			
		||||
        data = r["folder"]["value"]
 | 
			
		||||
        if r["next"]:
 | 
			
		||||
            while "next" in r:
 | 
			
		||||
                nextLink = r["next"]
 | 
			
		||||
                r = session.get(f"{apiURL}&next={nextLink}").json()
 | 
			
		||||
                data.extend(r["folder"]["value"])
 | 
			
		||||
        fileCount = len(data)
 | 
			
		||||
        fileFinderDB(nameFile, rawURL, data, counter)
 | 
			
		||||
        print(f"Trovati {fileCount} file in totale!")
 | 
			
		||||
    else:
 | 
			
		||||
        print(r.status_code)
 | 
			
		||||
        print(r.content)
 | 
			
		||||
 | 
			
		||||
def fileFinderDB(nameFile, rawURL, data, counter):
 | 
			
		||||
    for file in data:
 | 
			
		||||
        mp4File = file["name"]
 | 
			
		||||
        if nameFile:
 | 
			
		||||
            if counter<10:
 | 
			
		||||
                fileName = f"{nameFile} Ep 0{counter}"
 | 
			
		||||
            else:
 | 
			
		||||
                fileName = f"{nameFile} Ep {counter}"
 | 
			
		||||
        else:
 | 
			
		||||
            fileName = findOneDriveLinks(file["name"])
 | 
			
		||||
        link = f"{rawURL}{mp4File}"
 | 
			
		||||
        counter+=1
 | 
			
		||||
        DBSearchAndUpdate(link,fileName)
 | 
			
		||||
 | 
			
		||||
def writeToText(text):
 | 
			
		||||
    with open('link_modificati.txt', 'a', encoding='utf-8') as f:
 | 
			
		||||
        f.write(f"{text}\n")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
apiOneDrive("MLIF/")
 | 
			
		||||
		Loading…
	
		Reference in New Issue