Avatar billede aloc-dk Nybegynder
18. april 2006 - 19:20 Der er 22 kommentarer og
1 løsning

Automatisk liste embedding af WMV

Hej!
Jeg har et spørgsmål som jeg håber på at kunne få svar på her.
Jeg administrerer et site for min nærmeste omgangskreds hvor vi ligger billeder op fra vores fester og lignende. Vi kunne dog godt tænke os at udvide med muligheden for at uploade nogle små videoklip også.

Jeg bruger en løsning med et ASP script der automatisk omdanner foldere i en bestemt mappe til menupunkter der ved klik viser indholdet af den enkelte folder. Dvs. at jeg blot via en FTP forbindelse opretter en mappe og uploader billederne dertil, hvorefter den enkelte mappe bliver til et menupunkt på siden.

Scriptet for billederne - som jeg har fundet på nettet i sin tid -  ser således ud:

---------------------------------------------------
Set demofolder = filesys.GetFolder(filepath)
    Set filecoll = demofolder.Files
    filecount = 0
    For Each file in filecoll
        Ext = UCase(Right(File.Path, 3))
        If Ext = "JPG" OR Ext = "GIF" Then
        on error resume next
        data = SomeArray(filecount)
        on error goto 0
        hrefpath = qfolder & "/" & file.name
        imagepath = "<strong>" & data & "</strong><br><a href='" & hrefpath & "' title='free image gallery' border=0><img src='" & hrefpath & "' border='" & border_size & "' title=""" & data & """ style='border-color: " & border_color & ";'></a><br>"
        filist = filist & imagepath & vbcrlf
        filist = filist & "<BR>"
        filecount = filecount + 1
        data = ""
        end if
    Next
    set filesys = Nothing
    filist = filist & "
---------------------------------------------------

Nu er det så jeg godt kunne tænke mig at vide hvordan scriptet skal se ud hvis det skal gøres muligt at ligge videofiler ind i en mappe der også ligger billeder i, som så automatisk bliver embeddet i bunden af listen med billeder. Er der mere end en video skal der selvfølgelig bare komme flere embeddede afspillere. Eller evt. en dropdown menu der gør det muligt at vælge den/de andre videofiler der måtte ligge i mappen hvis du mener at flere afspillere blot vil sløve browseren/computeren.

Jeg har forsøgt blot at tilføje WMV til fillisten i billedegalleri scriptet, men så kommer der blot et klikbart rødt kryds der ikke giver mulighed for at streame/afspille filmen direkte. Hvilket jo er den smarteste løsning :)

Jeg håber jeg har gjort mig selv klar.
Spørg endelig hvis du mener der er noget jeg har udeladt..
Avatar billede thesurfer Nybegynder
18. april 2006 - 20:12 #1
Lige nu bruger du kun billeder.
Du skal udvide dit script, til at checke filtypen (f.eks. .jpg eller .wmv), og udskrive koden der matcher.

Ud fra filtypen, kan du lave en boolean (sand/falsk) værdi, der fortæller en IF-sætning, om den skal indsætte et billede, eller en video.

Eksempel:

video = "wmv,avi,mpg,mpeg"
billede = "jpg,gif,png,bmp"

filtype = file.name
filtype = right(filtype, instrrev(filtype, ".")) ' måske skal er tilføjes: -1

if instr(video, filtype) then
' det er en video
response.write "det er et billede.. video-kode her"
else
  if instr(billede, filtype) then
  ' det er et billede
  response.write "det er et billede.. billede-kode her"
  else
  ' det er hverken et billede eller en video.. dvs, en ukendt filtype
  response.write "ukendt fil"
  end if
end if

Koden er ikke testet, men det er sådan nogenlunde.. :-)

/theSurfer
Avatar billede aloc-dk Nybegynder
18. april 2006 - 21:33 #2
Hej thesurfer.
Tak for dit svar. Kan du ikke give mig en kodestump svarende til den jeg pastede i spørgsmålet? Altså en jeg bare lige kan paste ind :)
Avatar billede aloc-dk Nybegynder
18. april 2006 - 21:47 #3
Jeg skulle måske lige for en god ordens skyld paste resten af ASP koden



<%if session("login")<>"ok" then response.redirect("login.asp")%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath***.mdb")
Conn.Open DSN

sql="select * from *** order by id desc"

set rs = Conn.Execute(SQL)%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<link href="gang.css" rel="stylesheet" type="text/css">
<%
'Copy this file into a directory with folders containing images (jpg, gif).
'(optional) create a text file called captions.txt in each folder.
' with a caption on each line to go with each picture (in alphabetical order).
' set border size to a value greater than zero if you want a border around the picture.
' set border color if you have set a border size greater than 0.
' set the text-align: within the <style> tag to be left/center/right.
' set the font-family: within the <style> tag to be the font of your choice.
border_size = "7"
border_color = "silver"
%>
<html>
<head>
    <title>***</title>
<style type="text/css">
    body {
    background: cccccc;
    font-family: tahoma;
    text-align: center;
        }
</style>
</head>
<a name="top"></a>
<h2>The Gang Galleriet</h2>
<body>
<%
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

qfolder = request.querystring("f")
if qfolder = "" then
    folderspec = server.mappath(".")
    Set filesys = CreateObject("Scripting.FileSystemObject")
    Set demofolder = filesys.GetFolder(folderspec)
    Set folcoll = demofolder.SubFolders
    For Each subfol in folcoll
        folsize = left((subfol.size/1000000), 3)
        folist = folist & "<a href='?f=" & subfol.name & "'><strong title='view'>&#187;</strong> " & subfol.Name & " </a><small>&nbsp;(" & folsize & " MB)</small>" & vbcrlf
        folist = folist & "<BR>" 
    Next
    set filesys = nothing
    Response.Write folist

else

filepath = server.mappath(".") & "\" & qfolder
captionfile = filepath & "\captions.txt"
Set filesys = CreateObject("Scripting.FileSystemObject")
Dim SomeArray()
'caption part
    If filesys.FileExists(captionfile) then
        set file = filesys.GetFile(captionfile)
        Set TextStream = file.OpenAsTextStream(ForReading,TristateUseDefault)
        captioncount = 0
        Do While Not TextStream.AtEndOfStream
            Line = TextStream.readline
            ReDim Preserve SomeArray(captioncount)
            SomeArray(captioncount) = line
            'response.write captioncount & " " & somearray(captioncount) & "<br>"
            captioncount = captioncount + 1
            'Response.write Line
        Loop
        textStream.close
    end if

'folder part
    Set demofolder = filesys.GetFolder(filepath)
    Set filecoll = demofolder.Files
    filecount = 0
    For Each file in filecoll
        Ext = UCase(Right(File.Path, 3))
        If Ext = "JPG" OR Ext = "GIF" OR Ext = "WMV" Then
        on error resume next
        data = SomeArray(filecount)
        on error goto 0
        hrefpath = qfolder & "/" & file.name
        imagepath = "<strong>" & data & "</strong><br><a href='" & hrefpath & "' title='free image gallery' border=0><img src='" & hrefpath & "' border='" & border_size & "' title=""" & data & """ style='border-color: " & border_color & ";'></a><br>"
        filist = filist & imagepath & vbcrlf
        filist = filist & "<BR>"
        filecount = filecount + 1
        data = ""
        end if
    Next
    set filesys = Nothing
    filist = filist & "<br><small></small>"
%>

<h3><a href="." title="Tilbage">&#171;</a>
&nbsp;<%=qfolder%></h3>

<p><%=filist%></p>

<% end if %>
Avatar billede thesurfer Nybegynder
18. april 2006 - 23:57 #4
Lav en backup af din ASP fil, og erstat fra linien

For Each file in filecoll

og til og med linien

filist = filist & "<br><small></small>"

med denne kode:

        dim video, billede, ukendt_filtype, html
        video = LCase("wmv,avi,mpg,mpeg")
        billede = LCase("jpg,gif,png,bmp")
        For Each file in filecoll
                Ext = UCase(Right(File.Path, 3))
        If Ext = "JPG" OR Ext = "GIF" OR Ext = "WMV" Then
        on error resume next
        data = SomeArray(filecount)
        on error goto 0
                ukendt_filtype = true

                if instr(video, LCase(Ext)) then
                ' video
                                html = "<b>yep.. det er en video</b><br>"
                                ukendt_filtype = false
                else
                    if instr(billede, LCase(Ext)) then

                                hrefpath = qfolder & "/" & file.name
                                html = "<strong>" & data & "</strong><br><a href='" & hrefpath & "' title='free image gallery' border=0><img src='" & hrefpath & "' border='" & border_size & "' title=""" & data & """ style='border-color: " & border_color & ";'></a><br>"
                                ukendt_filtype = false

                    else
                    ' det er hverken et billede eller en video.. dvs, en ukendt filtype
                                response.write "<b>ukendt fil</b><br><br>"
                                ukendt_filtype = true
                    end if
                end if

                if ukendt_filtype = false then
                            filist = filist & html & vbcrlf
                            filist = filist & "<BR>"
                            filecount = filecount + 1
                end if

        data = ""
        end if
    Next
    set filesys = Nothing
    filist = filist & "<br><small></small>"

/theSurfer
Avatar billede thesurfer Nybegynder
18. april 2006 - 23:58 #5
Hvis koden virker, og der er en videofil, skulle den gerne skrive "yep.. det er en video" med fede bogstaver..

Finder lige HTML koden til indsættelse af video.

/theSurfer
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:01 #6
Muligvis sådan her:


Lav en backup af din ASP fil, og erstat fra linien

For Each file in filecoll

og til

filist = filist & "<br><small></small>"

med denne kode:

        dim video, billede, ukendt_filtype, html
        video = LCase("wmv,avi,mpg,mpeg")
        billede = LCase("jpg,gif,png,bmp")
        For Each file in filecoll
                Ext = UCase(Right(File.Path, 3))
        If Ext = "JPG" OR Ext = "GIF" OR Ext = "WMV" Then
                hrefpath = qfolder & "/" & file.name
        on error resume next
        data = SomeArray(filecount)
        on error goto 0
                ukendt_filtype = true

                if instr(video, LCase(Ext)) then
                ' video
                %>
      <OBJECT id='mediaPlayer' 
      classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'
      codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'
      standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'>
      <param name='fileName' value="<%=hrefpath%>">
      <param name='animationatStart' value='false'>
      <param name='transparentatStart' value='true'>
      <param name='autoStart' value="true">
      <param name='showControls' value="true">
      <param name='loop' value="true">
      <EMBED type='application/x-mplayer2'
        pluginspage='http://microsoft.com/windows/mediaplayer/en/download/'
        id='mediaPlayer' name='mediaPlayer' displaysize='4' autosize='-1'
        bgcolor='darkblue' showcontrols="true" showtracker='-1'
        showdisplay='0' showstatusbar='-1' videoborder3d='-1'
        src="<%=hrefpath%>" autostart="false" designtimesp='5311' loop="true">
      </EMBED>
      </OBJECT>
<!--                                 html = "<b>yep.. det er en video</b><br>" -->
                <%
                                ukendt_filtype = false
                else
                    if instr(billede, LCase(Ext)) then

                               
                                html = "<strong>" & data & "</strong><br><a href='" & hrefpath & "' title='free image gallery' border=0><img src='" & hrefpath & "' border='" & border_size & "' title=""" & data & """ style='border-color: " & border_color & ";'></a><br>"
                                ukendt_filtype = false

                    else
                    ' det er hverken et billede eller en video.. dvs, en ukendt filtype
                                response.write "<b>ukendt fil</b><br><br>"
                                ukendt_filtype = true
                    end if
                end if

                if ukendt_filtype = false then
                            filist = filist & html & vbcrlf
                            filist = filist & "<BR>"
                            filecount = filecount + 1
                end if

        data = ""
        end if
    Next
    set filesys = Nothing
    filist = filist & "<br><small></small>"

/theSurfer
Avatar billede aloc-dk Nybegynder
19. april 2006 - 00:06 #7
Perfekt! Det virker! Nu mangler jeg bare at videoen ikke loader/starter automatisk da der ellers bliver ret meget load på en mappe med 5mb billeder og 10mb video :P
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:10 #8
"true" skal bare sættes til "false" i disse to linier:

      <param name='autoStart' value="false">

        src="<%=hrefpath%>" autostart="false" designtimesp='5311' loop="true">

/theSurfer
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:12 #9
Doh! :-)

Havde rettet dem.. men fik ikke sendt den nye kode..

Men der skal bare stå false ved de 2 linier..

/theSurfer
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:14 #10
Koden til indsættelse af video, er genereret via denne side:

http://cit.ucsf.edu/embedmedia/step1.php

/theSurfer
Avatar billede aloc-dk Nybegynder
19. april 2006 - 00:25 #11
Hehe det er ok, jeg fandt ud af det. Nu mangler jeg bare 2 små ting før du får point ;)
Hvor er det lige jeg angiver størrelsen på videoen? Synes ikke rigtigt jeg kan se noget punkt hvor det er muligt? Og så den anden ting.. Når jeg har 2 videoer i samme mappe bliver de vist lige ved siden af hinanden. Hvor skal jeg sætte et break eller paragraph ind for at de bliver smidt på en ny linie for hver videofil?
Avatar billede aloc-dk Nybegynder
19. april 2006 - 00:31 #12
Nevermind med størrelsen på videoen, fandt jeg ud af via det link du postede. Men mangler stadig lige det break/paragraph.
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:34 #13
Erstat denne test-linie

<!--                                html = "<b>yep.. det er en video</b><br>" -->

med f.eks.

<br>

/theSurfer
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:40 #14
Hmm.. det jeg har lavet der, passer ikke helt..

Det er meningen at video-delen skal ind i variablen "html", så den kan blive udskrevet som billede-felen..

Jeg retter det lige..

/theSurfer
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:44 #15
Denne del skal overskrive tidligere del:

                if instr(video, LCase(Ext)) then
                ' video
                                html = ""
                                html = html & "      <OBJECT id='mediaPlayer'  "
                                html = html & "      classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95' "
                                html = html & "      codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'"
                                html = html & "      standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'>"
                                html = html & "      <param name='fileName' value='" & hrefpath & "'>"
                                html = html & "      <param name='animationatStart' value='true'>"
                                html = html & "      <param name='transparentatStart' value='true'>"
                                html = html & "      <param name='autoStart' value='false'>"
                                html = html & "      <param name='showControls' value='true'>"
                                html = html & "      <param name='loop' value='true'>"
                                html = html & "      <EMBED type='application/x-mplayer2'"
                                html = html & "        pluginspage='http://microsoft.com/windows/mediaplayer/en/download/'"
                                html = html & "        id='mediaPlayer' name='mediaPlayer' displaysize='4' autosize='-1' "
                                html = html & "        bgcolor='darkblue' showcontrols='true' showtracker='-1' "
                                html = html & "        showdisplay='0' showstatusbar='-1' videoborder3d='-1' "
                                html = html & "        src='" & hrefpath & "' autostart='false' designtimesp='5311' loop='true'>"
                                html = html & "      </EMBED>"
                                html = html & "      </OBJECT>"
                                ukendt_filtype = false
                else

Nu er variablen "html" dannet på samme måde..

/theSurfer
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:47 #16
Husk lidt width og height :-)

/theSurfer
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:47 #17
..og læg mærke til, at du nu ikke skal indsætte "<br>" mere, som jeg skrev i 19/04-2006 00:34:43, da det er en rettelse til tidligere koder..

/theSurfer
Avatar billede aloc-dk Nybegynder
19. april 2006 - 00:50 #18
Nu bliver jeg lidt besværlig.. men.. vil faktisk godt ha' videoen ovenover billederne som det var før. Kunne jeg faktisk bedre li'. Selvom jeg godt ved jeg skrev noget andet til at starte med :)
Kan man forresten lave en baggrund på videofilerne? Så der f.eks. er et billede jeg selv laver og henviser til?
Avatar billede aloc-dk Nybegynder
19. april 2006 - 00:53 #19
..eller er det muligt at få et thumbnail fra selve videofilen uden at preloade den? Sikkert ikke.. men man kan jo altid spørge :)
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:56 #20
Ja, du bliver besværlig nu.. :-)

- "videoen ovenover billederne som det var før"? Hvad mener du med det?
Scriptet tager jo bare filerne fra en ende af.. Den ved ikke helt hvad det er for nogen filer..

Hvis du vil sortere filerne, skal du selv gøre det.. det kan scriptet ikke.. Man kunne starte med at loade aller filerne ind i en array, og derefter bruge en sorteringsalgoritme, til at sortere dem efter "video først" (kommer til at blive udskrevet først = øverst)..

- Hvad mener du med at "lave en baggrund på videofilerne"?

- Thumbnail? Nej, ikke med scriptet. Så skal du selv tage et screenshot, og gemme det til at billede. Du skal derefter indsætte screenshot-billedet i stedet for video-filen. Men så kan du ikke længere bruge det script. Eller også skal det rettes til, så det kan genkende de screenshot-filer, og derefter loade de rigtige video-filer, når man klikker på billedet.

/theSurfer
Avatar billede thesurfer Nybegynder
19. april 2006 - 00:58 #21
Det er ved at være sent, og jeg skal tidligt op.. så jeg tror at jeg vil smutte i seng..

Takker for points, og godnat.. :-)

/theSurfer
Avatar billede aloc-dk Nybegynder
19. april 2006 - 01:00 #22
Hmm, inden du lavede rettelsen 19/04-2006 00:44:47 var video filerne bare øverst i mappen, altså over billederne. Nu er de i bunden. Men nevermind. Hvis det er mega besværligt så bare glem det :P

Mht. baggrund mener jeg sådanset bare noget der viser videofeltet inden der bliver afspillet video. Når der ikke bliver afspillet video er der jo kun selve værktøjsbjælken med play, pause, stop osv. Ser ikke så fikst ud. Hvis man evt. bare kunne angive en farve der udfyldte feltet indtil videoen blev aktiv ville det også være fint.
Avatar billede aloc-dk Nybegynder
19. april 2006 - 01:01 #23
Hehe.. jo men det er da mig der takker! Du har været til stor hjælp. Sov godt! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester