трансфер с гитхаба
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import io
|
||||
import requests
|
||||
import os
|
||||
import time
|
||||
import json
|
||||
from yandex_music import Client
|
||||
from PIL import Image
|
||||
from mutagen.mp3 import MP3
|
||||
from mutagen.id3 import ID3, APIC
|
||||
|
||||
def get_yandex_cover(query, settings):
|
||||
try:
|
||||
client = Client().init()
|
||||
time.sleep(settings["delay"])
|
||||
search_result = client.search(query, type_='track')
|
||||
if search_result.tracks and search_result.tracks.results:
|
||||
track_obj = search_result.tracks.results[0]
|
||||
if track_obj.og_image:
|
||||
return "https://" + track_obj.og_image.replace('%%', '1000x1000')
|
||||
return None
|
||||
except:
|
||||
return None
|
||||
|
||||
def get_itunes_cover(query, settings):
|
||||
url = "https://itunes.apple.com/search"
|
||||
params = {"term": query, "entity": "song", "limit": 1}
|
||||
try:
|
||||
time.sleep(settings["delay"])
|
||||
response = requests.get(url, params=params, timeout=5)
|
||||
data = response.json()
|
||||
if data.get("resultCount", 0) > 0:
|
||||
return data["results"][0]["artworkUrl100"].replace("100x100bb.jpg", "1000x1000bb.jpg")
|
||||
return None
|
||||
except:
|
||||
return None
|
||||
|
||||
def get_best_cover(query, settings):
|
||||
cover_url = get_itunes_cover(query, settings)
|
||||
if not cover_url:
|
||||
cover_url = get_yandex_cover(query, settings)
|
||||
return cover_url
|
||||
|
||||
def set_cover(track_path, request):
|
||||
with open("settings.json", "r", encoding="utf-8") as file:
|
||||
settings = json.load(file)
|
||||
cover_url = get_best_cover(request, settings)
|
||||
if not cover_url:
|
||||
return
|
||||
|
||||
try:
|
||||
response = requests.get(cover_url, timeout=10)
|
||||
img = Image.open(io.BytesIO(response.content)).convert("RGB")
|
||||
|
||||
buffer = io.BytesIO()
|
||||
img.save(buffer, format="JPEG", quality=90)
|
||||
img_data = buffer.getvalue()
|
||||
|
||||
audio = MP3(track_path, ID3=ID3)
|
||||
if audio.tags is None:
|
||||
audio.add_tags()
|
||||
|
||||
audio.tags.add(
|
||||
APIC(
|
||||
encoding=3,
|
||||
mime='image/jpeg',
|
||||
type=3,
|
||||
desc='Cover',
|
||||
data=img_data
|
||||
)
|
||||
)
|
||||
audio.save()
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Ошибка: {e}")
|
||||
return False
|
||||
Reference in New Issue
Block a user