Avatar billede nicklassigval Nybegynder
18. november 2012 - 02:20 Der er 11 kommentarer og
1 løsning

Script til tids indstillet link?

Script til tids indstillet link?

Jeg har et radio show som jeg sender på et par forskellige radio stationer, og ville i den forbinde gerne ha lavet en script, hvor det vises at showet nu er LIVE og man kan klikke på radioens Link.

Det skulle se sådan her ud:

Trance to the People is LIVE!

click here to listen! (Skal så linke til den pågælende Radio)

De fire link der skal bruges samt tidspunkterne er (Self. DK tid):

Mandag kl.22-24 - www.syke.fm
Onsdag kl.21-23 - www.sr.dk
Lørdag kl.21-23 - www.globegigradio.com/
Lørdag Kl.01-03 - www.safariradio.org

Håber der nogen der kan hjælpe mig..!! :)

Venlig Hilsen

Nicklas Sigvaldason
Avatar billede nicklassigval Nybegynder
18. november 2012 - 02:26 #1
Man kan se den aktuele hjemmeside på: http://trancetothepeople.com/
Avatar billede olebole Juniormester
18. november 2012 - 18:37 #2
<ole>

Umiddelbart lyder det som en serveropgave, men det er svært at sige helt uden informationer

/mvh
</bole>
Avatar billede Slettet bruger
21. november 2012 - 18:16 #3
Der er vel ingen "risiko" for at folk snyder med datoen, for at få forkerte links..
- Så det kan sagtens laves direkte i browseren (uden server-kode)

Herunder en erstatning af din /undersider/stations.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Radio</title><style>
body    {background-color:#353535; font:18px Arial; color:#FFF}
th        {text-align:left; border-bottom:1px solid red}
td        {padding:8px 30px 0 0}
</style><script>
    var tider = new Array(
        {url    :    "http://www.sr.dk"
        ,navn    :    "Specific Radio"
        ,land    :    "Denmark"
        ,bmrk    :    "Live"        // eller anden kommentar..?
        ,dag    :    3            // onsdag (søndag=0, mandag=1, tirsdag=2, onsdag=3, torsdag=4, fredag=5, lørdag=6)
        ,fra    :    "21:00"     // danske starttidspunkter!
        ,tid    :    120            // spilletid i minutter
        }
        ,
        {url    :    "http://www.globegigradio.com"
        ,navn    :    "Globegig Radio"
        ,land    :    "United Kingdom"
        ,bmrk    :    "Pre-recorded"
        ,dag    :    6
        ,fra    :    "20:00"
        ,tid    :    120
        }
        ,
        {url    :    "http://www.safariradio.gr"
        ,navn    :    "Safari Radio"
        ,land    :    "Greece"
        ,bmrk    :    "Pre-recorded"
        ,dag    :    0
        ,fra    :    "02:00"
        ,tid    :    120
        }
        ,
        {url    :    "http://www.syke.fm"
        ,navn    :    "SYKE.FM"
        ,land    :    "Finland"
        ,bmrk    :    "Pre-recorded"
        ,dag    :    1
        ,fra    :    "23:00"
        ,tid    :    120
        }

        ,
        {url    :    "http://dagfordag.dk"
        ,navn    :    "Dagfordag FM"
        ,land    :    "Dynamark"
        ,bmrk    :    "Hot hot"
        ,dag    :    3
        ,fra    :    "18:15"
        ,tid    :    195
        }

    )

function spiller_nu()
    {
    var ugeDage = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
    var fra,til,H,T,h,t,ugedagsOffset
    var nu    = new Date()    // i brugerens (browsers) tidszone
    var TZ = nu.getTimezoneOffset()
    var utc    = new Date(nu.getUTCFullYear(), nu.getUTCMonth(), nu.getUTCDate(),  nu.getUTCHours(), nu.getUTCMinutes(), nu.getUTCSeconds())
    var spiller = ""        // Vi får se..
    var program = '<table cellspacing="0" border="0"><tr>'
                        +'<th colspan="2" style="text-align:center">When (your timezone)</th>'
                        +'<th>Station</th>'
                        +'<th>Country</th>'
                        +'<th>Comment</th>'
                    +'</tr>'
    for (var i=0; i<tider.length; i++)
        {
        fra = new Date( nu.getUTCFullYear(), nu.getUTCMonth(), nu.getUTCDate(), tider[i].fra.split(":")[0], tider[i].fra.split(":")[1], 0, 0)
        fra = new Date( fra.valueOf() - 60*60*1000) // dansk => UTC
        til = new Date( fra.valueOf() + tider[i].tid*60000) // 1 minut = 60.000 milisekunder
        spillerNU = false
        if (nu.getUTCDay() == tider[i].dag)
            if (utc.valueOf() >= fra.valueOf() && utc.valueOf() <= til.valueOf())
                spillerNU = true

        ugedagsOffset = tider[i].dag - fra.getUTCDay()
        fra = new Date( fra.valueOf() + ugedagsOffset * 24 * 60 * 60 * 1000 - TZ * 60 * 1000)
        til = new Date( til.valueOf() + ugedagsOffset * 24 * 60 * 60 * 1000 - TZ * 60 * 1000)
        H = fra.getHours();        if (H < 10) H = "0"+H;        T = fra.getMinutes();    if (T < 10) T = "0"+T
        h = til.getHours();        if (h < 10) h = "0"+h;        t = til.getMinutes();    if (t < 10) t = "0"+t

        program +=
            '<tr>'
                +'<td>'+ugeDage[tider[i].dag]+'</td>'
                +'<td>'+H+':'+T+' - '+h+':'+t+'</td>'
                +'<td><a href="'+tider[i].url+'" target="_blank" style="color:#77B6EF">'+tider[i].navn+'</a></td>'
                +'<td>'+tider[i].land+'</td>'
                +'<td style="padding-right:0">'+tider[i].bmrk+'</td>'
            +'</tr>'

        if (spillerNU)
            spiller +=
                '<br><b style="color:gold">'
                    +'Playing NOW '
                    +'(until '+h+':'+t+') on '
                    +'<a href="'+tider[i].url
                        +'" target="_blank" style="color:#77B6EF">'+tider[i].navn
                    +'</a> '
                    +tider[i].bmrk
                +'</b><br>'
        }

    program += "</table>"

    return program + spiller
    }
</script></head><body><center>
<script>document.write(spiller_nu())</script>
</center></body></html>
Det ser lidt rodet ud her, men copy-paste det hele over i en tom HTML fil
- TAB'sene er, godt nok, erstattet af mellemrum, men det bliver mere læseligt : )

PS: Der er ingen AM/PM pjat - det er på tide at angloerne lærer klokkken !
Avatar billede olebole Juniormester
21. november 2012 - 21:03 #4
#3: Ingen taler om at snyde - og har man masser af tid, kan man sagtens sidde og håndkode det. Hvis man ikke fik nok af at skrive håndkode i 90'erne, er det selvfølgelig en mulighed, men jeg ville nu nok vælge en databaseløsning  =)
Avatar billede nicklassigval Nybegynder
21. november 2012 - 21:22 #5
T4NK32:

Tusind tak, det var lige den kode jeg manglede, du en gutter mand.. :D
Avatar billede Slettet bruger
22. november 2012 - 15:33 #6
Selv tak, men du høstede pointene selv ?!?
- Pyt med det, denne gang. Men til en anden god gang:

Bed den, hvis svar du kan li, om at lægge et formelt Svar (til forskel fra kommentarerne)
- når det så dukker op, hakker du det af, når der skal gives point.
Avatar billede Slettet bruger
22. november 2012 - 15:42 #7
#4 tja.. Hvis det var mig, havde jeg nok også lagt det på serveren.
- men databaser ER jo ret komplekse, hvis ikke den slags har ens interesse - musikere, du ved ; )

Og det meste af koden (detektere og omregne til lokal tidszone) skal jo laves uanset..
Nu ligger "databasen" bare i toppen af HTML-dokumentet i stedet for - ikke den store forskel.
Avatar billede olebole Juniormester
22. november 2012 - 16:09 #8
"musikere, du ved" Joohhhh ... 20 år som lydtekniker og 10 års ægteskab med en professionel musiker fik da lært mig en del. Men jeg har faktisk mødt flere så begavede, at de kunne tælle til fire  *D

Der er mange forskelle - herunder at man skal have en FTP-klient på sig, når man midt i ferien skal ændre noget. Og netop tidsberegningerne afhænger af, at brugerens (autonome) ur går rigtigt, mens vi har styr på serverens.

Derudover behøver begrebet 'database' jo ikke nødvendigvis at være kompliceret. Den kunne jo i simpleste version bestå af en XML-fil, en kommasepareret fil eller en fil med et PHP-array - med et simpelt vedligeholdelses script  =)
Avatar billede Slettet bruger
22. november 2012 - 16:23 #9
Er der nogen klienter tilbage som ikke snakker med en time-server ?
De fleste hosts har en browserbaseret fil-editor..
- og det ER jo faktisk et "kommasepareret XML array"  : )

Jeg fastholder, at det var den mest hensigtsmæssige løsning.
- specielt når det sjældent rettes - læg mærke til at der ingen datoer er - kun ugedage ad infinitum
Avatar billede olebole Juniormester
22. november 2012 - 16:39 #10
Nej, det er der næppe, men der er mange brugere tilbage, som stadig piller i alle indstillinger, de ikke kender - og mens de i øvrigt sidder på hovedet  *o)

Nej, det har intet med et "kommasepareret XML array" at gøre. Jeg kan i øvrigt ikke rigtig finde begrundelsen for array'et(?)

Jeg har ikke indsigt nok til at afgøre, hvad der er mest hensigtsmæssigt i brugerens situation. Jeg kan kun udtale mig om, hvad jeg selv ville gøre. Resten vil jeg overlade til clairvoyante  =)
Avatar billede Slettet bruger
22. november 2012 - 16:52 #11
Arayet fordi det, på den måde, er let for Nick at tilføje/rette/slette og navnlig styre rækkefølgen.
- Og nej, jeg ved godt, at det ikke er XML men JSON, men basalt set er det jo ét fedt.
Avatar billede olebole Juniormester
22. november 2012 - 21:40 #12
Nej, for det første er det et ganske alm. JavaScript array med ganske alm. JavaScript objekter som elementer. Det har ikke som sådan noget med JSON at gøre. Derudover er og bruges JavaScript arrays/objects helt anderledes end XML  =)
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

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