Просмотров: 1500 | Дата: 02.05.2024 | Коментарии (0)

YouTube онлайн плеер



Скачать архив
Онлайновый плеер видео файлов с поиском и автоматическим плейлистом
на базе  YuoTube плеера.
Есть встроенная функция скачать видео файл.
Сохраняется информация о последнем поиске.

API инструменты для редактирования формы и функций на странице:
http://code.google.com/intl/ru-RU/apis/youtube



Вариант кода для PureBasic 4.41

; компилить только в 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 функции.

Архив с программой.











Сайт посвящён языку программирования PureBasic — коммерческий компилятор языка программирования, использующего синтаксис BASIC. Предназначен для создания кроссплатформенных приложений для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Разработан компанией Fantaisie Software.