dk.dr.radio.data.afproevning.Afproevning.java Source code

Java tutorial

Introduction

Here is the source code for dk.dr.radio.data.afproevning.Afproevning.java

Source

    /**
     DR Radio 2 is developed by Jacob Nordfalk, Hanafi Mughrabi and Frederik Aagaard.
     Some parts of the code are loosely based on Sveriges Radio Play for Android.
    
     DR Radio 2 for Android is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License version 2 as published by
     the Free Software Foundation.
    
     DR Radio 2 for Android is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     See the GNU General Public License for more details.
    
     You should have received a copy of the GNU General Public License along with
     DR Radio 2 for Android.  If not, see <http://www.gnu.org/licenses/>.
    
     */

    package dk.dr.radio.data.afproevning;

    import org.json.JSONArray;
    import org.json.JSONObject;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;

    import dk.dr.radio.data.DRBackendTidsformater;
    import dk.dr.radio.data.DRData;
    import dk.dr.radio.data.DRJson;
    import dk.dr.radio.data.Grunddata;
    import dk.dr.radio.data.Kanal;
    import dk.dr.radio.data.Programserie;
    import dk.dr.radio.data.Udsendelse;
    import dk.dr.radio.diverse.App;
    import dk.dr.radio.diverse.Log;
    import dk.dr.radio.net.Diverse;

    // For at kre denne klasse, skal noget a la det flgende ind i VM Options i vrktjet
    // -classpath $PROJECT_DIR$/../../dr-netradio/trunk/JSONParsning/lib/json-1.0.jar:$PROJECT_DIR$/out/production/DRRadiov3:$APPLICATION_HOME_DIR$/lib/idea_rt.jar:$PROJECT_DIR$/../../android-sdk-linux_86/platforms/android-18/android.jar:$PROJECT_DIR$/libs/android-support-v7-appcompat.jar:$PROJECT_DIR$/libs/android-support-v4.jar:$PROJECT_DIR$/libs/bugsense-3.6.jar:$PROJECT_DIR$/libs/volley.jar

    /**
     * Afprvning af diverse ting
     */
    @SuppressWarnings("HardCodedStringLiteral")
    public class Afproevning {

        public static void main(String[] a) throws Exception {
            FilCache.init(new File("/tmp/drradio-cache"));
            DRBackendTidsformater.servertidsformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); // +01:00 springes over da kolon i +01:00 er ikke-standard Java
            System.out.println("App.instans=" + App.instans);
            tjekUdelukFraHLS();
            tjekHentAlleUdsendelser();
            tjek_hent_a_til__og_radiodrama();
        }

  static String hentStreng(String url) throws IOException {
    //String data = Diverse.lsStreng(new FileInputStream(FilCache.hentFil(url, false, true, 1000 * 60 * 60 * 24 * 7)));
    Log.d(url);
    url = url.replaceAll("", "%C3%98");
    url = url.replaceAll("", "%C3%85");
    String data = Diverse.lsStreng(new FileInputStream(FilCache.hentFil(url, false, true, 12 * 1000 * 60 * 60)));
    Log.d(data);
    return data;

  }

        static void hentSupplerendeData(Grunddata ths) {
            for (Kanal k : ths.kanaler)
                try {
                    String url = k.getStreamsUrl();
                    String data = hentStreng(url);
                    JSONObject o = new JSONObject(data);
                    k.setStreams(o);
                    //Log.d(k.kode + " k.lydUrl=" + k.streams);
                } catch (Exception e) {
                    Log.e(e);
                }
            Log.d("DRData.instans.grunddata.kanalFraSlug=" + DRData.instans.grunddata.kanalFraSlug);
        }

  public static void tjekUdelukFraHLS() throws Exception {
    DRData i = DRData.instans = new DRData();
    i.grunddata = new Grunddata();
    i.grunddata.parseFllesGrunddata(Diverse.lsStreng(new FileInputStream("../DRRadiov3/res/raw/grunddata.json")));
    i.grunddata.android_json.put("udeluk_HLS", "C6603 .*/18, IdeaPadA10 A10/17, LIFETAB_E7312 LIFETAB_E7310/17, LIFETAB_E10310/.*");
    i.grunddata.udelukHLS = false;
    i.grunddata.tjekUdelukFraHLS("C6603 C6603/18");
    if (i.grunddata.udelukHLS != true) throw new Exception();
    i.grunddata.tjekUdelukFraHLS("C6603 C6603/17");
    if (i.grunddata.udelukHLS == true) throw new Exception();
    i.grunddata.tjekUdelukFraHLS("IdeaPadA10 A10/17");
    if (i.grunddata.udelukHLS != true) throw new Exception();
    i.grunddata.tjekUdelukFraHLS("IdeaPadA10 A10/23");
    if (i.grunddata.udelukHLS == true) throw new Exception();
    i.grunddata.tjekUdelukFraHLS("IdeaPadA10 A11/17");
    if (i.grunddata.udelukHLS == true) throw new Exception();
    i.grunddata.tjekUdelukFraHLS("LIFETAB_E10310/16");
    if (i.grunddata.udelukHLS != true) throw new Exception();
  }

  public static void tjekHentAlleUdsendelser() throws Exception {
    DRData i = DRData.instans = new DRData();
    i.grunddata = new Grunddata();
    i.grunddata.parseFllesGrunddata(Diverse.lsStreng(new FileInputStream("../DRRadiov3/res/raw/grunddata.json")));

    hentSupplerendeData(i.grunddata);
    //System.exit(0);

    for (Kanal kanal : i.grunddata.kanaler) {
      Log.d("\n\n===========================================\n\nkanal = " + kanal);
      if (Kanal.P4kode.equals(kanal.kode)) continue;
      if ("DRN".equals(kanal.kode)) continue; // ikke DR Nyheder

      String datoStr = DRJson.apiDatoFormat.format(new Date());
      kanal.setUdsendelserForDag(DRJson.parseUdsendelserForKanal(new JSONArray(
          hentStreng(DRData.getKanalUdsendelserUrlFraKode(kanal.kode, datoStr))), kanal, new Date(), DRData.instans), "0");
      for (Udsendelse u : kanal.udsendelser) {
        Log.d("\nudsendelse = " + u);
        JSONObject obj = new JSONObject(hentStreng(u.getStreamsUrl()));
        //Log.d(obj.toString(2));
        boolean MANGLER_SeriesSlug = !obj.has(DRJson.SeriesSlug.name());

        u.setStreams(obj);
        if (!u.harStreams()) Log.d("Ingen lydstreams");

        try {
          u.playliste = DRJson.parsePlayliste(new JSONArray(hentStreng(DRData.getPlaylisteUrl(u.slug))));
          Log.d("u.playliste= " + u.playliste);
        } catch (IOException e) {
          e.printStackTrace();
        }

        boolean gavNull = false;
        Programserie ps = i.programserieFraSlug.get(u.programserieSlug);
        if (ps == null) {
          String str = hentStreng(DRData.getProgramserieUrl(u.programserieSlug));
          if ("null".equals(str)) gavNull = true;
          else {
            JSONObject data = new JSONObject(str);
            ps = DRJson.parsProgramserie(data, null);
            JSONArray prg = data.getJSONArray(DRJson.Programs.name());
            ArrayList<Udsendelse> udsendelser = DRJson.parseUdsendelserForProgramserie(prg, kanal, DRData.instans);
            ps.tilfjUdsendelser(0, udsendelser);
            i.programserieFraSlug.put(u.programserieSlug, ps);
          }
        }
        if (MANGLER_SeriesSlug)
          Log.d("MANGLER_SeriesSlug " + u + " gavNull=" + gavNull + "  fra dagsprogram =" + u.programserieSlug);
      }
    }
  }

  public static void tjek_hent_a_til__og_radiodrama() throws Exception {
    DRData i = DRData.instans = new DRData();
    FilCache.init(new File("/tmp/drradio-cache"));
    DRBackendTidsformater.servertidsformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); // +01:00 springes over da kolon i +01:00 er ikke-standard Java
    i.grunddata = new Grunddata();
    i.grunddata.parseFllesGrunddata(Diverse.lsStreng(new FileInputStream("../DRRadiov3/res/raw/grunddata.json")));
    hentSupplerendeData(i.grunddata);


    // A--liste
    {
      JSONArray jsonArray = new JSONArray(hentStreng(DRData.getAtilUrl()));


      // http://www.dr.dk/tjenester/mu-apps/series?type=radio&includePrograms=true&urn=urn:dr:mu:bundle:50d2ab93860d9a09809ca4f2
      ArrayList<Programserie> res = new ArrayList<Programserie>();
      for (int n = 0; n < jsonArray.length(); n++) {
        JSONObject programserieJson = jsonArray.getJSONObject(n);
        String programserieSlug = programserieJson.getString(DRJson.Slug.name());
        Log.d("\n=========================================== programserieSlug = " + programserieSlug);

        Programserie programserie = DRData.instans.programserieFraSlug.get(programserieSlug);
        if (programserie == null) {
          programserie = new Programserie();
          DRData.instans.programserieFraSlug.put(programserieSlug, programserie);
        }
        res.add(DRJson.parsProgramserie(programserieJson, programserie));
/*
        int offset = 0;
        // Virker ikke, giver ALLE udsendelser i RadioDrama:
        // final String url = "http://www.dr.dk/tjenester/mu-apps/series/" + programserieSlug + "?type=radio&includePrograms=true&offset=" + offset;
        final String url = "http://www.dr.dk/tjenester/mu-apps/series/" + programserieSlug + "?type=radio&includePrograms=true&offset=" + offset;
        JSONObject data = new JSONObject(hentStreng(url));
        if (offset == 0) {
          programserie = DRJson.parsProgramserie(data, programserie);
          DRData.instans.programserieFraSlug.put(programserieSlug, programserie);
        }
        programserie.tilfjUdsendelser(offset, DRJson.parseUdsendelserForProgramserie(data.getJSONArray(DRJson.Programs.name()), null, DRData.instans));
        Log.d(programserie.slug + " = " + programserie.getUdsendelser());
*/
      }
      Log.d("res=" + res);

    }

//    System.exit(0);
/* JSON-format er ndret
    // RadioDrama
    // Virker ikke:
    //JSONArray jsonArray = new JSONArray(hentStreng("http://www.dr.dk/tjenester/mu-apps/radio-drama?type=radio&includePrograms=true"));
    JSONArray jsonArray = new JSONArray(hentStreng(DRData.getBogOgDramaUrl()));
    ArrayList<Programserie> res = new ArrayList<Programserie>();
    for (int n = 0; n < jsonArray.length(); n++) {
      JSONObject programserieJson = jsonArray.getJSONObject(n);
      String programserieSlug = programserieJson.getString(DRJson.Slug.name());
      Log.d("\n=========================================== programserieSlug = " + programserieSlug);

      Programserie programserie = DRData.instans.programserieFraSlug.get(programserieSlug);
      if (programserie == null) {
        programserie = new Programserie();
        DRData.instans.programserieFraSlug.put(programserieSlug, programserie);
      }
      res.add(DRJson.parsProgramserie(programserieJson, programserie));

      int offset = 0;
      // Virker ikke, giver ALLE udsendelser i RadioDrama:
      // final String url = "http://www.dr.dk/tjenester/mu-apps/series/" + programserieSlug + "?type=radio&includePrograms=true&offset=" + offset;
      final String url = "http://www.dr.dk/tjenester/mu-apps/series/" + programserieSlug + "?type=radio&includePrograms=true&offset=" + offset;
      JSONObject data = new JSONObject(hentStreng(url));
      if (offset == 0) {
        programserie = DRJson.parsProgramserie(data, programserie);
        DRData.instans.programserieFraSlug.put(programserieSlug, programserie);
      }
      programserie.tilfjUdsendelser(offset, DRJson.parseUdsendelserForProgramserie(data.getJSONArray(DRJson.Programs.name()), null, DRData.instans));
      Log.d(programserie.slug + " = " + programserie.getUdsendelser());
    }
    Log.d("res=" + res);
*/

    //  System.exit(0);
  }

    }