Страницы: Пред. 1 2
RSS
Зачитать и сохранить плейлисты
 
TSN, столбец лучше сделать последним (удобнее для анализа/разбивки данных и сборке m3u не помешает).
Финишная сборка ответов в 1 таблицу с сохранением файла и закрытием промежуточных была бы удобна.
Хорошо бы с удалением дубликатов по столбцу "Ссылка" в конце и выбором папки Parser'a в самом начале. )
Изменено: Acid Burn - 23.09.2020 16:08:34
 
Как столбец сделать последним, я уже показал в примере, замена двух строк кода всего.
Я так понял неудобно выбирать файлы вместо папки.
Перепишу часть кода с возможностью выбора папки вместо файлов и сборкой ответа с файлов m3u в одну таблицу файла Ексель.
Удаление дубликатов по столбцу "Ссылка" под вопросом, если найду закономерность и будет время тогда реализую иначе нет.
Изменено: TSN - 24.09.2020 08:09:25
 
> Как столбец сделать ... показал в примере
Да, теперь столбец есть, но пока что пустой. )
> Я так понял неудобно выбирать файлы вместо папки.
Нет, это удобно. Я имел ввиду заменить SpecialFolders("MyDocuments") на Application.ActiveWorkbook.Path.
> Удаление дубликатов по столбцу "Ссылка" под вопросом, если найду закономерность и будет время
OK. Закономерность - одинаковая ссылка на ресурс (названия и т.п. могут отличаться, но, если ссылка та же, то это точно дубль).
Изменено: Acid Burn - 24.09.2020 10:29:13
 
Цитата
Acid Burn написал:
Да, теперь столбец есть, но пока что пустой. )
Я так понимаю данный столбец для пользователя, чтобы вносить свои правки, замечания и т.д.
 
Переписал часть кода, получился альтернативный вариант
Изменено:
1.  При запуске выбирается папка с файлами, вместо файлов.
2.  Все данные с файлов m3u собираются в одну таблицу в одном файле
Добавлено:
1.  Диалог с пользователем по выбору папки для сохранения файлов ответов, стартует сразу после диалога выбора папок с файлами.
2.  После анализа файлов ASX и формирования таблицы ответов файл сохраняется и закрывается.
Сохранение выполняется в указанную папку пользователем с  уникальным именем для исключения наложений и уничтожения предыдущих файлов.
3.  Во время анализа файлов m3u и формирования таблицы ответов файл сохраняется после каждой дозагрузки таблицы,  закрывается.
Сохранение выполняется в указанную папку пользователем с  уникальным именем для исключения наложений и уничтожения предыдущих файлов.
4.  Добавлено уведомление исполнения с возможностью отмены процедуры во время анализа файлов m3u.
5.  Добавлена стартовая кнопка в файле.

Пользуйтесь.
 
Цитата
Acid Burn написал:
Я имел ввиду заменить SpecialFolders("MyDocuments") на Application.ActiveWorkbook.Path.
У большенства пользователей папка мои документы является основной для использования, поэтому было принято решение использовать именно ее как папку по умолчанию, в коде последеней программы это всего одна строка, которую можно изменить под себя
Код
strMyDocuments = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\"
Изменив значение переменной strMyDocuments можно получить желаемое. Например так
Код
strMyDocuments = Application.ActiveWorkbook.Path & "\"
Изменено: TSN - 24.09.2020 11:56:50
 
Цитата
Acid Burn написал:
Закономерность - одинаковая ссылка на ресурс (названия и т.п. могут отличаться, но, если ссылка та же, то это точно дубль).
Закономерность не полноценная вот пример
ИсточникКатегорияНазваниеСсылка
Films.m3u8Не попали в категории   по годамentermusictvhttp ://v2.catcast.me/content/36007/index.m3u8
TV.m3u8Фильмовыеentermusictvhttp ://v2.catcast.me/content/36007/index.m3u8
Как видно из таблицы ссылка на ресурс одна, но источник разный. Какой источник должен остаться ?
А в целом да, дубликатов много, из данных файлов примеров 79952 ссылки из них уникальных 74360 шт.
Изменено: TSN - 24.09.2020 12:16:53
 
TSN
На счёт столбца "Не классифицировано":
посмотрите в Mult.m3u8 ссылку https://strm.yandex.ru/vh-ott-converted/ott-content/328514357
Parser потерял кусок ", но боялись спросить...".
Вот такие куски я и хотел бы видеть в "Не классифицировано", чтобы вручную разобрать и перенести на место.

По остальным пунктам:
- Вместо выбора папки лучше вернуть выбор файлов с strMyDocuments = Application.ActiveWorkbook.Path & "\".
- Все m3u и asx нужно собрать в одну таблицу в одном файле, на том листе, с которого запущен макрос.
- При повторном запуске макроса новые данные должны добавляться в ту же таблицу (если реально, то без дублей).
- То, что "источник разный" не важно, пусть остаётся первый попавшийся - на выходе всё равно будет новый файл.
Изменено: Acid Burn - 24.09.2020 21:01:02
 
TSN, а можно было как-то компактнее, дополнить то, что уже есть? Зчем создавать сообщение, если после предыдущего нет ответов?
 
Цитата
vikttur написал:
Зчем создавать сообщение, если после предыдущего нет ответов?
а счетчиr, счетчик то как же? :D
По вопросам из тем форума, личку не читаю.
 
Вот пошепчу ИИ, он такой счетчик наминусует... )
 
vikttur, Извините, я давно не был на этом форуме, правила забыл, повторно не читал.
БМВ мне на счётчик наплевать, я благодарен этому форуму за знания в программировании в Vba, с этих страниц много лет назад началось моё обучение. Хотел бы накрутить счётчик, писал бы короткие фразы во всех постах не вникая в суть вопроса :).
Acid Burn, Ваш последний пост уже немного похож на тех задание, это как раз, то о чем писали учасники форума в постах выше, например пост 22. Я сделал ровно так как понял из текста в первом посте. В целом у вас есть два варианта программы выполняющей одну и ту же задачу, перепишите код на свое усмотрение, соберите с двух одно, добавте дополнительный анализ строк файлов. Я вам дал фундамент для решения задачи, дальше наращивайте по своему усмотрению. Я в свою очередь ушёл в сон, а завтра на море до понедельника. Если на следующей неделе будет время на работе тогда смогу доработать.
Цитата
- Все m3u и asx нужно собрать в одну таблицу в одном файле, на том листе, с которого запущен макрос.
Я не рекомендую в файл с програмным кодом загружать данные в таком большем объеме, в один прекрасный день произойдёт сбой и можно потерять программу и данные. Мухи отдельно, котлеты отдельно, это моё мнение.  
Изменено: TSN - 24.09.2020 21:52:17
 
TSN, программу я забэкаплю, так что ничего не потеряется.
Если получится понять и доработать код - выложу здесь, получится доделать у Вас - выкладывайте.  :)
Хорошего Вам отдыха, и огромное спасибо!
Изменено: Acid Burn - 24.09.2020 23:31:34
 
Цитата
Acid Burn написал:
На счёт столбца "Не классифицировано":посмотрите в Mult.m3u8 ссылку  https://strm.yandex.ru/vh-ott-converted/ott-content/328514357 Parser потерял кусок ", но боялись спросить...".Вот такие куски я и хотел бы видеть в "Не классифицировано", чтобы вручную разобрать и перенести на место.
Когда писал первый вариант не заметил, что  строки файлов м3u различаются
Это основная структура записи
#EXTINF:-1 group-title="Герои Энвелла",Сезон 1 - Серия 10 - Неизвестная локация
https: //strm.yandex.ru/vh-ott-converted/ott-content/493306269-41178fc958d098058dda2b906148c594/master_quality.m3u8
В приведенном примере Вами другая
Алгоритм анализа фалов m3u переписал, работает корректно.
Цитата
Acid Burn написал:
Вместо выбора папки лучше вернуть выбор файлов с strMyDocuments = Application.ActiveWorkbook.Path & "\".
Добавил две константы и реализацию диалогов. Это пример того как можно собрать с двух вариантов один.
'константа для выбора управления диалоговыми окнами выбора файла или папки
'0 - используется диалог выбора файлов, 1 - используется диалог выбора папки
Private Const SHOWUSERDIALOG As Byte = 0
'константа для выбора папки сохранения
'0 - сохраняет результатирующий файл по умолчанию в папку с Parserом, 1 - используется диалог выбора папки
Private Const SAVEDUSERPATH As Byte = 0
Меняйте значения этих констант и получите разную реализацию работы пользователя с диалоговыми окнами и путями сохранения файлов ответов.
По умолчанию работает с папкой в которой лежит программа.
Цитата
Acid Burn написал:
Все m3u и asx нужно собрать в одну таблицу в одном файле
m3u файлы собираются в одну таблицу  с удалением дубликатов (с тех файлов которые выбрал пользователь или тех которые лежат в одной папке), сохраняются в один файл ResultatM3U_дата_время. Asx файлы оставил в тойже реализации, собираются данные в отдельный файл ResultatASX_дата_время.  Asx файлов много, данных на выходе мало, и данные таких файлов отличаются от таблиц m3u файлов.
Цитата
Acid Burn написал:
на том листе, с которого запущен макрос.
Программа работает с внешними файлами, в себя ничего не загружает, реализованы диалоги обращения к внешним файлам.  Мое мнение вы знаете мухи отдельно, котлеты отдельно.
Цитата
Acid Burn написал:
- При повторном запуске макроса новые данные должны добавляться в ту же таблицу (если реально, то без дублей).- То, что "источник разный" не важно, пусть остаётся первый попавшийся - на выходе всё равно будет новый файл.
Написал процедуру парсинга файлов с возможностью дописать данные в существующий файл выбранный пользователем. Данные добавляются в имеющуюся таблицу в файле с удалением дубликатов.
Дополнительно написал процедуру удаления дубликатов данных в существующем файле ответе (ResultatM3U_дата_время. ) выбранном пользователем (вспомогательная процедура). Основное назначение при условии, что пользователь самостоятельно собрал с нескольких файлов ответов одну таблицу.

Пользуйтесь.
Изменено: TSN - 29.09.2020 10:02:06
 
TSN, спасибо огромное! Позвольте 2 вопроса:
1. Может ли что-то быть пропущено, если структура файлов будет совсем иная/кривая?
Если да, то можно ли в таком случае просто записать всё в столбец "Название"?
2. Можно ли добить некоторые мелочи:
2.1. Объединить кнопки: "Start parser" по сути одноразовая, далее всегда надо будет жать "Update file" + "RemoveDuplicates".
IMHO glBoolUpdateFile можно выставить по наличию данных в [A1], а RunRemoveDuplicates сделать частью ParserASX_M3U.
2.2. Объединить таблицы: по факту многое из asx уже есть в m3u, да и набор столбцов в asx и m3u д.б. идентичен.
2.3. Объединить столбцы H и C: оказалось, что надо править кучу названий, пусть тогда "Не классифицировано" будет там же.
2.4. Сделать ссылки кликабельными: убрать кавычки у обложек и может быть сделать ГИПЕРССЫЛКА("Ссылка";"Сервер").
2.5. Удалить пустые строки: очевидно они остаются после сортировки.
2.6. Убрать или как-то вытащить наверх userform: сразу после запуска её закрывает окно Excel.
2.7. Добавить глобальный счётчик времени: интереснее общее время выполнения, не только поиск дубликатов.

Вроде всё, все пункты для удобства ответа пронумеровал и расположил в порядке уменьшения значимости.
Написал много, но большинство пунктов 2.х не обязательно автоматизировать - меня не затруднит сделать их вручную.
А в 2.4 вовсе вряд ли стоит использовать ГИПЕРССЫЛКА из-за осложнения поиска дубликатов.
Хотя гиперссылка("https://b1.filmpro.ru/c/55978.jpg";"b1.filmpro.ru") и ("http://x2t.com/nemoy";"x2t.com") без "Сервер" удобнее.

Спасибо!
Изменено: Acid Burn - 29.09.2020 13:26:31
 
Цитата
Acid Burn написал:
1. Теперь всё непонятое макросом будет улавливаться в соответствующий столбец?Или, если структура будет совсем иная/кривая, что-то всё же может быть пропущено?
Да если структура будет совсем иная/кривая, что-то может быть пропущено. Я алгоритм анализа писал на основании данных  с файлов примеров. Структура файлов m3u похожа на структуру Xml, возможно применив XML DOM проще и без ошибок можно парсить m3u файлы. Мои познания в XML DOM слабоваты поэтому не применял его.
Цитата
Acid Burn написал:
- изменить имена листов (сейчас в обоих файлах листы названы ASX*)
Не заметил сорян, это просто изменить.

Цитата
Acid Burn написал:
перетащить инфо из столбца H в столбец C, если тот не заполнен
Изначально в третей версии так и сделал, потом убрал решив, что будет лишним :)
Цитата
Acid Burn написал:
сделать ссылки кликабельными или обернуть в функцию =ГИПЕРССЫЛКА("Ссылка";"Сервер")
а функцию ГИПЕРССЫЛКА и вовсе вряд ли можно применить из-за осложнения поиска дубликатов.
Гиперссылки сделать просто при условии формирования нового файла в момент удаления дубликатов.
Для процедур (кнопки) Update file, RemoveDuplicates нужно переписывать алгоритм поиска дубликатов с учетом наличия гиперссылок.

В целом все это мелочи, еще оскому не сбил в программировании на VBA, допилю и выложу обновленную версию.
 
Acid Burn, а как же пункт правил, о котором Вы хорошо знаете? Что это за ТЗ в сообщении?!

P.S.
Тема открыта только потому, что TSN   сделал все дополнения.
TSN,  Acid Burn, внимательно прочитайте пункт 2.6 правил форума и сделайте соответствующие выводы.
 
Пункту 2.6 "Один вопрос - одна тема" я не противоречу, раз тема "Зачитать и сохранить" была разрешена.
Логично, что возможность считать плейлисты для правки без возможности сохранить обратно для использования не нужна.

Итого задачи взаимосвязанные, важен баланс скорости чтения, сохранения и удобства таблицы, т.к. плейлистов тысячи.
И вопросы тоже не разные: они направлены на то, чтобы посетители темы получили готовое решение, а не полумеру.

Пока есть проблемы: чтение 63284 строк идёт с потерей 11% данных (7111 строк) и запись ещё не реализована.
Вопрос: вернётся ли TSN и участники темы после её закрытия-открытия или уйдут, как уже многие ушли с форума.

Я думаю, что TSN создал отличную базу/фундамент, за что я ему очень благодарен, но дальше нужна помощь.
Последняя версия файла от TSN с моими комментариями к вопросам из поста #45 во вложении.
Изменено: Acid Burn - 29.09.2020 23:57:46
 
Все то так, но как быть тем, кто ищет. например, кликабельные ссылки, удаление пустых строк после сортировки, объединение таблиц, счетчик времени?
Название темы прошло, но кто думал, что Вы тут целое ТЗ развернете?
Цитата
вопросы... направлены на то, чтобы посетители темы получили готовое решение, а не полумеру
Пока видно, что вопросы направлены на то, чтобы Вы получили готовое решение под свои хотелки :)
Откуда такая увереность, что все, что Вы тут наворотили, пригодится другим точно в таком наборе? Костяк - а дальше доработки, кому какие надо.

То, что решение есть в комплексе, неплохо, но было бы гораздо правильнее, если бы это решение появилось в результате таких действий:
по каждому вопросу поискать решения (самостоятельно!), если не найдены - создать тему. Потом САМОСТОЯТЕЛЬНО все объединить и показать решение в теме. И здесь было бы максимально желаемое Вами решение, и форум пополнился бы темами по отдельным вопросам. И Вам хорошо, и другим польза.
 
Тем, кто ищет кликабельные ссылки, удаление пустых строк и т.п., поможет Google, т.к. там таких примеров масса.
Посты мои вряд ли потянут на ТЗ - грамотное ТЗ вообще не всем даётся, т.к. требует много знаний и времени.
И вопросы вряд ли направлены на получение готового решения мной, т.к. цель больше помочь человеку с 4PDA.
А вот уверенность в нужности такого "набора" как раз таки появилась в результате "таких действий". )))

Как сказал БМВ, "ТС сам делает то что может" - формульный парсер я сделал, БМВ и TSN предложили версии лучше.
Это и есть костяк, а необходимые доработки я попытался изложить в постах, которым Вы не заслуженно дали статус ТЗ.
Но нужен не костяк, а готовый удобный безпотерьный парсер плейлистов в Excel, которого пока гарантированно нет.
Зато есть человек, который много лет безвозмездно делает и выкладывает плейлисты, и уже устал это делать вручную.

И я уже устал кому-то что-то объяснять, проще потратить ночь и обработать плейлисты вручную, если бы они не обновлялись.
Я пробовал написать парсер на VBA - задача эта мне не по силам, даже, если из кожи вон вылезу.
Попробую написать остальные запчасти, ведь сам по себе парсер - лишь малая часть, может с чем-то опять сюда приду.
И по-прежнему буду надеяться, что кто-то всё же поможет - задача не простая, но сложно сказать, что не интересная. )))
Изменено: Acid Burn - 30.09.2020 01:41:55
Страницы: Пред. 1 2
Наверх