; компилить только в Unicode
; 23 октября 2010 г
; PB 4.41(x86)
; Миршниченко Олег
;
;
; поиск по страницам &aq=suggested_categories=10&page=1
; картинка "http://i1.ytimg.com/vi/"+code.s+"/default.jpg"
;
Enumeration
#Window_0
#Panel
#Panel_2
#Web
#Web_0
#download
#String
#String_1
#Search
#List
#Check
#img
#img_2
#fon
#Text
#Text2
#Home1
#Home2
#Home3
#Home4
#Home5
#Website
#get
EndEnumeration
UseJPEGImageDecoder()
UsePNGImageDecoder()
Structure Spisok
time.s
cod.s
nameA.s
EndStructure
Global NewList Spisok.Spisok() ; Динамически связанный список
Global aw, code.s, xx.f=640, yy.f=505, NameS.s, zagl.s, nameD.s
;
; aw - количество найденных файлов
;
; Если загружать код напрямую в WebGadget() с помощью:
; SetGadgetItemText(#Web,#PB_Web_HtmlCode,HTML)
; происходит ошибка сценария JavaScript
; строка: "google.load('swfobject', '2.1');"
; код работает, но постоянно при обновлении всплывающее окно...
;
Procedure IsMouseOver(wnd) ; Эта процедура определяет находится ли курсор мышки над заданым окном или гаджетом
GetWindowRect_(wnd,re.RECT)
GetCursorPos_(pt.POINT)
Result.l = PtInRect_(@re, pt\x | (pt\y<<32) )
ProcedureReturn Result
EndProcedure
Procedure HAND(Event, Gadget, Type, ImageGadget) ; Обр. рука
Static Button
If Event=#WM_MOUSEMOVE ; Переместилась мышка
If IsMouseOver(GadgetID(#img_2)) Or IsMouseOver(GadgetID(#List))
SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука
EndIf
EndIf
EndProcedure
Procedure.s Between_2(string.s, L.s, R.s) ; работает с unicode (вырезаем из строки между L и R)
Position = FindString(string, L.s, 1)
string2.s = Right(string, Len(string)+1-Position-Len(L.s))
Position2 = FindString(string2, R.s, 1)
string3.s = Left(string2, Position2-1)
If Position <> 0
ProcedureReturn string3.s
EndIf
EndProcedure
Procedure JS_PB(code.s, autP.s) ; перезаписываем код видео файла и автоплей
CreateFile(1, "name.js")
WriteStringN(1, "var videoID = '"+code.s+"'; // Bali Diving HD") ; L2GaCnAiuvo Depeche Mode
WriteStringN(1, "var autoplay= '&autoplay="+autP.s+"';" )
WriteStringN(1, "/*")
WriteStringN(1, "name1 "+NameS.s+" name2")
WriteStringN(1,"*/")
CloseFile(1)
EndProcedure
Procedure Resaze(width.s, height.s ) ; перезаписываем размер плеера
CreateFile(2, "resaze.js")
WriteStringN(2, "var width = '"+width.s+"'; // ширна" )
WriteStringN(2, "var height= '"+height.s+"'; // высота" )
CloseFile(2)
EndProcedure
Procedure Search(name.s, home.s) ; поиск видео по YouTube
ClearList(Spisok())
ClearGadgetItems(#List)
URL.s="http://www.youtube.com/results?search_query="+name.s+home.s
URLDownloadToFile_(0, URL, "Temp.htm",0,0)
If ReadFile(0, "Temp.htm")
While Eof(0) = 0
string.s= ReadString(0)
rez.s= Between_2(string, "video-long-title-", Chr(34)+" href=")
time.s= Between_2(string,"","")
If time.s <>""
tim.s=time.s
EndIf
If rez <>"" And Len(rez) <=11
AddGadgetItem(#List, -1, Between_2(string, "title="+Chr(34), Chr(34)+" rel="))
AddElement(Spisok())
Spisok()\time.s=tim.s ; время звучания
Spisok()\cod.s=rez.s ; код видео файла
Spisok()\nameA.s=Between_2(string, "title="+Chr(34), Chr(34)+" rel=") ; название видео файла
aw+1
EndIf
Wend
CloseFile(0)
;DeleteFile("Temp.htm")
EndIf
EndProcedure
Procedure.s Transliterate(s.s) ; транлитерация в unicode
s=UCase(s)
i.l; integer;
Char.s; string;
t.s=""
For i=1 To Len(s)
Char=Mid(s, i, 1) ; Читаем очередную букву
rez= Asc(Char)
Select rez ; нет Ё , Ъ
Case 1040: T=T+"%D0%90"; А
Case 1041: T=T+"%D0%91"; Б
Case 1042: T=T+"%D0%92"; В
Case 1043: T=T+"%D0%93"; Г
Case 1044: T=T+"%D0%94"; Д
Case 1045: T=T+"%D0%95"; Е
Case 1025: T=T+"%D0%81"; Ё
Case 1046: T=T+"%D0%96"; Ж
Case 1047: T=T+"%D0%97"; З
Case 1048: T=T+"%D0%98"; И
Case 1049: T=T+"%D0%99"; Й
Case 1050: T=T+"%D0%9A"; К
Case 1051: T=T+"%D0%9B"; Л
Case 1052: T=T+"%D0%9C"; М
Case 1053: T=T+"%D0%9D"; Н
Case 1054: T=T+"%D0%9E"; О
Case 1055: T=T+"%D0%9F"; П
Case 1056: T=T+"%D0%A0"; Р
Case 1057: T=T+"%D0%A1"; С
Case 1058: T=T+"%D0%A2"; Т
Case 1059: T=T+"%D0%A3"; У
Case 1060: T=T+"%D0%A4"; Ф
Case 1061: T=T+"%D0%A5"; Х
Case 1062: T=T+"%D0%A6"; Ц
Case 1063: T=T+"%D0%A7"; Ч
Case 1064: T=T+"%D0%A8"; Ш
Case 1065: T=T+"%D0%A9"; Щ
Case 1066: T=T+"%D0%AA"; Ъ
Case 1067: T=T+"%D0%AB"; Ы
Case 1068: T=T+"%D0%AC"; Ь
Case 1069: T=T+"%D0%AD"; Э
Case 1070: T=T+"%D0%AE"; Ю
Case 1071: T=T+"%D0%AF"; Я
Default
t=t+Char;
EndSelect;
Next
ProcedureReturn t
EndProcedure
Procedure.s Code(code.s) ; получаем код файла из списка
ForEach Spisok()
If Spisok()\nameA.s=code.s
code.s=Spisok()\cod.s
EndIf
Next
ProcedureReturn code.s
EndProcedure
Procedure Animate_Winodw(State)
If State=1 ; Развернуть окно
ResizeGadget(#img_2,882,#PB_Ignore,#PB_Ignore,#PB_Ignore)
For i=670 To 890 Step 2
ResizeWindow(#Window_0,#PB_Ignore,#PB_Ignore,i,#PB_Ignore)
For x=1 To 10
WindowEvent()
Next x
Delay(8)
Next i
For i=537 To 600 Step 2
ResizeWindow(#Window_0,#PB_Ignore,#PB_Ignore,#PB_Ignore,i)
For x=1 To 10
WindowEvent()
Next x
Delay(8)
Next i
Else ; Свернуть окно
For i=600 To 537 Step -2
ResizeWindow(#Window_0,#PB_Ignore,#PB_Ignore,#PB_Ignore,i)
For x=1 To 10
WindowEvent()
Next x
Delay(8)
Next i
For i=890 To 670 Step -2
ResizeWindow(#Window_0,#PB_Ignore,#PB_Ignore,i,#PB_Ignore)
For x=1 To 10
WindowEvent()
Next x
Delay(8)
Next i
ResizeGadget(#img_2,662,#PB_Ignore,#PB_Ignore,#PB_Ignore)
EndIf
EndProcedure
Procedure dowg(url.s)
URLDownloadToFile_(0, url.s,"tempYtb.htm",0,0)
If ReadFile(0, "tempYtb.htm")
While Eof(0) = 0
string.s= ReadString(0)
url.s=Between_2(string.s,"img.src = '","';")
If url.s <> ""
url.s=ReplaceString(url.s,"\/\/","//")
url.s=ReplaceString(url.s,"\/generate_204","/videoplayback")
url_D.s=ReplaceString(url.s,"901028%2C900031%2C905602","901803%2C907040%2C900650")
url_D.s=url_D.s +"&title="+nameD.s
EndIf
Wend
EndIf
CloseFile(0)
DeleteFile("tempYtb.htm")
SetGadgetText(#Web, url_D)
EndProcedure
CatchImage(#img_2, ?Im1, ?Im1End -?Im1 )
CatchImage(#fon, ?Im2, ?Im2End -?Im2 )
If OpenWindow(#Window_0,0,0,670,537,"YouTube player",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible)
SetWindowColor(#Window_0,RGB(0,0,0)) ; RGB(218, 218, 218)
SetWinBackgroundImage(WindowID(#Window_0),ImageID(#fon))
patch.s="file://localhost/"+GetPathPart(ProgramFilename())+"YouTube_player.htm" ; полный путь к html файлу
;---------------------------------------------------------------------------------
StringGadget(#String,13,540,395,15," http://www.youtube.com/watch?v=2uUk9K9TQhg",#PB_String_BorderLess)
SetGadgetColor(#String, #PB_Gadget_BackColor, RGB(26, 26, 26))
SetGadgetColor(#String, #PB_Gadget_FrontColor , RGB(113, 113, 113))
;---------------------------------------------------------------------------------
HyperLinkGadget(#download,430,540, 60, 12, "Open URL",RGB(218, 218, 218))
SetGadgetColor(#download, #PB_Gadget_BackColor, RGB(0,0,0))
SetGadgetColor(#download, #PB_Gadget_FrontColor , RGB(113, 113, 113))
;---------------------------------------------------------------------------------
LoadImage(#img, "default.jpg")
ImageGadget(#img,720, 370,120,90,ImageID(#img))
ImageGadget(#img_2,662,250,120,90,ImageID(#img_2))
;---------------------------------------------------------------------------------
StringGadget(#String_1,13,571,200,12,"Zemfira",#PB_String_BorderLess)
SetGadgetColor(#String_1, #PB_Gadget_BackColor, RGB(26, 26, 26))
SetGadgetColor(#String_1, #PB_Gadget_FrontColor , RGB(113, 113, 113))
;---------------------------------------------------------------------------------
;{ находим код последнего проигранного файла и имя последнего поиска
If ReadFile(3, "name.js")
While Eof(3) = 0
string.s= ReadString(3)
cof.s= Between_2(string, "var videoID = '", "';") ; код файла
NamS.s=Between_2(string, "name1 "," name2") ; имя запроса поиска
If cof.s<> ""
code.s=cof.s
EndIf
If NamS.s<> ""
SetGadgetText(#String_1,NamS)
EndIf
Wend
CloseFile(3)
EndIf
;}
;---------------------------------------------------------------------------------
HyperLinkGadget(#Search,230,570, 80, 15, "Search",RGB(218, 218, 218))
SetGadgetColor(#Search, #PB_Gadget_BackColor, RGB(0,0,0))
SetGadgetColor(#Search, #PB_Gadget_FrontColor , RGB(113, 113, 113))
;---------------------------------------------------------------------------------
PanelGadget(#Panel_2,676,30,200,300)
ListIconGadget(#List,-1,-1,202,322,"",190,#PB_Explorer_List)
SetGadgetColor(#List, #PB_Gadget_BackColor, RGB(26, 26, 26))
SetGadgetColor(#List, #PB_Gadget_FrontColor , RGB(113, 113, 113))
CloseGadgetList()
;---------------------------------------------------------------------------------
TextGadget(#Text2,850, 7, 15,12,"1")
SetGadgetColor(#Text2, #PB_Gadget_BackColor, RGB(0, 0, 0))
SetGadgetColor(#Text2, #PB_Gadget_FrontColor, RGB(126, 126, 126))
;---------------------------------------------------------------------------------
HyperLinkGadget(#Home1,730,335, 10, 12, "1",RGB(218, 218, 218))
SetGadgetColor(#Home1, #PB_Gadget_BackColor, RGB(0, 0, 0))
SetGadgetColor(#Home1, #PB_Gadget_FrontColor, RGB(113, 113, 113))
HyperLinkGadget(#Home2,750,335, 10, 12, "2",RGB(218, 218, 218))
SetGadgetColor(#Home2, #PB_Gadget_BackColor, RGB(0, 0, 0))
SetGadgetColor(#Home2, #PB_Gadget_FrontColor, RGB(113, 113, 113))
HyperLinkGadget(#Home3,770,335, 10, 12, "3",RGB(218, 218, 218))
SetGadgetColor(#Home3, #PB_Gadget_BackColor, RGB(0, 0, 0))
SetGadgetColor(#Home3, #PB_Gadget_FrontColor, RGB(113, 113, 113))
HyperLinkGadget(#Home4,790,335, 10, 12, "4",RGB(218, 218, 218))
SetGadgetColor(#Home4, #PB_Gadget_BackColor, RGB(0, 0, 0))
SetGadgetColor(#Home4, #PB_Gadget_FrontColor, RGB(113, 113, 113))
HyperLinkGadget(#Home5,810,335, 10, 12, "5",RGB(218, 218, 218))
SetGadgetColor(#Home5, #PB_Gadget_BackColor, RGB(0, 0, 0))
SetGadgetColor(#Home5, #PB_Gadget_FrontColor, RGB(113, 113, 113))
;---------------------------------------------------------------------------------
TextGadget(#Text,690, 470, 190,50,"",#PB_Text_Center)
SetGadgetColor(#Text, #PB_Gadget_BackColor, RGB(0, 0, 0))
SetGadgetColor(#Text, #PB_Gadget_FrontColor, RGB(113, 113, 113))
;---------------------------------------------------------------------------------
HyperLinkGadget(#Website,700,577, 180, 17, "http://mirashic.narod.ru/S_video.htm",RGB(105, 105, 105))
SetGadgetColor(#Website, #PB_Gadget_BackColor, RGB(0,0,0))
SetGadgetColor(#Website, #PB_Gadget_FrontColor , RGB(46, 46, 46))
;---------------------------------------------------------------------------------
Search(Transliterate(GetGadgetText(#String_1)),home.s)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Escape, 1) ; Добавляет быстрые сочетания клавиш
;---------------------------------------------------------------------------------
HyperLinkGadget(#get,700,530, 70, 17, "Download",RGB(105, 105, 105))
SetGadgetColor(#get, #PB_Gadget_BackColor, RGB(0,0,0))
SetGadgetColor(#get, #PB_Gadget_FrontColor , RGB(46, 46, 46))
;---------------------------------------------------------------------------------
PanelGadget(#Panel, 9, 9, 652, 517)
WebGadget(#Web, -10, -10, 750, 530, patch.s)
WebGadget(#Web_0,0,0,0,0,"")
CloseGadgetList()
EndIf
HideWindow(#Window_0, 0)
Repeat
Event = WaitWindowEvent()
Window = EventWindow()
Gadget = EventGadget()
; автопереключение
If Event=#PB_Event_Gadget And EventGadget()=#Web And EventType()=#PB_EventType_TitleChange ; получаем результат работы скрипта
If GetGadgetItemText(#Web, #PB_Web_PageTitle)="0" ; если канал не активен переключаем на след.
code.s= GetGadgetItemText(#List, GetGadgetState(#List)+1 )
SetGadgetText(#Text,code)
code.s= Code(code.s)
url.s="http://i1.ytimg.com/vi/"+code.s+"/default.jpg"
URLDownloadToFile_(0, URL, "default.jpg",0,0)
LoadImage(#img, "default.jpg")
SetGadgetState(#img, ImageID(#img))
If GetGadgetState(#List)
с помощью Google API функции.