Итак, для того чтобы накрутить прослушивания, нам нужно выбрать ранее сгенерированную песню, предварительно сделав ее публичной. Теперь нужно получить айди этой песни. Для того чтобы получить айди, нам нужно скопировать ссылку на песню Затем выбрать рандомные буквы и цифры из ссылки. Далее нам нужно запустить python скрипт, который я оставлю ниже. После запуска скрипта нас попросят ввести айди песни, который мы скопировали ранее, затем нужно ввести сколько мы хотим накрутить прослушиваний. Теперь ждем пока скрипт выполнится. Готово! Скрипт: import requests song_id = input('song_id: ') count = int(input('count: ')) for i in range(count): try: increment = requests.post(url=f'https://studio-api.suno.ai/api/gen/{song_id}/increment_play_count/v2',json={'sample_factor':1}).text print(f'{i+1}/{count} incremented ({increment})') except: pass print('Done') Python import requests song_id = input('song_id: ') count = int(input('count: ')) for i in range(count): try: increment = requests.post(url=f'https://studio-api.suno.ai/api/gen/{song_id}/increment_play_count/v2',json={'sample_factor':1}).text print(f'{i+1}/{count} incremented ({increment})') except: pass print('Done') Многопоточный скрипт: import requests import time from threading import Thread from fake_useragent import UserAgent incremented = 0 song_id = input('song_id: ') count = int(input('count: ')) threads = int(input('threads: ')) def increment(count, song_id, thread_id): print(f'thread {thread_id} started.') global incremented while incremented < count: try: response = requests.post(url=f'https://studio-api.suno.ai/api/gen/{song_id}/increment_play_count/v2', json={'sample_factor': 1}, headers={'User-Agent': UserAgent(os='windows').random}).json() print(f'{incremented}/{count} incremented ({response}) - thread {thread_id}') incremented += 1 except: pass print(f'thread {thread_id} finished.') for i in range(threads): Thread(target=increment, args=(count, song_id, i+1)).start() time.sleep(0.005) Python import requests import time from threading import Thread from fake_useragent import UserAgent incremented = 0 song_id = input('song_id: ') count = int(input('count: ')) threads = int(input('threads: ')) def increment(count, song_id, thread_id): print(f'thread {thread_id} started.') global incremented while incremented < count: try: response = requests.post(url=f'https://studio-api.suno.ai/api/gen/{song_id}/increment_play_count/v2', json={'sample_factor': 1}, headers={'User-Agent': UserAgent(os='windows').random}).json() print(f'{incremented}/{count} incremented ({response}) - thread {thread_id}') incremented += 1 except: pass print(f'thread {thread_id} finished.') for i in range(threads): Thread(target=increment, args=(count, song_id, i+1)).start() time.sleep(0.005)
Сделал визуальный интерфейс Gradio. Можно запустить например на Hugging Face. Код: import gradio as gr import requests import time from threading import Thread from fake_useragent import UserAgent incremented = 0 def increment(count, song_id, thread_id, update_progress): print(f'Поток {thread_id} начат.') global incremented while incremented < count: try: response = requests.post (url=f'https://studio-api.suno.ai/api/gen/{song_id}/increment_play_count/v2 ', json={'sample_factor': 1}, headers={'User-Agent': UserAgent(os='windows').random}).json() incremented += 1 update_progress(incremented / count) print(f'{incremented}/{count} инкрементировано ({response}) - поток {thread_id}') except: pass print(f'Поток {thread_id} завершен.') def start_increment(song_id, count, threads): global incremented incremented = 0 progress = gr.Progress() def update_progress(val): progress(val) threads_list = [] for i in range(threads): thread = Thread(target=increment, args=(count, song_id, i+1, update_progress)) threads_list.append(thread) thread.start() time.sleep(0.005) for thread in threads_list: thread.join() return "Процесс завершен" with gr.Blocks() as demo: song_id = gr.Textbox(label="ID песни") count = gr.Number(label="Количество", precision=0, value=1000, minimum=1) threads = gr.Number(label="Потоки", precision=0, value=10, minimum=1) start_btn = gr.Button("Начать") output = gr.Textbox(label="Вывод") progress = gr.Progress() start_btn.click (start_increment, inputs=[song_id, count, threads], outputs=output) demo.queue(max_size=20).launch() Python import gradio as gr import requests import time from threading import Thread from fake_useragent import UserAgent incremented = 0 def increment(count, song_id, thread_id, update_progress): print(f'Поток {thread_id} начат.') global incremented while incremented < count: try: response = requests.post (url=f'https://studio-api.suno.ai/api/gen/{song_id}/increment_play_count/v2 ', json={'sample_factor': 1}, headers={'User-Agent': UserAgent(os='windows').random}).json() incremented += 1 update_progress(incremented / count) print(f'{incremented}/{count} инкрементировано ({response}) - поток {thread_id}') except: pass print(f'Поток {thread_id} завершен.') def start_increment(song_id, count, threads): global incremented incremented = 0 progress = gr.Progress() def update_progress(val): progress(val) threads_list = [] for i in range(threads): thread = Thread(target=increment, args=(count, song_id, i+1, update_progress)) threads_list.append(thread) thread.start() time.sleep(0.005) for thread in threads_list: thread.join() return "Процесс завершен" with gr.Blocks() as demo: song_id = gr.Textbox(label="ID песни") count = gr.Number(label="Количество", precision=0, value=1000, minimum=1) threads = gr.Number(label="Потоки", precision=0, value=10, minimum=1) start_btn = gr.Button("Начать") output = gr.Textbox(label="Вывод") progress = gr.Progress() start_btn.click (start_increment, inputs=[song_id, count, threads], outputs=output) demo.queue(max_size=20).launch()