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

Uppod player




Онлайновый плеер видео файлов с поиском и  автоматическим плейлистом.
Используем Uppod плеер не в сети, а на локальном компьютере.
Конструктор онлайн плеера : http://uppod.ru/player/my/

После регистрации на сайте собираем внешний вид плеера и добавляем нужные нам функции ,
а PureBasic используем для создания оболочки и
поиска файлов на YouTube и для создаём плейлиста. 
Плейлист отображается внутри плеера. 
Поиск поддерживает русские символы. 
Есть встроенная функция скачать видео файл.
Сохраняется информация о последнем поиске.

Компилировать в режиме Unicode

В архиве скомпилированный файл, а также  исходники PB и html файлы плеера. 

  Скачать архив с файлами.

Вариант кода для версии PureBasic 4.41  ( нажми на кнопку, чтоб раскрыть код )

; компилировать только в Unicode

Enumeration 
 #Window_0
 #Web
 #String_1
 #Search 
 #img
 #Website
 #Home1
 #Home2
 #Home3
 #Home4
 #Home5 
 #Sticky 
EndEnumeration
UsePNGImageDecoder()
Structure Spisok
 cod.s
 nameA.s
EndStructure
Global NewList Spisok.Spisok() ; Динамически связанный список

Procedure kod_HTML() ; проба не работает

uppod.s ="file://localhost/"+GetPathPart(ProgramFilename())+"uppod.swf" ; полный путь к html файлу
stil.s ="file://localhost/"+GetPathPart(ProgramFilename())+"stil.txt" ; полный путь к html файлу
Playlist.s ="file://localhost/"+GetPathPart(ProgramFilename())+"Playlist_1.txt" ; полный путь к html файлу


Html.s =""
Html.s +""
Html.s +""
Html.s +""
Html.s +""
Html.s +""
Html.s +""
Html.s +""
Html.s +""

SetGadgetItemText(#Web, #PB_Web_HtmlCode, Html.s)
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 Search(name.s, home.s) ; поиск видео по YouTube
ClearList(Spisok())
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="/project/)
 time.s= Between_2(string,"","")
 If time.s <>""
 tim.s=time.s
 EndIf
 If rez <>"" And Len(rez) <=11
 AddElement(Spisok())
 Spisok()\cod.s=rez.s ; код видео файла
 Spisok()\nameA.s=Between_2(string, "title="+Chr(34), Chr(34)+" rel=") ; название видео файла
 EndIf 
 Wend
CloseFile(0)
DeleteFile("Temp.htm")
EndIf
EndProcedure

Procedure Playlist()
 CreateFile(0, "Playlist_1.txt")
 WriteStringN(0, "{"+Chr(34)+"playlist"+Chr(34)+":[" )
 ForEach Spisok()
 If Spisok()
 code.s=Spisok()\cod.s
 name.s=Spisok()\nameA.s
 WriteStringN(0,"{"+Chr(34)+"comment"+Chr(34)+": "+Chr(34)+""+name.s+""+Chr(34)+", "+Chr(34)+"file"+Chr(34)+":"+Chr(34)+"http://www.youtube.com/watch?v="+code.s+""+Chr(34)+" , "+Chr(34)+"poster"+Chr(34)+":"+Chr(34)+"http://i4.ytimg.com/vi/"+code.s+"/default.jpg"+Chr(34)+"},") ; default.jpg
 EndIf
 Next
 WriteStringN(0,"{"+Chr(34)+"comment"+Chr(34)+": "+Chr(34)+"Zemfira"+Chr(34)+", "+Chr(34)+"file"+Chr(34)+":"+Chr(34)+"http://www.youtube.com/watch?v=JueAA8fT18M"+Chr(34)+" , "+Chr(34)+"poster"+Chr(34)+":"+Chr(34)+"http://i4.ytimg.com/vi/JueAA8fT18M/default.jpg"+Chr(34)+"}")
 WriteStringN(0, "]}" )
 CloseFile(0)
 SetGadgetState(#Web,#PB_Web_Refresh)
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 Animate_Winodw(State)
 If State=1 ; Развернуть окно
 For i=484 To 508 Step 2
 ResizeWindow(#Window_0,#PB_Ignore,#PB_Ignore,#PB_Ignore,i)
 For x=1 To 10
 WindowEvent()
 Next x
 Delay(8)
 Next i
 ResizeGadget(#img,#PB_Ignore,503,#PB_Ignore,#PB_Ignore)
 Else ; Свернуть окно
 For i=508 To 484 Step -2
 ResizeWindow(#Window_0,#PB_Ignore,#PB_Ignore,#PB_Ignore,i)
 For x=1 To 10
 WindowEvent()
 Next x
 Delay(8) 
 Next i
 ResizeGadget(#img,#PB_Ignore,480,#PB_Ignore,#PB_Ignore)
 EndIf
EndProcedure

CatchImage(#img, ?Im1, ?Im1End -?Im1 )


patch.s="file://localhost/"+GetPathPart(ProgramFilename())+"test.htm" ; полный путь к html файлу

OpenWindow (#Window_0,0,0,640,485,"Uppod player", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered) 
 SetWindowColor(#Window_0,RGB(0, 0, 0))
 ImageGadget(#img,320,480,32,5,ImageID(#img))
;---------------------------------------------------------------------------------
 StringGadget(#String_1,13,487,150,15,"Zemfira",#PB_String_BorderLess)
 SetGadgetColor(#String_1, #PB_Gadget_BackColor, RGB(0,0,0))
 SetGadgetColor(#String_1, #PB_Gadget_FrontColor , RGB(113, 113, 113)) 
 HyperLinkGadget(#Search,165,487, 50, 15, "Search",RGB(218, 218, 218))
 SetGadgetColor(#Search, #PB_Gadget_BackColor, RGB(0,0,0))
 SetGadgetColor(#Search, #PB_Gadget_FrontColor , RGB(46, 46, 46))
 HyperLinkGadget(#Sticky,230,487, 55, 15, "Sticky YES",RGB(218, 218, 218)) ; окно сверху 
 SetGadgetColor(#Sticky, #PB_Gadget_BackColor, RGB(0,0,0))
 SetGadgetColor(#Sticky, #PB_Gadget_FrontColor , RGB(46, 46, 46)) 
 HyperLinkGadget(#Website,490,489, 150, 17, "http://uppod.ru/player/intro/",RGB(218, 218, 218))
 SetGadgetColor(#Website, #PB_Gadget_BackColor, RGB(0,0,0))
 SetGadgetColor(#Website, #PB_Gadget_FrontColor , RGB(46, 46, 46)) 
 ;--------------------------------------------------------------------------------- 
 HyperLinkGadget(#Home1,370,487, 10, 12, "1",RGB(218, 218, 218))
 SetGadgetColor(#Home1, #PB_Gadget_BackColor, RGB(0, 0, 0))
 SetGadgetColor(#Home1, #PB_Gadget_FrontColor, RGB(46, 46, 46)) 
 HyperLinkGadget(#Home2,390,487, 10, 12, "2",RGB(218, 218, 218))
 SetGadgetColor(#Home2, #PB_Gadget_BackColor, RGB(0, 0, 0))
 SetGadgetColor(#Home2, #PB_Gadget_FrontColor, RGB(46, 46, 46)) 
 HyperLinkGadget(#Home3,410,487, 10, 12, "3",RGB(218, 218, 218))
 SetGadgetColor(#Home3, #PB_Gadget_BackColor, RGB(0, 0, 0))
 SetGadgetColor(#Home3, #PB_Gadget_FrontColor, RGB(46, 46, 46)) 
 HyperLinkGadget(#Home4,430,487, 10, 12, "4",RGB(218, 218, 218))
 SetGadgetColor(#Home4, #PB_Gadget_BackColor, RGB(0, 0, 0))
 SetGadgetColor(#Home4, #PB_Gadget_FrontColor, RGB(46, 46, 46)) 
 HyperLinkGadget(#Home5,450,487, 10, 12, "5",RGB(218, 218, 218))
 SetGadgetColor(#Home5, #PB_Gadget_BackColor, RGB(0, 0, 0))
 SetGadgetColor(#Home5, #PB_Gadget_FrontColor, RGB(46, 46, 46)) 
;---------------------------------------------------------------------------------
;{ находим имя последнего поиска
If ReadFile(3, "name.txt")
 string.s= ReadString(3)
 SetGadgetText(#String_1,string.s)
CloseFile(3)
EndIf
;} 
WebGadget(#Web, 0, 0, 920, 480, patch.s)
StickyWindow(#Window_0, 1) ; окно сверху
;kod_HTML()
Repeat
Event = WaitWindowEvent() 
Window = EventWindow() 
Gadget = EventGadget()
 Select Event
 Case #PB_Event_Gadget
 Select EventGadget()
 Case #Sticky
 Stick = Stick ! 1
 If Stick=1
 StickyWindow(#Window_0, 0)
 SetGadgetText(#Sticky, "Sticky NO")
 Else
 StickyWindow(#Window_0, 1)
 SetGadgetText(#Sticky, "Sticky YES")
 EndIf
 Case #Website
 RunProgram("http://uppod.ru/player/intro/")
 Case #Search
 name.s= GetGadgetText(#String_1)
 name.s= Transliterate(name.s)
 Search(name.s,home.s)
 Playlist()
 Case #img ; раскрыть 
 If EventType()=#PB_EventType_LeftClick ; раскрыть по левому клику 
 klic=klic ! 1
 If klic
 Animate_Winodw(1)
 Else
 Animate_Winodw(0)
 EndIf
 EndIf
 Case #Home1,#Home2,#Home3,#Home4,#Home5 ; поиск по страницам
 home.s= GetGadgetText(Gadget)
 SetWindowTitle(#Window_0,"Uppod player Home "+home)
 name.s= GetGadgetText(#String_1)
 name.s= Transliterate(name.s)
 home.s="&aq=suggested_categories=10&page="+home.s
 Search(name.s,home.s)
 Playlist() 
 EndSelect
 EndSelect
If Event = #PB_Event_CloseWindow
OpenFile(3, "name.txt") ; записываем последний поиск
 name.s = GetGadgetText(#String_1)
 WriteStringN(3,name.s)
CloseFile(3)
Break 
EndIf
ForEver

DataSection
 Im1:
 IncludeBinary "resaze_1.png"
 Im1End:
EndDataSection














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