Python Subprocess: Проблема с получением не ASCII символов от вывода YT-DLPPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Subprocess: Проблема с получением не ASCII символов от вывода YT-DLP

Сообщение Anonymous »

(Windows, Python 3.9.6, YT-DLP 2025.06.09) < /p>
У меня есть плейлист YouTube, чьи названия содержат как корейские, так и латинские символы. Я могу распечатать названия видео в списке воспроизведения, используя команду ниже: < /p>

Код: Выделить всё

yt-dlp --flat-playlist -i --print title PLySOINx0fqvYr6s8aGdqaK9j8_CAWcP5U
< /code>
Я получаю следующий вывод: < /p>
WARNING: [youtube:tab] YouTube said: INFO - 1 unavailable video is hidden
Vague (feat. Hey)
새벽 한 시
천 개의 태양
Wish
나쁘게
[온스테이지] 11. 캐스커 - 향
캐스커 (Casker) - 고양이와 나 (Cat and Me)
고양이와 나 (Acoustic Version)
...
< /code>
(точки не части выхода) < /p>
Я использую стандартную терминал CMD Windows. Когда кодовая страница моего терминала установлена ​​на 437 (по умолчанию) или 65001 (UTF-8), она отображает: 
 
. Используя кодовую страницу 949, как корейские, так и латинские символы отображаются правильно, как указано выше. Для любой кодовой страницы символы отображаются правильно, когда вывод копируется в блокнот или где -либо еще. < /P>
Однако, когда я запускаю это: < /p>
yt-dlp --flat-playlist -i --print title PLySOINx0fqvYr6s8aGdqaK9j8_CAWcP5U > out.txt 2>&1
< /code>
Я получаю следующее out.txt: < /p>
WARNING: [youtube:tab] YouTube said: INFO - 1 unavailable video is hidden
Vague (feat. Hey)

Wish

[] 11.  -
(Casker) -   (Cat and Me)
(Acoustic Version)
...
Корейские символы исчезают:

и я могу подтвердить, что они действительно ушли. Осталось только пространства. Запуск приведенного ниже кода: < /p>

Код: Выделить всё

import subprocess

p = subprocess.run("yt-dlp --flat-playlist -i --print title PLySOINx0fqvYr6s8aGdqaK9j8_CAWcP5U".split(), capture_output=True, text=True, encoding='cp949')

print((p.stdout.p.stderr))
< /code>
Я получаю следующий вывод: < /p>
('Vague (feat. Hey)\n  \n  \nWish\n\n[] 11.  - \n (Casker) -   (Cat and Me)\n  (Acoustic Version)\n - .mp4\nHidden Track\n    (feat.  Of My Aunt Mary)\n  (Song By  From Wanted)\nCasker - fragancia\nCasker () "Scent ()" [ ]\n   \n (Casker) -  \n (Casker) - Fragile Days\n\nSmall One\n (Casker) - Air Trip\nCasker - \nCasker -  (Just This Much)\nP\n[Vietsub] - Casker - A thousand suns (Live in Viewzic Session)\n\n (Casker) - Hidden Track\n47\n47 (ver. 2)\nMocha\nPolyester Heart\n\ntender - (Casker)\n (feat. )\n\n\n \n (Casker) - 7   (The Ipanema Girl in July)\n  NANJANG ;  casker ; \n\n  (Piano ver.)\n (Casker) - Midnight Moment\n (Casker) - Skip\nUndo\n[MV] (Casker) -  (The Smiler)\n Toothbrush (Acoustic Version)\n1103 (feat. )\n \nNowhere\n \n (Casker) -  (One Day) Pt. 2\n(Casker) -  \n8 \nCasker -  \n (Casker ) - Cactus\n', 'WARNING: [youtube:tab] YouTube said: INFO - 1 unavailable video is hidden\n')
< /code>
Используемая кодовая страница не имеет значения. < /p>
Что касается Python, я проверил все комбинации: < /p>

[*] Страница кода 437 против 65001 против 949 < /li>
/>os.environ=pythonioEncoding'ty=___
[*]sys.stdout.reconfigure(encoding=___)
 subprocess.popen vs subprocess.run < /li>
 hell = rely = rell = wrole /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /ret /rell hell. /> < /ul>
import subprocess

enc = "cp949"

import os
os.environ['PYTHONIOENCODING'] = enc

# import sys
# sys.stdout.reconfigure(encoding=enc)

# comm = "echo 철갑혹성"
comm = "yt-dlp --flat-playlist -i --print title PLySOINx0fqvYr6s8aGdqaK9j8_CAWcP5U"

# p = subprocess.Popen(comm, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True, encoding="utf-8")
# print(p.communicate())

p = subprocess.run(comm.split(), capture_output=True, text=True, shell=False, encoding=enc)
print((p.stdout, p.stderr))
Во всех случаях «Echo 새벽 한 시» дает правильный выход при маршрутизации к терминалу, файлу или строке, а команда YT-DLP не является. разницы между выходом к stdout против где -либо еще. Кроме того, YT-DLP работает и называет мои файлы идеально при простой загрузке видео.

Подробнее здесь: https://stackoverflow.com/questions/796 ... -of-yt-dlp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python Subprocess: Проблема с получением не ASCII символов от вывода YT-DLP
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Python Subprocess: Проблема с получением не ASCII символов от вывода YT-DLP
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Обработка турецких/не-ascii символов в subprocess.check_output в Python
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • ASCII Art — сортировка массива символов ASCII по уровням яркости (C/C++)
    Anonymous » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между subprocess.call и subprocess.run в Python
    Anonymous » » в форуме Python
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»