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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

Maz



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


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


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

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






yt-dlp - активный форк youtube-dl, рекомендуется к использованию.
Цели проекта: добавление новых функций, исправление известных проблем. Есть различия в поведении от основного проекта.
 
ytdl-patched - пока непонятный форк yt-dlp
 
yt-dlp для Windows XP x86
форк 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 есть нюанс Или от gyan
  • BAT-ник от DeZz
  • кнопки от notinthewoods
  • BAT-ник, Downloader, расширения от 351878
  • Youtube Format IDs  
  • Автоматическое скачивание комментариев к видеороликам Youtube с их преобразованием в удобный для чтения HTML-формат от PREVED
     
     
     
     
     
     


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



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

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

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

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



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

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

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

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

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

    Всего записей: 7611 | Зарегистр. 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" надежнее всего, если нужно выкачать по максимуму.
     
     
     
     
     

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



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

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

    Всего записей: 2239 | Зарегистр. 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

    Всего записей: 1014 | Зарегистр. 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.

    Всего записей: 1014 | Зарегистр. 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')
     

    Всего записей: 1014 | Зарегистр. 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

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

     

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

    Всего записей: 1986 | Зарегистр. 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.

    Всего записей: 1014 | Зарегистр. 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

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

    Всего записей: 4746 | Зарегистр. 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

    Всего записей: 7611 | Зарегистр. 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>)"

    Всего записей: 7611 | Зарегистр. 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'ом обрабатывать куски?

    Всего записей: 3270 | Зарегистр. 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.

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

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

    Всего записей: 871 | Зарегистр. 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

    Компьютерный форум 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-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru