Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » youtube-dl | yt-dlp (Часть 2)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущее обсуждение: часть 1

Текущая версия: 2021.12.17


youtube-dl - бесплатная консольная программа для скачивания видео с YouTube и множества других сайтов.
Сейчас проект практически не развивается, скорость скачивания с YouTube не выше 100 КБ/сек - рекомендуется использовать yt-dlp.
 
официальные ночные сборки


 
youtube-dl с фиксом скорости, не требует SSE2
youtube-dl с фиксом скорости (другой вариант)
неофициальные ночные сборки youtube-dl  





yt-dlp - активный форк youtube-dl, рекомендуется к использованию. Минимальная версия Windows 8. Linux
Цели проекта: добавление новых функций, исправление известных проблем. Есть различия в поведении от основного проекта.
 
ytdl-patched Форк yt-dlp с некоторыми изменениями (очень похож на yt-dlp, но есть свои дополнения, например предпочитает объединять в mkv)
yt-dlp для Windows XP x86 и Windows 7
ссылки на всегда последние версии nicolaasjan
yt-dlp для Windows XP x86 (устарело, не обновляется)
примеры для начинающих (англ)
некоторые шаблоны и в чем-то более детальная документация, чем на оф-сайте (англ)
 
Графические интерфейсы
  • MediaDownloader (2023)
  • Metube (web-UI)
  • Tartube (2023)
  • Videomass (2023)
  • Vividl (2023)
  • youtube-dl-gui (murrty, 2022)
  • youtube-dl-gui (oleksis, 2023)
  • Stacher (2023)
     
    Полезное
  • ffmpeg.exe - yt-dlp/FFmpeg-Builds | Нюанс под Windows 7 раз два
  • кнопки от notinthewoods
  • Youtube Format IDs  
  • Автоматическое скачивание комментариев к видеороликам Youtube с их преобразованием в удобный для чтения HTML-формат от PREVED
  • Обход корпоративных/провайдерских блокировок
  • Обход блокировок связанный с медиаконтентом - видео, аудио..
     

  • Всего записей: 39230 | Зарегистр. 26-02-2002 | Отправлено: 09:08 17-02-2024 | Исправлено: greeple, 20:54 23-12-2024
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vaskamy

    Цитата:
    может я не туда команду вставляю.

     
    Попробовать вставить --extractor-args с параметрами в самый конец командной строки.  У меня работало - специально скачивал два одинаковых набора комментариев с разными сортировками. Итоговые html-файлы отличались в плане порядка комментариев.

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 18:38 23-08-2024 | Исправлено: PREVED, 18:57 23-08-2024
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED
    Нет не сортирует.

    Всего записей: 1065 | Зарегистр. 04-03-2017 | Отправлено: 19:21 23-08-2024
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED

    Цитата:
    Оповещает что установлена старая (не самая свежая) версия Python.  

    Не Python, а самого pip.

    Всего записей: 7849 | Зарегистр. 08-09-2001 | Отправлено: 22:04 23-08-2024
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vaskamy

    Цитата:
    Нет не сортирует.

     
    Странно. Должно работать. Вот что должна писать yt-dlp в консоли:
     
    [youtube] Downloading comment section API JSON
    [youtube] Downloading ~251 comments
    [youtube] Sorting comments by top comments
    [youtube] Downloading comment API JSON page 1 (0/~251)

     
     
    или, когда новые вверху
     
    [youtube] Downloading ~251 comments
    [youtube] Sorting comments by newest first
    [youtube] Downloading comment API JSON page 1 (0/~251)

     
     
     
    Я проверил на одном и том же видео. Кстати, заметил, что при сортировке "top" могут скачиваться не все комментарии.  Так что "new" надежнее всего, если нужно выкачать по максимуму.
     
     
     
     
     

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 10:21 24-08-2024 | Исправлено: PREVED, 12:44 24-08-2024
    FiLinX



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED
    Цитата:
    при сортировке "top" могут скачиваться не все комментарии.  Так что "new" надежнее всего, если нужно выкачать по максимуму.
     

    оно точно так же и в вебе в браузере
    очень часто это замечал, хорошо заметно когда комментов ещё не очень много, но под некоторыми уже есть ответы там, - так вот читая комменты вижу там общий указатель что мол всего 14 комментов сейчас, но раскрыв все ответы и посчитав их все - оказывается что их отображается меньше чем в общем счётчике!
    тогда я делал вот именно ту пересортировку на от новых к старым - и вуаля - раскрыв все ответы подсчёт вручную даёт именно указанное количество общего счёта комментов! )
    долго так юзал зная об этом, а потом просто вспомнил, что в энхансед-ютубе расширке брауза - есть настройка на отображать комменты сразу в от новых к старым, теперь так и юзаю с этим)
    так что да - лучше в вашем коде сразу нью запрашивать

    Всего записей: 2604 | Зарегистр. 05-05-2010 | Отправлено: 16:25 24-08-2024
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите с батником не хочет сортировать комментарии при любом раскладе всегда новые в низу html листа. Почему то не работает
    Код:
    --extractor-args youtube:comment_sort=new


    Код:
    @echo off
     
    :: Путь сохранения видео  
    set "dir=D:\yt-dlp\Download\yt-Video"
    :: Название канала + название видео
    set "file=%%(channel)s - %%(title)s.%%(ext)s"
     
    :: Чтение из буфера обмена скопированной ссылки с помощью утилиты paste
    for /f "usebackq delims=" %%i in (`D:\yt-dlp\paste.exe`) do set "URL=%%i"
    :: Путь к yt-dlp.exe
    cd /d "D:\yt-dlp"
    yt-dlp --skip-download --write-comments --exec before_dl:"Start /D D:\yt-dlp\Download\yt-Video make_comments.cmd %%(infojson_filename)q" --extractor-args youtube:comment_sort=new "%URL%" -o "%dir%\%file%"
    pause

    Всего записей: 1065 | Зарегистр. 04-03-2017 | Отправлено: 20:50 24-08-2024
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED
    Решил от отчаяния попробовать через MediaDownloader вашим способом, использовал команду

    Цитата:
    --skip-download --write-comments --exec before_dl:"Start /D D:\yt-dlp\Download\yt-Video make_comments.cmd %(infojson_filename)q" --extractor-args youtube:comment_sort=new

    Всегда сортировка ютубовская по умолчанию не зависимо от параметров сначала популярные потом все остальные, новые всегда в конце, в чём причина не пойму, может питон старый или того что windows7.

    Всего записей: 1065 | Зарегистр. 04-03-2017 | Отправлено: 12:53 25-08-2024
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED
    В общем я тут немного хрюкнул и решил исправить ваш скрипт что бы он сразу делал сортировку - результат просто супер без дополнительной мороки.
     

    Код:
    #!/usr/bin/env python3
     
    """
    SPDX-License-Identifier: MIT https://opensource.org/licenses/MIT
    Copyright c 2021 pukkandan.ytdlp@gmail.com
     
     
    * Input file is an info.json (with comments) that yt-dlp (https://github.com/yt-dlp/yt-dlp) wrote
    * Change FIELDS according to your needs
     
    The output file will be in the format:
    [{
      'text': 'comment 1',
      ...
      'replies': [{
        'text': 'reply 1',
        ...
        'replies': [...],
      }, ...],
    }, ...]
    """
     
    import os.path
    import json
    import argparse
    from datetime import datetime
     
     
    def get_fields(dct):
        for name, fn in FIELDS.items():
            val = fn(dct, name)
            if val is not None:
                yield name, val
     
     
    def filter_func(comments):
        return [dict(get_fields(c)) for c in comments]
     
     
    FIELDS = {
        'text': dict.get,
        'author': dict.get,
        'timestamp': lambda dct, name: dct.get(name) and datetime.strftime(
            datetime.utcfromtimestamp(dct.get(name)), '%Y/%m/%d'),
        # Add more fields here
        'replies': lambda dct, name: filter_func(dct.get(name, [])) or None
    }
     
     
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '--input-file', '-i',
        dest='inputfile', metavar='FILE', required=True,
        help='File to read video metadata from (info.json)')
    parser.add_argument(
        '--output-file', '-o',
        dest='outputfile', metavar='FILE', required=True,
        help='File to write comments to (json / html)')
    args = parser.parse_args()
     
     
    ext = os.path.splitext(args.outputfile)[1][1:]
    if ext == 'html':  # Error early
        try:
            from json2html import json2html
        except ImportError:
            raise SystemExit('ERROR: json2html is required for html output. Install it with  pip install json2html')
    elif ext != 'json':
        raise SystemExit(f'ERROR: Only json and html formats are supported, not {ext}')
     
     
    print('Reading file')
    with open(args.inputfile, encoding='utf-8') as f:
        info_dict = json.load(f)
     
    comment_data = {c['id']: c for c in sorted(
           info_dict['comments'], key=lambda c: c.get('timestamp') or 0, reverse=True)}
       
    count = len(info_dict['comments'])
    del info_dict
    nested_comments = []
    for i, (cid, c) in enumerate(comment_data.items(), 1):
        print(f'Processing comment {i}/{count}', end='\r')
        parent = nested_comments if c['parent'] == 'root' else comment_data[c['parent']].setdefault('replies', [])
        parent.append(c)
    del parent
     
     
    print('')
    nested_comments = filter_func(nested_comments)
     
     
    if ext == 'json':
        print('Converting to json')
        out = json.dumps(nested_comments, indent=4, ensure_ascii=False)
     
     
    elif ext == 'html':
        print('Converting to html')
        out = json2html.convert(nested_comments)
     
     
    del nested_comments
    del comment_data
    print('Writing file')
    with open(args.outputfile, 'w', encoding='utf-8') as f:
        f.write(out)
    print('Done')
     

    Всего записей: 1065 | Зарегистр. 04-03-2017 | Отправлено: 21:51 25-08-2024 | Исправлено: vaskamy, 21:53 25-08-2024
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vaskamy

    Цитата:
    может питон старый или того что windows7.

     
    У меня старый Питон и Win7. И сортирует по --extractor-args youtube:comment_sort. Тут что-то другое. Версия yt-dlp последняя? Может баг.
     
    vaskamy

    Цитата:
    В общем я тут немного хрюкнул и решил исправить ваш скрипт что бы он сразу делал сортировку - результат просто супер без дополнительной мороки.

     

    Добавлю ссылку на скрипт.

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 13:48 26-08-2024 | Исправлено: PREVED, 13:48 26-08-2024
    HandyCache

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как в скаченный файл добавить metadata, кроме description и longdescription?

    Всего записей: 139 | Зарегистр. 09-10-2008 | Отправлено: 13:06 27-08-2024
    vaskamy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HandyCache
    --embed-metadata --embed-thumbnail --embed-chapters
         метаданные            картинка                     главы
     
     
    Добавлено:
    HandyCache
    Смотря какие вам нужны метаданные - я же не знаю, к примеру если не надо описание и url то не добавляйте --embed-metadata.

    Всего записей: 1065 | Зарегистр. 04-03-2017 | Отправлено: 13:19 27-08-2024
    HandyCache

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vaskamy
    Мне нужны все метаданные --embed-metadata, кроме description и longdescription. Если загрузить скачанный файл в MediaInfo или tagscanner то будет всё видно.
     --embed-metadata --postprocessor-args "-metadata DESCRIPTION='~'" Вот так удаляется description, а longdescription таким способом не удалось убрать.

    Всего записей: 139 | Зарегистр. 09-10-2008 | Отправлено: 14:40 27-08-2024
    greeple

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HandyCache
    https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#modifying-metadata
    потому что нету там никакого лонгдескрипшон
     
    Добавлено:
    там же и замена

    Всего записей: 6130 | Зарегистр. 11-02-2020 | Отправлено: 15:17 27-08-2024
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HandyCache, один из вариантов:
    yt-dlp --embed-metadata --replace-in-metadata "description" ".*" " " $URL
     
     
    Добавлено:
    это получше

    Код:
    yt-dlp --embed-metadata --parse-metadata ":(?P<meta_description>)" $URL

    Всего записей: 7849 | Зарегистр. 08-09-2001 | Отправлено: 15:35 27-08-2024 | Исправлено: los, 15:39 27-08-2024
    HandyCache

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    1 вариант работает, но как сделать чтобы он удалял всё содержимое, а не заменял пробелами?
    2 вариант оставляет LONGDESCRIPTION

    Всего записей: 139 | Зарегистр. 09-10-2008 | Отправлено: 17:13 27-08-2024
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HandyCache

    Цитата:
    2 вариант оставляет LONGDESCRIPTION

    --parse-metadata ":(?P<meta_synopsis>)"

    Всего записей: 7849 | Зарегистр. 08-09-2001 | Отправлено: 18:45 27-08-2024
    HandyCache

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Спасибо, этот вариант рабочий.

    Всего записей: 139 | Зарегистр. 09-10-2008 | Отправлено: 20:15 27-08-2024
    vasevase

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Коллеги, возвращаясь к потенциально 'сладким' 9x форматам:
    http://forum.ru-board.com/topic.cgi?forum=5&topic=51328&start=1900#20
     
    А у вас нормально проигрывается результат?
    По ходу, все плюсы осутствия необходимости муксинга
    перебиваются тем, что результирующий файл-мутант
    [слепленный из кусков] фигово перематывается, с фризами.
    На железных плеерах пока не пробовал. Может и там глюки.
     
    Если результирующий файл нужно 'фиксить' (у меня оффнуто),
    то это такой же шмурдяк, имхо, что и 'скачать два куска,
    а потом слепить их в единый mp4' (в отличие от f 18 и 22).
     
    Или нужно 'на лету' ffmpeg'ом обрабатывать куски?

    Всего записей: 3460 | Зарегистр. 28-08-2010 | Отправлено: 20:53 29-08-2024 | Исправлено: vasevase, 21:20 29-08-2024
    Grishanenko

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vasevase
    Не знаю как сейчас, но я себе еще пару лет назад записал что форматы 93,94,95,96 - это как первый проход двухпроходного кодирования: низкое качество, картинка рассыпается, мелкие детали уходят в квадраты.
    Причем, тогда эти форматы появлялись сразу после окончания стрима и лишь спустя какое-то время (иногда приходилось ждать и сутки для 2-3 часовых программ) можно было скачать 134/135/136/137+140.

    Всего записей: 749 | Зарегистр. 17-06-2006 | Отправлено: 21:21 29-08-2024
    DimitriusXZ

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я задал в yt-dlp конвертацию субтитров в srt-формат, при этом удаляются субтитры в vtt-формате.
    Как сделать чтобы и vtt субтитры сохранялись?

    Всего записей: 889 | Зарегистр. 17-01-2010 | Отправлено: 21:34 29-08-2024
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

    Компьютерный форум Ru.Board » Компьютеры » Программы » youtube-dl | yt-dlp (Часть 2)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2025

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru