Форум сети D-Lan

Электроника => Персональный компьютер => Программирование => Тема начата: Catcatcat от 23-08-2011, 17:37:39

Название: Реальное задание!
Отправлено: Catcatcat от 23-08-2011, 17:37:39
Программа формирования плейлиста для плеера из каталога.
Чтобы можно было ввести предварительно свой url, указал каталог с файлами, а программа разрисовала плейлист.
Забацайте для форума.
:help01:

техзадание и условия для плеера смотреть http://forum3.d-lan.dp.ua/index.php?topic=272.msg1554;topicseen#msg1554 (http://forum3.d-lan.dp.ua/index.php?topic=272.msg1554;topicseen#msg1554)
Название: Re: Реальное задание!
Отправлено: Proydoha от 27-08-2011, 20:46:23
Как-то так (http://10.1.12.237/test_area/The_Real_Deal.php).

В IE не работает.
Название: Re: Реальное задание!
Отправлено: Catcatcat от 27-08-2011, 21:51:11
немножечко не так, пропадает сам путь к файлу

ведь сам смысыл, чтобы не выписывать путь.

В вернем ркне вводим url

например, для моего компа http://10.1.7.100/ (или просто ip 10.1.7.100)

в нижней также добавить файл
он должен убрать из пути имя диска, двоеточие и \, а также заменить все \ на /.

в идеfле есть два варианта, с выводом названия внизу иконки

[premiumbeat=http://10.1.7.100/Music/Sorted/Albums/New_Age/Fab_Four_-_Best_of_Kitaro/CD1 - Silence/01 Kitaro - Winds blows over the hill.mp3]01 Kitaro - Winds blows over the hill[/premiumbeat]

[premiumbeat =http://10.1.7.100/Music/Sorted/Albums/New_Age/Fab_Four_-_Best_of_Kitaro/CD1 - Silence/01 Kitaro - Winds blows over the hill.mp3]01 Kitaro - Winds blows over the hill[/premiumbeat]


или без, одна иконка


[premiumbeat]http://10.1.7.100/Music/Sorted/Albums/New_Age/Fab_Four_-_Best_of_Kitaro/CD1 - Silence/01 Kitaro - Winds blows over the hill.mp3[/premiumbeat]

[premiumbeat ]http://10.1.7.100/Music/Sorted/Albums/New_Age/Fab_Four_-_Best_of_Kitaro/CD1 - Silence/01 Kitaro - Winds blows over the hill.mp3[/premiumbeat]

обрати внимание в правильной ссылки пробела в [premiumbeat ] недолжно быть это только для просмотра
Название: Re: Реальное задание!
Отправлено: Proydoha от 27-08-2011, 21:59:11
Два поля: "Path и Files"

В Path я, например, вписываю: ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/
В Files я тыкаю в "Добавить файлы" захожу в папку у себя на винте F:\Music\_Soundtrack\Final Fantasy VII\lossy и обвожу все файлы, которые там вижу.

Он генерирует такую вот строку (без пробела):
[premiumbeat =ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/01 - Sis puella magica!.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/02 - Salve, terrae magicae.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/03 - Gradus prohibitus.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/04 - Credens justitiam.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/05 - Clementia.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/06 - Desiderium.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/07 - Conturbatio.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/08 - Postmeridie.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/09 - Puella in somnio.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/10 - Umbra nigra.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/11 - Terror adhaerens.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/12 - Scaena felix.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/13 - Pugna cum maga.mp3][/premiumbeat]

Которую я и вписываю в сообщение:

[premiumbeat=ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/01 - Sis puella magica!.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/02 - Salve, terrae magicae.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/03 - Gradus prohibitus.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/04 - Credens justitiam.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/05 - Clementia.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/06 - Desiderium.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/07 - Conturbatio.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/08 - Postmeridie.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/09 - Puella in somnio.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/10 - Umbra nigra.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/11 - Terror adhaerens.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/12 - Scaena felix.mp3, ftp://10.1.12.237/Music/_Soundtrack/Mahou%20Shoujo%20Madoka%20Magika/Original%20Soundtrack%20I/13 - Pugna cum maga.mp3][/premiumbeat]

Что не так?
Название: Re: Реальное задание!
Отправлено: Catcatcat от 27-08-2011, 22:06:19
[premiumbeat=http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/01-acoustique_parfum-petite_etoile_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/02-ohm-g-homework_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/03-timo_camillo-i_can_fly_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/04-nor_elle-the_truth_-_(v_for_volkan_remix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/05-sin_plomo-nature_groove_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/06-eigenart-red_and_gold_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/07-tony_match-morning_sunrise_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/08-terry_lee_brown_junior-moody_afternoon_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/09-lemongrass-journey_to_a_star_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/10-alphawezen-days_-_(the_timewriter_remix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/11-forteba-save_the_memories_feat._katerina_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/12-manmachineman-electricity_babies_-_(de-phazz_remix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/13-gero-tu_me_manques_beaucoup_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/14-j._axel-this_time_-_(original_mix).mp3, http://10.1.7.100/Music/Sorted/Compilations/Chill Out/Bedroom.Esc.4/15-pete_gust-space_for_now_-_(original_mix).mp3]Bedroom Escapades[/premiumbeat]

Я и говорю, что если ручками путь прописать, то работает, но  весь смысл в том, что бы не прописывать, а ввести только ip компа и выбрать файлы.
Название: Re: Реальное задание!
Отправлено: Proydoha от 27-08-2011, 22:15:59
Цитироватьон должен убрать из пути имя диска, двоеточие и \, а также заменить все \ на /.
Цитироватьввести только ip компа и выбрать файлы.

Структура папок на http- и ftp-ресурсах не всегда совпадает с реальной структурой папок. Заменой имени диска и разворачиванием слешей в другую сторону никак не обойтись.

Пути к файлам, с некоторых пор, из соображений безопасности, нельзя передавать через элемент <input type="file">. Стопудово доступны только их имена и размер. И ещё всякие мелочи, в зависимости от броузера.
Других способов получить список имён файлов на пользовательском компьютере, не вбивая их вручную, я не способен придумать.
Название: Re: Реальное задание!
Отправлено: Catcatcat от 27-08-2011, 23:13:30
Я в этом не шарю, поэтому судить не могу. Но задача не стоит, чтобы решение было написано для web.
Название: Re: Реальное задание!
Отправлено: Proydoha от 28-08-2011, 14:20:53
Цитата: Catcatcat от 27-08-2011, 23:13:30
Я в этом не шарю, поэтому судить не могу. Но задача не стоит, чтобы решение было написано для web.

Вот исходник моего решения на случай, если это вдохновит кого-то ещё: исходник (http://10.1.12.237/Show_Source.php?test_area/The_Real_Deal.php)
Хотя теперь есть новый плеер, который ещё красивее старого.
Название: Re: Реальное задание!
Отправлено: Proydoha от 23-10-2011, 22:40:13
А можно заказать программу? : D

Короче, что б она переименовывала все файлы в папке по такому шаблону:

Было: имяимяимя_дд.мм.гггг.тип
Стало: гггг.мм.дд_имяимяимя.тип
Название: Re: Реальное задание!
Отправлено: Sasha от 23-10-2011, 22:50:54
Цитата: Proydoha от 23-10-2011, 22:40:13
А можно заказать программу? : D

Короче, что б она переименовывала все файлы в папке по такому шаблону:

Было: имяимяимя_дд.мм.гггг.тип
Стало: гггг.мм.дд_имяимяимя.тип
Должна ли она просматривать и подкаталоги?
Название: Re: Реальное задание!
Отправлено: Proydoha от 23-10-2011, 23:01:40
Цитата: Sasha от 23-10-2011, 22:50:54
Должна ли она просматривать и подкаталоги?

Не.

Я качаю видео с ютуба пачкой с канала, а оно ставит дату в идиотском месте. Если переставить дату в начало так, как я описал, то при сортировке по имени файлы отсортируются по дате их добавления на ютуб.
Название: Re: Реальное задание!
Отправлено: Sasha от 23-10-2011, 23:45:40
Тип это в смысле расширение?
Название: Re: Реальное задание!
Отправлено: Proydoha от 24-10-2011, 00:03:42
Цитата: Sasha от 23-10-2011, 23:45:40
Тип это в смысле расширение?

Да.
Название: Re: Реальное задание!
Отправлено: Sasha от 24-10-2011, 00:05:26
Тогда вот
http://rghost.ru/26881251 (http://rghost.ru/26881251)
Название: Re: Реальное задание!
Отправлено: Proydoha от 24-10-2011, 01:18:49
Споткнулся о файлы с некоторыми именами.

...

Идиотский скачиватор ставит дату скачивания, а не дату отправления : (
Затея бессмысленна.
Название: Re: Реальное задание!
Отправлено: Catcatcat от 24-10-2011, 08:26:05
Цитата: Proydoha от 23-10-2011, 22:40:13
А можно заказать программу? : D

Короче, что б она переименовывала все файлы в папке по такому шаблону:

Было: имяимяимя_дд.мм.гггг.тип
Стало: гггг.мм.дд_имяимяимя.тип
Посмотри Total Commander там есть групповое переименование файлов.
Название: Re: Реальное задание!
Отправлено: Sasha от 24-10-2011, 09:53:49
Цитата: Proydoha от 24-10-2011, 01:18:49
Споткнулся о файлы с некоторыми именами.
Конечно все гораздо усложняется, но попробовать сделать по другому могу. Нужно?
Название: Re: Реальное задание!
Отправлено: Proydoha от 24-10-2011, 20:34:22
Цитата: Sasha от 24-10-2011, 09:53:49
Конечно все гораздо усложняется, но попробовать сделать по другому могу. Нужно?

Не, я огорчился до глубины души от осознания того, какая дата проставляется.
Название: Re: Реальное задание!
Отправлено: Sasha от 24-10-2011, 21:41:23
Эх, а мне прогу кто-нибудь напишет :)
Название: Re: Реальное задание!
Отправлено: Proydoha от 25-08-2013, 00:34:44
У меня есть заказ, но мне кажется, что он слишком трудозатратный в реализации. Сейчас я оформлю ТЗ.
Название: Re: Реальное задание!
Отправлено: Proydoha от 25-08-2013, 01:45:50
В общем есть такая программа:

DiceRoller V2.1 (for Skype)
Исходники на SourceForge (http://sourceforge.net/projects/dicerollerv20fo/)

Если её запустить, то скайп спросит можно ли ей подключиться к нему. И если ответить да, то он будет просматривать сообщения на предмет строки "//<число>d<число><всё что угодно>"

Например:"//1d20"


И если он видит, что кто-то что-то написал такое, то генерирует случайное число в указанном диапазоне. И пишет (от имени запустившего программу), что такой-то человек выбросил такое-то случайное число.

Вот так:"Proydoha rolled  1d20; result: 6"



Чего мне хотелось бы, так это что бы у меня была такая же программа и она точно так же парсила сообщения, но на предмет ссылок на ютуб. А на выходе у неё были заголовки видео.

Ссылки на ютуб могут выглядеть вот так:
http://www.youtube.com/watch?v=XP9pnSXhibw
http://youtu.be/XP9pnSXhibw


Наверное строку надо сперва проверять на наличие "youtube.com" или "youtu.be"
В первом случае надо в этой же строке искать подстроку, которая начинается после "v=" и заканчивается либо перед пробелом, либо перед символом "&", либо перед концом строки.
Во втором - подстроку, которая начинается после ".be/" и заканчивается либо перед пробелом, либо перед концом строки.
Если такой подстроки нету, то ничего не делать.

По этой подстроке можно найти информацию о видео.

XML с информацией о видео находится по следующему адресу, где эта подстрока стоит в самом конце:
http://gdata.youtube.com/feeds/api/videos/XP9pnSXhibw

Заголовок размещён между тегов <title type='text'></title>

Кто-то кинул ссылку на ютуб - бах, сразу же его заголовок в окно чата.
Название: Re: Реальное задание!
Отправлено: Sasha от 25-08-2013, 12:02:25
Поизучай апи скайпа на наличие подходящих тебе функций, если ничего такого нет - тогда сложнее, нужно выкручиваться винапи.
Название: Re: Реальное задание!
Отправлено: Proydoha от 25-08-2013, 12:25:03
Цитата: Sasha от 25-08-2013, 12:02:25
Поизучай апи скайпа на наличие подходящих тебе функций, если ничего такого нет - тогда сложнее, нужно выкручиваться винапи.

Первая программа его и использует. Просто мне надо поизучить С++, что б понять как.

Судя по всему мне вот сюда надо вставить все нужные проверки и вывод результата, заместо его луа-магии:
Исходник SkypeThread.cpp, строка №121 (http://sourceforge.net/p/dicerollerv20fo/code/ci/master/tree/dicerollerV2.0_Skype/DiceRoller_v2/DiceRoller_v2/SkypeThread.cpp#l121)
Название: Re: Реальное задание!
Отправлено: Sasha от 25-08-2013, 13:28:09
Тогда скачай исходники и добейся их компиляции и работоспособности в студии в исходном виде, далее в файле DiceRollerLuaScript.cpp переписать функцию performCommand. Найти регулярным выражением или еще как либо искомую строку и самое пока мне неясное отправить http запрос на этот адрес и проанализировать ответ. HTTP запросы вроде штука не сложная, но никогда не сталкивался с этим в плюсах, уверен в инете материала и готовых решений хватает.
Название: Re: Реальное задание!
Отправлено: Proydoha от 25-08-2013, 14:12:27
Цитата: Sasha от 25-08-2013, 13:28:09
Тогда скачай исходники и добейся их компиляции и работоспособности в студии в исходном виде, далее в файле DiceRollerLuaScript.cpp переписать функцию performCommand. Найти регулярным выражением или еще как либо искомую строку и самое пока мне неясное отправить http запрос на этот адрес и проанализировать ответ. HTTP запросы вроде штука не сложная, но никогда не сталкивался с этим в плюсах, уверен в инете материала и готовых решений хватает.

Я плюнул на этапе "скачай студию". Он подключает какую-то бороду, которая называется "Active Template Library" и в 2010-экспресс студии её нет, а не-экспресс майкрософт разрешает качать только 2012-2013, которые тянут по 12Гб. Спасиба, как-нибудь обойдусь.

Да, читать XML не сложно: http://support.microsoft.com/kb/815659/ru (http://support.microsoft.com/kb/815659/ru)

Вообще слишком высокий входной порог для меня. Дебилов, наверное, отсеивает на раз. Непонятно что качать, с чего начинать, как этим пользоваться. Старое недоступно, к новому нет руководств.
Название: Re: Реальное задание!
Отправлено: Sasha от 25-08-2013, 15:33:15
Могу еще посоветовать обратиться в винапи FindWindow(Ex) и Get(Set)WindowText, однако даже у Spy++ с этим возникают определенные проблемы, так что не факт что получится.

(http://s019.radikal.ru/i600/1308/d5/ce2df7906af6.png)
Название: Re: Реальное задание!
Отправлено: Proydoha от 25-08-2013, 18:52:31
ха-ха

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

#include "stdafx.h"
#include <tchar.h>
#include <string>

#using <mscorlib.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace std;

String ^getTitle(String ^url)
{
bool pickup = false;
String ^title = "Error";

XmlTextReader ^reader = gcnew XmlTextReader (url);
while (reader->Read())
    {
        switch (reader->NodeType)
        {
case XmlNodeType::Element:
if (reader->Name == "title") {pickup = true;}
break;
case XmlNodeType::Text:
if (pickup == true) {title = reader->Value;}
break;
case XmlNodeType::EndElement:
break;
}
if (title != "Error") {break;}
}
return title;
}

void main(void)
{
Console::WriteLine(getTitle("http://gdata.youtube.com/feeds/api/videos/XP9pnSXhibw"));
Console::ReadLine();
}


Говорю ему:
-Субстр! Покажи что получилось!
-Ничего не получилось, маста.

Строки обрабатывать сложнее, чем читать XML : /

/*
//string youtubeURL = "tthsgtgrhrty456erret";
string youtubeURL = "http://www.youtube.com/watch?v=KVN_0qvuhhw&fghfgfh";
//string youtubeURL = "gggdgddf ss sgg http://youtu.be/KVN_0qvuhhw gfgsdg";

size_t size = youtubeURL.size();

if (youtubeURL.find("youtube.com/",0) < size)
{
size_t start = youtubeURL.find("v=");
Console::WriteLine("Case 1");
//Console::WriteLine(start);
size_t end = youtubeURL.find("&",start);
if (end > size)
{
end = youtubeURL.find(" ",start);
if (end > size)
{
end = size;
}
}
string videodata;
videodata = youtubeURL.substr(5,5);

Console::WriteLine(videodata);
}
else if (youtubeURL.find("youtu.be/",0) < size)
{
Console::WriteLine("Case 2");
}
else
{
Console::WriteLine("Case 3");
}
*/
Название: Re: Реальное задание!
Отправлено: Sasha от 26-08-2013, 01:16:36
Перебрал при помощи винапи все что мог, кроме заголовка самого окна скайпа ниче не редактируется. Быстро тут я не разберусь, к сожалению не моя специализация.
Название: Re: Реальное задание!
Отправлено: Proydoha от 26-08-2013, 14:59:55
Цитата: Sasha от 26-08-2013, 01:16:36
Перебрал при помощи винапи все что мог, кроме заголовка самого окна скайпа ниче не редактируется. Быстро тут я не разберусь, к сожалению не моя специализация.

Научи меня редактировать строки : )

Я ввожу в гугл запрос и он показывает мне восемь миллионов вариантов как вырезать подстроку из строки.
Название: Re: Реальное задание!
Отправлено: Sasha от 26-08-2013, 16:09:18
Тебе на плюсах? Я просто больше по шарпу привык. Тут варианты или использовать стандартные функции или хардкорно работать со строками как с массивом (ниче сложного, на твой уровень вполне посильно), ну и конечно регулярные выражения иногда очень помогают.

Давай лучше конкретную задачу и я подумаю как лучше сделать.