View previous topic :: View next topic |
Author |
Message |
Loopback
Joined: 07 Sep 2009 Posts: 1554
|
(Separately) Posted: Tue Jul 16, 2024 13:04 Post subject: |
|
|
jentoso wrote: | По поводу wrapper так и не нашлось время или неактуально стало? |
Да как-то подзабылось. Насчет актуальности не знаю. Наверно все же сделаю, выложу здесь, нужно будет потестировать какое-то время прежде чем включать в дистрибутив.
Destiny wrote: | зачем он лежит в составе плагина, если оказывается, что надо вызывать ехе и из него сохранять настоящий/актуальный файл? |
Он просто для справки, список полей с описаниями. Для того, чтобы было где посмотреть поддерживаемые поля при модификации конфига. В работе плагина он не участвует.
Обновлять его необязательно, список полей библиотеки между версиями обычно меняется незначительно.
Destiny wrote: | Почему при генерации не формируется формат: "ПОЛЕ;описание поля"?
Ведь если посмотреть в гитхабе самой библиотеки, то там всё это есть. |
Потому что библиотека его выводит в таком виде, в котором он сохранен в allprops.txt. И с точки зрения читабельности это вполне нормальный формат. А то что в исходниках они лежат в формате csv ничего не значит, API библиотеки не предоставляет к ним доступ.
Destiny wrote: | Почему вдруг плагин стал поддерживать совершенно странные для него форматы? PDF, TXT, XLSX, BMP, EXE и т.п? |
Эти вопросы нужно задавать автору библиотеки. Почитайте тему чуть выше, только недавно это обсуждали.
Destiny wrote: | КАК теперь быстро, безболезненно, интуитивно и точно оставить в его поле зрения ТОЛЬКО лишь файлы видео и аудио формата?
не пытаясь вспомнить их все, не перепроверяя имеющийся список FORMATS через инет - пытаясь понять - что есть там что. |
Присмотритесь повнимательнее к тегу. Он сейчас как раз разбит на группы: контейнеры, видео, аудио, изображения, архивы/документы, текст (субтитры).
В еще невыпущенной версии я уже убрал часть расширений:
 Hidden text
Code: |
<Formats>
AAF,AIFF,AIFC,AIF,AMV,AVI,M2TS,MTS,SSIF,CLPI,BDMV,BDM,MPLS,CDA,DAT,MPD,DV,DIF,DIVX,DPG,IFO,FLV,GXF,F4M,
HEIF,AVCI,AVCS,HEIC,HEICS,AVIF,AVIS,M3U8,GVI,ISM,IVF,LXF,MKV,MK3D,MKA,MKS,MPEG,MPG,M2P,VOB,VRO,PSS,EVO,TS,
M2T,M2S,M4T,M4S,TMF,TP,TRP,TY,BRAW,MOV,MP4,M4V,M4A,M4B,M4P,M4R,3GA,3GPA,3GPP,3GP,3GPP2,3G2,K3G,JPM,
JPX,MQV,ISMV,ISMA,ISMT,F4A,F4B,F4V,MTV,MXF,NSV,NUT,OGA,OGG,OGM,OGV,OGX,OPUS,SPX,PMP,PTX,QT,RM,RMVB,
RA,SWF,SKM,WEBM,ASF,DVR-MS,WMA,WMV,WTV,
AVC,H264,264,VIDEO,PART,DRC,FLI,FLC,H261,H263,HEVC,H265,265,MPGV,MPV,MP1V,M1V,MP2V,M2V,M4V,MP4V,VC1,Y4M,VVC,
H266,266,
AC3,AC4,AAC,AACP,ADTS,ALS,AMR,AUD,AUE,AU,CAF,DDE,DFF,DSF,DTS,DTSHD,DTSHDMA,DTSX,DD+,EC3,EAC3,XM,FLA,FLAC,
IT,LA,MIDI,MID,KAR,MOD,APE,MAC,M1A,MPA,MPA1,MP1,M2A,MPA2,MP2,MP3,OMA,OMG,AA3,AT3,MPC,MP+,QCP,RKA,
S3M,SHN,SLS,SPDIF,SPX,TAK,MLP,THD,VR,VQF,ACT,AT9,WAV,W64,WV,WVC,
AQT,SSA,ASC,STL,SMI,SAMI,SCC,SC2,SRT,DFXP,TTML,VTT
</Formats>
<!--
Other extensions, supported by MediaInfo, but not included in order to not interfere with other plugins.
You can add them manually if you need.
ICC,ARI,BMP,BMS,BPG,DDS,DPX,CIN,EXR,GIF,GIS,ICO,JNG,H3D,JPEG,JPG,JPE,JPS,MPO,JP2,MNG,PCX,PNG,PNS,PSD,RLE,TIFF,TIF,
TGA,7Z,ACE,SO,ISO,EXE,DLL,RAR,ZIP,DOCX,ODT,XLSX,ODS,TXT,PDF,BLENDERS
-->
|
Просто уже много раз возникали вопросы - а почему этот формат не поддерживается, почему этот не показывается. Поэтому попробовал добавить все поддерживаемые форматы (генерируется из csv из исходников), но тут всплыла специфика взаимодействия с другими плагинами. Так что просто надо найти баланс.
Destiny wrote: | В идеале тег FORMAS в XML файле настроек плагина должен иметь суб-теги: AUDIO, IMAGE, VIDEO, TEXT ну и т.д. |
Субтеги это уже излишне, но группы можно дополнительно разделить пустыми строками для наглядности. |
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 290
|
(Separately) Posted: Tue Jul 16, 2024 13:42 Post subject: |
|
|
Loopback wrote: | Он просто для справки, список полей с описаниями. |
Дык это же хорошо)))
НО! как справка = файл тогда должен быть актуализирован!
Т.е. должны быть суммированы факты:
есть список полей, генерируемых библиотекой, и есть описания для них, выдранные из того,
что хранится на гитхабе разработчика библиотеки.
А иначе толку от файла, который правильный на 70/80/90%?
Loopback wrote: | И с точки зрения читабельности это вполне нормальный формат. |
См. выше- написано вами же)) Это справка! А значит формат=> ПОЛЕ : описание поля.
И никак иначе....
Loopback wrote: | Присмотритесь повнимательнее к тегу. Он сейчас как раз разбит на группы: контейнеры, видео, аудио, изображения, архивы/документы, текст (субтитры). |
Вот не догнал((( хотя вроде и достаточно логичное разбиение.
Так что тупо воспользовался вашим спойлером, надеясь, что "перекрестно-опыляемых" расширений
с поддержкой их другими плагинами не получится...
В целом: с надеждой смотрим в будущее плагина и благодарим за вашу работу! |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1554
|
(Separately) Posted: Tue Jul 16, 2024 16:00 Post subject: |
|
|
Destiny wrote: | О! как справка = файл тогда должен быть актуализирован! |
Разумеется, когда я обновляю версию библиотеки, то обновляю и allprops.txt. Механизм обновления в TCMediaInfo.exe предусмотрен на случай, если пользователь самостоятельно обновляет библиотеку.
Destiny wrote: | Т.е. должны быть суммированы факты:
есть список полей, генерируемых библиотекой, и есть описания для них, выдранные из того,
что хранится на гитхабе разработчика библиотеки. |
Да не нужно ничего тянуть из гитхаба, всё то же самое в виде пар поле:описание возвращает библиотека. И всё это без изменений сохраняется в allprops.txt. Причём именно для текущей версии, установленной у пользователя. А на гитхабе могут быть версии этих файлов с полями, которых по факту еще нет в текущей версии.
Destiny wrote: | См. выше- написано вами же)) Это справка! А значит формат=> ПОЛЕ : описание поля.
И никак иначе.... |
Так а в allprops.txt что, разве другой формат?
Code: | Menu_Codec_List : Deprecated, do not use in new projects
Menu_Language_List : Menu languages in this file, separated by /
CompleteName : Complete name (Folder+Name+Extension)
FolderName : Folder name only
FileNameExtension : File name and extension
FileName : File name only
FileExtension : File extension only
CompleteName_Last : Complete name (Folder+Name+Extension) of the last file (in the case of a sequence of files)
|
Destiny wrote: | хотя вроде и достаточно логичное разбиение. |
Группировка берется из исходного файла Format.csv. |
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 290
|
(Separately) Posted: Tue Jul 16, 2024 16:53 Post subject: |
|
|
Loopback wrote: | Так а в allprops.txt что, разве другой формат? |
Конечно. ЕСЛИ сохранить из ЕХЕ файла эти поля в этот файл (чьё имя по умолчанию, кстати, даже и не спрашивается! имя захардкожено похоже),
то в файле сохраняются ТОЛЬКО названия полей. Никаких комментариев после двоеточия нет.
Только в редчайших случаях есть слово Deprecated
и всё. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1554
|
(Separately) Posted: Tue Jul 16, 2024 19:23 Post subject: |
|
|
Destiny wrote: | имя захардкожено похоже |
Тот случай, когда выбор ни к чему. Незачем плодить файлы, назначение функции - обновить имеющийся.
Destiny wrote: | то в файле сохраняются ТОЛЬКО названия полей. Никаких комментариев после двоеточия нет. |
Вот это уже интереснее. Например, файл в версии 1.0.8 c библиотекой 24.05 сохранён с помощью этой же функции и он вполне полноценен. Версии плагина и библиотеки какие? |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10419 Location: Россия, Саратов
|
(Separately) Posted: Tue Jul 16, 2024 20:22 Post subject: |
|
|
Loopback
Я проверял сегодня именно на этой версии плагина именно с этой библиотекой. Файл allprops.txt создавался через TCMediaInfo.exe. Да, остаются только названия полей. Комментариев или нет вообще (в основном), или вместо них указано "Deprecated" (редко). _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 290
|
(Separately) Posted: Tue Jul 16, 2024 21:13 Post subject: |
|
|
Loopback
Да ваш плагин 1.0.8 в полной его комплектации и без каких-либо моих вмешательств.
Ну и выше вот уже подтвердили суть проблемы.
Включая нюансы про Deprecated. |
|
Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 266 Location: Электросталь
|
(Separately) Posted: Tue Jul 16, 2024 22:51 Post subject: |
|
|
Это я народ в заблуждение ввёл, прошу великодушного пардону Я на ру-борде написал что дамп полей без описаний был всегда — у меня в памяти это перемешалось с дампами другой утилиты. Сейчас прочёл сообщения и перепроверил: в 1.0.7 дамп поле:описание, в 1.0.8 — только поле (описаний нет, за исключением редких Deprecated). _________________ Amo ergo sum |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1554
|
(Separately) Posted: Tue Jul 16, 2024 23:05 Post subject: |
|
|
Avada
Destiny
yozhik
Проверил. По всей вероятности я ошибся и всё же выгрузил список, который в версии 1.0.8 из более ранней версии библиотеки. Так как дело именно в ней: в версии 22.03 выгрузка работает без проблем, а в последних выдает только список полей без описаний. Посмотрю в чем дело, но если это было сделано намеренно и это принципиальная позиция автора, то к сожалению, придется фичу с сохранением этого файла выпилить.
UP: Долго искать не пришлось, вот коммит. Сэкономили на спичках, как говорится. Правда с определенной мотивацией. И вот тут еще спрашивали. |
|
Back to top |
|
 |
Destiny
Joined: 15 Dec 2015 Posts: 290
|
(Separately) Posted: Wed Jul 17, 2024 15:12 Post subject: |
|
|
Мммммм. Позволите продолжить уточнения?
Типа в самой библиотеке порезали возможности по выводу информации о поддерживаемых тэгах? Зачем-то намеренно.
И логику фиг поймешь, но да ладно.
НО! мы же речь ведем о самописной/дополнительной программе, функционал которой и выполнял эту встроенную типа
API команду на вывод инфы в файл.
НО! если "на той стороне" что-то и почикали - то "на этой" же можно продолжить выводить корректно! Т.е. просто допилить
вывод инфы С УЧЕТОМ той инфы, что они хранят в вышеуказанной ссылке и на которую сами же ссылаются в одном из
указанных выше коммитов/обсуждений.
Типа это офиц.место для хранения такой инфы. Ну значит надо её оттуда извлекать и генерировать вывод в файл allprops.txt
инфы с её учетом. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1554
|
(Separately) Posted: Wed Jul 17, 2024 15:51 Post subject: |
|
|
Destiny wrote: | Типа в самой библиотеке порезали возможности по выводу информации о поддерживаемых тэгах? Зачем-то намеренно.
И логику фиг поймешь, но да ладно. |
Да, убрали из бинарника описания.
А логика указана по ссылкам. Мотивируют это тем, что библиотека слишком разрослась в размерах, что плохо для использования в некоторых применениях, например, в JavaScript, поэтому размер оптимизируют. Вот тут пожертвовали описаниями полей, их размер около 150кб.
Destiny wrote: | Ну значит надо её оттуда извлекать и генерировать вывод в файл allprops.txt
инфы с её учетом. |
Файл я продолжу обновлять. Если нужно, отдельно выложу скрипт для формирования этого файла на основе данных гитхаба. Просто больше этого функционала не будет во встроенном виде.
Также ещё планирую сделать раздел на сайте с этой информацией, может так кому удобнее будет смотреть. |
|
Back to top |
|
 |
olegvsk
Joined: 17 Dec 2020 Posts: 113
|
(Separately) Posted: Tue Jul 23, 2024 22:24 Post subject: |
|
|
Loopback
Отличный полезный плагин. Пользуюсь главным образом wlx-частью, не хватает одного - быстрого переключения режимов просмотра. Например, Ctrl+номер или вроде того. Или хоткей можно настроить самостоятельно? |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1554
|
(Separately) Posted: Wed Jul 24, 2024 00:52 Post subject: |
|
|
olegvsk
Хорошая идея. Будучи "мышистом" всё время забываю про клавиатурное управление. Добавил в todo. Возможно не в ближайшей версии, но надо будет сделать. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 786
|
(Separately) Posted: Fri Jul 26, 2024 11:55 Post subject: |
|
|
Loopback
IsPressed функцию можно добавить? Хочу поэксппрементировать с подсказкой. Сейчас она у меня такая:
 Hidden text Code: | <sources>
<!-- General -->
<source name="Duration" field="Duration"/>
<source name="OverallBitRate" field="OverallBitRate"/>
<source name="GeneralFormat" field="Format"/>
<source name="EncDate" field="Encoded_Date"/>
<source name="RecDate" field="Recorded_Date"/>
<source name="GeneralStreamCount" field="StreamCount"/>
<!-- Tag info -->
<source name="Title" field="Title"/>
<source name="Album" field="Album"/>
<source name="Performer" field="Performer"/>
<source name="Copyright" field="Copyright"/>
<source name="Comment" field="Comment" />
<source name="Composer" field="Composer"/>
<source name="Genre" field="Genre"/>
<source name="TrackNumber" field="Track/Position"/>
<source name="Medium" field="OriginalSourceMedium"/>
<source name="Source" field="OriginalSourceForm"/>
<source name="EncodedWith" field="Encoded_Application"/>
<!-- Video -->
<source name="VideoStreamCount" field="StreamCount" context="Video"/>
<source name="VideoFormat" field="Format" context="Video"/>
<source name="VideoBr" field="BitRate" context="Video"/>
<source name="VideoCodecID" field="CodecID" context="Video"/>
<source name="VideoFrameWidth" field="Width" context="Video"/>
<source name="VideoFrameHeight" field="Height" context="Video"/>
<source name="DisplayAspectRatio" field="DisplayAspectRatio/String" context="Video"/>
<source name="VideoFPS" field="FrameRate" context="Video"/>
<source name="VideoFrameCount" field="FrameCount" context="Video"/>
<!-- Audio -->
<source name="AudioStreamCount" field="StreamCount" context="Audio"/>
<source name="AudioLang" field="Language" context="Audio" stream="*"/>
<source name="AudioLanguage" field="Language/String" context="Audio" stream="*"/>
<source name="AudioFormat" field="Format" context="Audio"/>
<source name="AudioBr" field="BitRate" context="Audio"/>
<source name="AudioCodecID" field="CodecID" context="Audio"/>
<source name="AudioBrMode" field="BitRate_Mode" context="Audio"/>
<source name="AudioSamplingRate" field="SamplingRate/String" context="Audio"/>
<source name="AudioChannels" field="Channel(s)" context="Audio"/>
<source name="AudioResolution" field="BitDepth" context="Audio"/>
<source name="AudioFormatSettingsMode" field="Format_Settings_Mode" context="Audio"/>
<!-- Text -->
<source name="TextStreamCount" field="StreamCount" context="Text"/>
<source name="TextLang" field="Language" context="Text" stream="*"/>
<source name="TextLanguage" field="Language/String" context="Text" stream="*"/>
<source name="TextFormat" field="Format" context="Text"/>
</sources>
<columns>
<!-- General -->
<column name="Duration">
<unit name="hh:mm:ss" type="script">Output:=TimingFormat('%hh:%mm:%ss', Duration);</unit>
<unit name="hh:mm:ss.fff" type="script">Output:=TimingFormat('%hh:%mm:%ss.%fff', Duration);</unit>
<unit name="s" type="script">Output:=Trunc(Duration/1000);</unit>
<unit name="z">Duration</unit>
<unit name="Custom" type="script">
<![CDATA[
Output:='';
if Duration = '' then Exit;
Hour:=Trunc(Duration/3600000);
Min:=Trunc((Duration-Hour*3600000)/60000);
Sec:=Trunc((Duration-Hour*3600000-Min*60000)/1000);
if (Hour <> 0) then Output:=IntToStr(Hour)+' ч. ';
if (Min <> 0) then Output:=Output+IntToStr(Min) +' м. ';
if (Sec = -1) then Output:=Output+IntToStr(Sec) +' с. ';
]]>
</unit>
</column>
<column name="Format">GeneralFormat</column>
<column name="Bitrate">
<unit name="Bps">OverallBitRate</unit>
<unit name="KBps" type="script">Output:=Format('%f', OverallBitRate/1000);</unit>
<unit name="MBps" type="script">Output:=Format('%f', OverallBitRate/1000000);</unit>
</column>
<column name="Recorded Date" coltype="ft_datetime">RecDate</column>
<column name="Encoded Date" coltype="ft_datetime">EncDate</column>
<column name="Stream Count" coltype="ft_numeric_32">
<unit name="General">GeneralStreamCount</unit>
<unit name="Video only">VideoStreamCount</unit>
<unit name="Audio only">AudioStreamCount</unit>
<unit name="Subtitles only">TextStreamCount</unit>
</column>
<separator/>
<!-- Tag info -->
<column name="Title">Title</column>
<column name="Album">Album</column>
<column name="Performer">Performer</column>
<column name="Copyright">Copyright</column>
<column name="Comment">Comment</column>
<column name="Composer">Composer</column>
<column name="Genre">Genre</column>
<column name="Track Number">TrackNumber</column>
<column name="Recorded Date">RecDate</column>
<column name="Medium">Medium</column>
<column name="Source">Source</column>
<column name="Encoded With">EncodedWith</column>
<column name="Tag Info" type="script">
<![CDATA[
Output:=''
if (Title <> '') then Output:=Title;
]]>
</column>
<separator/>
<!-- Video -->
<column name="Video Streams">VideoStreamCount</column>
<column name="Video Format">VideoFormat</column>
<column name="Video Codec">VideoCodecID</column> <!-- For AVI this field return FOURCC -->
<column name="Video Bitrate">
<unit name="Bps">VideoBr</unit>
<unit name="KBps" type="script">Output:=Format('%f', VideoBr/1000);</unit>
<unit name="MBps" type="script">Output:=Format('%f', VideoBr/1000000);</unit>
</column>
<column name="Frame Size" type="script">
<![CDATA[
if (VideoFrameWidth = '') and (VideoFrameHeight = '') then
Output:=''
else
Output:=VideoFrameWidth+' x '+VideoFrameHeight;
]]>
</column>
<column name="Frame Rate">VideoFPS</column>
<column name="Frame Count">VideoFrameCount</column>
<column name="All video as string" type="script">
<![CDATA[
if (VideoFrameWidth = '') and (VideoFrameHeight = '') then
Output:=''
else
Output:=VideoFrameWidth+'x'+VideoFrameHeight;
if (DisplayAspectRatio <> '') then Output:=Output+' ('+DisplayAspectRatio+')';
if (VideoFPS <> '') then Output:=Output+', '+VideoFPS+' fps';
if (VideoFormat <> '') then Output:=Output+', '+VideoFormat;
if (VideoBr <> '') then Output:=Output+', '+Format('%f', VideoBr/1000000)+' MBps';
if (VideoStreamCount <> '1') and (Output <> '') then Output:=Output+', Дорожек: '+VideoStreamCount;
]]>
</column>
<separator/>
<!-- Audio -->
<column name="Audio Streams">AudioStreamCount</column>
<column name="Audio Lang" type="script">Output:=StrReplace(AudioLang, '|', ' ', 1, 0)</column>
<column name="Audio Language" type="script">Output:=StrReplace(AudioLanguage, '|', ' ', 1, 0)</column>
<column name="Audio Format">AudioFormat</column>
<column name="Audio Bitrate">
<unit name="Bps">AudioBr</unit>
<unit name="KBps" type="script"><![CDATA[if (AudioBr <> '') then Output:=Format('%f', AudioBr/1000);]]></unit>
</column>
<column name="Bitrate Mode">AudioBrMode</column>
<column name="Sampling Rate">AudioSamplingRate</column>
<column name="Channels">AudioChannels</column>
<column name="Resolution">AudioResolution</column>
<column name="All audio as string" type="script">
<![CDATA[
Output:=AudioFormat;
if (AudioSamplingRate <> '') then Output:=Output+', '+AudioSamplingRate;
if (AudioChannels <> '') then Output:=Output+', '+AudioChannels+' Ch';
if (AudioResolution <> '') then Output:=Output+', '+AudioResolution+' Bits';
if (AudioBr <> '') then Output:=Output+', '+Format('%d Kbps', Trunc(AudioBr/1000));
Output:=Output+', Дорожек: '+AudioStreamCount;
]]>
</column>
<column name="All audio streams1" type="script">
<![CDATA[
Output:=Get(Language, Audio, 1);
]]>
</column>
<separator/>
<!-- Subtitles -->
<column name="Text Streams">TextStreamCount</column>
<column name="Subs" type="script">Output:=StrReplace(TextLang, '|', ' ', 1, 0)</column>
<column name="Subtitles" type="script">Output:=StrReplace(TextLanguage, '|', ' ', 1, 0)</column>
<column name="Subtitles Format">TextFormat</column>
<separator/>
<!-- Almost demo purpose, retrieve custom values from lists -->
<column name="Video codec custom" type="list" list="VideoCodecs">VideoCodecID</column>
<column name="Audio codec custom" type="script">Output:=GetListValue('AudioCodecs', Format('%4.4d', AudioCodecID), AudioCodecID);</column>
</columns>
|
 Hidden text 13fields=Время: [=tcmediainfo.Duration]\nВидео: [=tcmediainfo.All video as string]\nАудио: [=tcmediainfo.All audio as string]\n[="Язык аудио: "tcmediainfo.Audio Language]\n[="Субтитры: "tcmediainfo.Text Streams]\n[="Язык субтитров: "tcmediainfo.Subtitles]
Делал давно и, как видите, коряво. Нужна ревизия, до которой руки так и не дошли. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1554
|
(Separately) Posted: Fri Jul 26, 2024 13:21 Post subject: |
|
|
Orion9 wrote: | IsPressed функцию можно добавить? |
IsPressed куда добавить, сюда? Зачем?
Если с похожими целями, как обновление записей при нажатом Ctrl, то нет, я уже говорил, что не буду здесь делать действия в зависимости от нажатых клавиш. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|