Exemplo n.º 1
0
 public static Trailer readGZipTrailer(ByteBuffer buf) throws DataFormatException {
   if (buf.remaining() < TRAILER_SIZE) {
     throw new DataFormatException("No GZIP trailer");
   }
   Trailer t = new Trailer();
   t.setChecksum(readUInt32LE(buf));
   t.setLength(readUInt32LE(buf));
   return t;
 }
 @Override
 public void clear() {
   mHeader.clear();
   mBody.clear();
   mCRT.clear();
   mTrailer.clear();
 }
 private Intent createShareMovieIntent() {
   Intent shareIntent = new Intent(Intent.ACTION_SEND);
   shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
   shareIntent.setType("text/plain");
   shareIntent.putExtra(
       Intent.EXTRA_TEXT,
       mMovie.getTitle() + " " + "http://www.youtube.com/watch?v=" + mTrailer.getKey());
   return shareIntent;
 }
 @Override
 public String toPDFString() {
   StringBuilder sb = new StringBuilder();
   sb.append(mHeader.toPDFString());
   sb.append(mBody.toPDFString());
   mCRT.setObjectNumberStart(mBody.getObjectNumberStart());
   int x = 0;
   while (x < mBody.getObjectsCount()) {
     IndirectObject iobj = mBody.getObjectByNumberID(++x);
     if (iobj != null) {
       mCRT.addObjectXRefInfo(iobj.getByteOffset(), iobj.getGeneration(), iobj.getInUse());
     }
   }
   mTrailer.setObjectsCount(mBody.getObjectsCount());
   mTrailer.setCrossReferenceTableByteOffset(sb.length());
   mTrailer.setId(Indentifiers.generateId());
   return sb.toString() + mCRT.toPDFString() + mTrailer.toPDFString();
 }
    @Override
    protected void onPostExecute(Trailer[] Trailers) {

      if (Trailers != null) {

        TrailersData.clear();
        TrailersAdapter.clear();
        if (Trailers.length > 0) {
          mShare = Trailers[0].getLink();
          if (mShareActionProvider != null) {
            //                        mShareActionProvider.setShareHistoryFileName(null);
            mShareActionProvider.setShareIntent(createShareTrailerIntent());
          }
        }

        for (Trailer TrailerTemp : Trailers) {

          TrailersData.add(TrailerTemp);
          TrailersAdapter.add(TrailerTemp.getName());
        }
      }
    }
Exemplo n.º 6
0
  private static ArrayList<Movie> getMoviesDataFromJson(String moviesJsonStr, String appid)
      throws JSONException {

    final String MDB_RESULTS = "results";
    final String MDB_ID = "id";
    final String MDB_TITLE = "title";
    final String MDB_POPULARITY = "popularity";
    final String MDB_VOTE_COUNT = "vote_count";
    final String MDB_VOTE_AVG = "vote_average";
    final String MDB_POSTER = "poster_path";
    final String MDB_OVERVIEW = "overview";
    final String MDB_DATE = "release_date";

    JSONObject movieJson = new JSONObject(moviesJsonStr);
    JSONArray moviesArray = movieJson.getJSONArray(MDB_RESULTS);

    ArrayList<Movie> results = new ArrayList<Movie>();

    for (int i = 0; i < moviesArray.length(); i++) {
      Movie movie = new Movie();

      JSONObject movieObj = moviesArray.getJSONObject(i);

      movie.id = movieObj.getInt(MDB_ID);
      movie.title = movieObj.getString(MDB_TITLE);
      movie.popularity = movieObj.getDouble(MDB_POPULARITY);
      movie.overview = movieObj.getString(MDB_OVERVIEW);
      movie.poster = movieObj.getString(MDB_POSTER);
      movie.release_date = movieObj.getString(MDB_DATE);
      movie.vote_average = movieObj.getDouble(MDB_VOTE_AVG);
      movie.vote_count = movieObj.getInt(MDB_VOTE_COUNT);
      movie.trailers = Trailer.getTrailers(movie.id, appid);
      movie.reviews = Review.getReviews(movie.id, appid);

      results.add(movie);
    }

    return results;
  }
Exemplo n.º 7
0
  public String trailerByTitle(String query) {
    //	return apiC.getTrailer(qc.cleanTrailerString(query));
    String[] array = qc.cleanTrailerString(query);
    String str = null;

    // "http://simpleapi.traileraddict.com/" + query + "/trailer"
    for (int i = 0; i < array.length; i++) {
      System.out.println("TESTING:" + array[i]);
      //	Trailer trailer=apiC.getTrailer(array[i]);
      Trailer trailer =
          apiC.getTrailer("http://simpleapi.traileraddict.com/" + array[i] + "/trailer");
      if (trailer.getTrailerID() != null) {
        str = gson.toJson(trailer);
        System.out.println("RETURN:" + str);
        return str;
      }
    }

    for (int i = 0; i < array.length; i++) {
      System.out.println("TESTING:" + array[i]);
      //	Trailer trailer=apiC.getTrailer(array[i]);
      Trailer trailer =
          apiC.getTrailer("http://simpleapi.traileraddict.com/" + array[i] + "/trailer-a");
      if (trailer.getTrailerID() != null) {
        str = gson.toJson(trailer);
        System.out.println("RETURN:" + str);
        return str;
      }
    }
    for (int i = 0; i < array.length; i++) {
      System.out.println("TESTING:" + array[i]);
      //	Trailer trailer=apiC.getTrailer(array[i]);
      Trailer trailer =
          apiC.getTrailer("http://simpleapi.traileraddict.com/" + array[i] + "/trailer-b");
      if (trailer.getTrailerID() != null) {
        str = gson.toJson(trailer);
        System.out.println("RETURN:" + str);
        return str;
      }
    }
    return null;
  }
  /** read reference table from file so we can locate objects in pdf file and read the trailers */
  private PdfObject readLegacyReferenceTable(
      PdfObject rootObj, int pointer, final int eof, final PdfFileReader currentPdfFile)
      throws PdfException {

    int endTable, current = 0; // current object number
    byte[] Bytes;
    int bufSize = 1024;

    /** read and decode 1 or more trailers */
    while (true) {

      try {

        // allow for pointer outside file
        Bytes = Trailer.readTrailer(bufSize, pointer, eof, pdf_datafile);

      } catch (final Exception e) {

        try {
          closeFile();
        } catch (final IOException e1) {
          if (LogWriter.isOutput()) {
            LogWriter.writeLog("Exception " + e + " closing file " + e1);
          }
        }
        throw new PdfException("Exception " + e + " reading trailer");
      }

      if (Bytes == null) // safety catch
      {
        break;
      }

      /** get trailer */
      int i = 0;

      final int maxLen = Bytes.length;

      // for(int a=0;a<100;a++)
      //	System.out.println((char)Bytes[i+a]);
      while (i < maxLen) { // look for trailer keyword
        if (Bytes[i] == 116
            && Bytes[i + 1] == 114
            && Bytes[i + 2] == 97
            && Bytes[i + 3] == 105
            && Bytes[i + 4] == 108
            && Bytes[i + 5] == 101
            && Bytes[i + 6] == 114) {
          break;
        }

        i++;
      }

      // save endtable position for later
      endTable = i;

      if (i == Bytes.length) {
        break;
      }

      // move to beyond <<
      while (Bytes[i] != 60 && Bytes[i - 1] != 60) {
        i++;
      }

      i++;
      final PdfObject pdfObject = new CompressedObject("1 0 R");
      Dictionary.readDictionary(pdfObject, i, Bytes, -1, true, currentPdfFile, false);

      // move to beyond >>
      int level = 0;
      while (true) {

        if (Bytes[i] == 60 && Bytes[i - 1] == 60) {
          level++;
          i++;
        } else if (Bytes[i] == '[') {
          i++;
          while (Bytes[i] != ']') {
            i++;
            if (i == Bytes.length) {
              break;
            }
          }
        } else if (Bytes[i] == 62 && Bytes[i - 1] == 62) {
          level--;
          i++;
        }

        if (level == 0) {
          break;
        }

        i++;
      }

      // handle optional XRefStm
      final int XRefStm = pdfObject.getInt(PdfDictionary.XRefStm);

      if (XRefStm != -1) {
        pointer = XRefStm;
      } else { // usual way

        boolean hasRef = true;

        /** handle spaces and comments */
        while (Bytes[i] == 10 || Bytes[i] == 13) {
          i++;
        }

        while (Bytes[i] == '%') {
          while (Bytes[i] != 10) {

            i++;
          }
          i++;
        }
        /* fix for /Users/markee/Downloads/oneiderapartnerbrochure_web_1371798737.pdf
        /**/

        // look for xref as end of startref
        while (Bytes[i] != 116
            && Bytes[i + 1] != 120
            && Bytes[i + 2] != 114
            && Bytes[i + 3] != 101
            && Bytes[i + 4] != 102) {

          if (Bytes[i] == 'o' && Bytes[i + 1] == 'b' && Bytes[i + 2] == 'j') {
            hasRef = false;
            break;
          }
          i++;
        }

        if (hasRef) {

          i += 8;
          // move to start of value ignoring spaces or returns
          while ((i < maxLen) && (Bytes[i] == 10 || Bytes[i] == 32 || Bytes[i] == 13)) {
            i++;
          }

          final int s = i;

          // allow for characters between xref and startref
          while (i < maxLen && Bytes[i] != 10 && Bytes[i] != 32 && Bytes[i] != 13) {
            i++;
          }

          /** convert xref to string to get pointer */
          if (s != i) {
            pointer = NumberUtils.parseInt(s, i, Bytes);
          }
        }
      }

      i = 0;

      // allow for bum data at start
      while (Bytes[i] == 13 || Bytes[i] == 10 || Bytes[i] == 9) {
        i++;
      }

      if (pointer == -1) {
        if (LogWriter.isOutput()) {
          LogWriter.writeLog("No startRef");
        }

        /** now read the objects for the trailers */
      } else if (Bytes[i] == 120
          && Bytes[i + 1] == 114
          && Bytes[i + 2] == 101
          && Bytes[i + 3] == 102) { // make sure starts xref

        i = 5;

        // move to start of value ignoring spaces or returns
        while (Bytes[i] == 10 || Bytes[i] == 32 || Bytes[i] == 13) {
          i++;
        }

        current = offset.readXRefs(current, Bytes, endTable, i, eof, pdf_datafile);

        /**
         * now process trailer values - only first set of table values for root, encryption and info
         */
        if (rootObj == null) {

          rootObj = pdfObject.getDictionary(PdfDictionary.Root);

          encryptObj = pdfObject.getDictionary(PdfDictionary.Encrypt);
          if (encryptObj != null) {

            final byte[][] IDs = pdfObject.getStringArray(PdfDictionary.ID);
            if (IDs != null && this.ID == null) {
              // only the first encountered ID should be used as a fileID for decryption
              this.ID = IDs[0];
            }
          }

          infoObject = pdfObject.getDictionary(PdfDictionary.Info);
        }

        // make sure first values used if several tables and code for prev
        pointer = pdfObject.getInt(PdfDictionary.Prev);

        // see if other trailers
        if (pointer != -1 && pointer < this.eof) {
          // reset values for loop
          bufSize = 1024;

          // track ref table so we can work out object length
          offset.addXref(pointer);

        } else // reset if fails second test above
        {
          pointer = -1;
        }

      } else {
        pointer = -1;

        // needs to be read to pick up potential /Pages value
        //noinspection ObjectAllocationInLoop
        rootObj = new PageObject(BrokenRefTable.findOffsets(pdf_datafile, offset));
        currentPdfFile.readObject(rootObj);

        offset.setRefTableInvalid(true);
      }
      if (pointer == -1) {
        break;
      }
    }

    if (encryptObj == null
        && rootObj != null) { // manual check for broken file (ignore if Encrypted)

      int type = -1;

      int status = rootObj.getStatus();
      byte[] data = rootObj.getUnresolvedData();

      try {

        final ObjectDecoder objectDecoder = new ObjectDecoder(currentPdfFile);
        objectDecoder.checkResolved(rootObj);

        type = rootObj.getParameterConstant(PdfDictionary.Type);

      } catch (Exception e) { // we need to ignore so just catch, put back as was and log

        rootObj.setStatus(status);
        rootObj.setUnresolvedData(data, status);
        if (LogWriter.isOutput()) {
          LogWriter.writeLog("[PDF] Exception reading type on root object " + e);
        }
      }

      // something gone wrong so manually index
      if (type == PdfDictionary.Font) { // see 21153 - ref table in wrong order
        rootObj = null; // /will reset in code at end
      }
    }

    // something gone wrong so manually index
    if (rootObj == null) { // see 21382

      offset.clear();
      offset.reuse();

      // needs to be read to pick up potential /Pages value
      //noinspection ObjectAllocationInLoop
      rootObj = new PageObject(BrokenRefTable.findOffsets(pdf_datafile, offset));
      currentPdfFile.readObject(rootObj);

      offset.setRefTableInvalid(true);
    }

    return rootObj;
  }
Exemplo n.º 9
0
  public static ArrayList<Movie> getMovies(int page_number, String appid, Activity context) {
    HttpURLConnection urlConnection = null;
    BufferedReader reader = null;
    SharedPreferences sharedPref = context.getPreferences(Context.MODE_PRIVATE);

    String sortby =
        sharedPref.getString(
            context.getString(R.string.sort_by), context.getString(R.string.most_popular_value));

    if (sortby.equals(context.getString(R.string.action_favorite))) {

      Cursor cursor =
          context
              .getContentResolver()
              .query(MoviesProvider.Movies.CONTENT_URI, null, null, null, null);

      if (cursor != null && cursor.getCount() > 0) {
        ArrayList<Movie> moviesList = new ArrayList<>();

        while (cursor.moveToNext()) {
          Movie movie = new Movie();
          movie.id = cursor.getInt(cursor.getColumnIndex(MovieColumns._ID));
          movie.title = cursor.getString(cursor.getColumnIndex(MovieColumns.TITLE));
          movie.release_date = cursor.getString(cursor.getColumnIndex(MovieColumns.RELEASE_DATE));
          movie.poster = cursor.getString(cursor.getColumnIndex(MovieColumns.POSTER));
          movie.overview = cursor.getString(cursor.getColumnIndex(MovieColumns.OVERVIEW));
          movie.vote_average = cursor.getDouble(cursor.getColumnIndex(MovieColumns.VOTE_AVG));
          movie.popularity = cursor.getDouble(cursor.getColumnIndex(MovieColumns.POPULARITY));

          Cursor trailersCursor =
              context
                  .getContentResolver()
                  .query(MoviesProvider.Trailers.fromMovie(movie.id), null, null, null, null);
          if (trailersCursor != null && trailersCursor.getCount() > 0) {
            ArrayList<Trailer> trailersList = new ArrayList<>();

            while (trailersCursor.moveToNext()) {

              Trailer trailer = new Trailer();
              trailer.id =
                  trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns._ID));
              trailer.key =
                  trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns.KEY));
              trailer.title =
                  trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns.TITLE));
              trailersList.add(trailer);
            }
            movie.trailers = trailersList;
            trailersCursor.close();
          }

          Cursor reviewsCursor =
              context
                  .getContentResolver()
                  .query(MoviesProvider.Reviews.fromMovie(movie.id), null, null, null, null);
          if (reviewsCursor != null && reviewsCursor.getCount() > 0) {
            ArrayList<Review> reviewsList = new ArrayList<>();

            while (reviewsCursor.moveToNext()) {

              Review review = new Review();
              review.id = reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns._ID));
              review.author =
                  reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.AUTHOR));
              review.content =
                  reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.CONTENT));
              review.url = reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.URL));

              reviewsList.add(review);
            }
            movie.reviews = reviewsList;
            reviewsCursor.close();
          }
          moviesList.add(movie);
        }

        cursor.close();
        return moviesList;
      }
      return null;
    }

    try {

      final String MOVIES_BASE_URL = "http://api.themoviedb.org/3/discover/movie?";
      final String SORTBY_PARAM = "sort_by";
      final String APPID_PARAM = "api_key";
      final String PAGE_PARAM = "page";

      Uri buildUri =
          Uri.parse(MOVIES_BASE_URL)
              .buildUpon()
              .appendQueryParameter(SORTBY_PARAM, sortby)
              .appendQueryParameter(APPID_PARAM, appid)
              .appendQueryParameter(PAGE_PARAM, Integer.toString(page_number))
              .build();

      URL url = new URL(buildUri.toString());
      urlConnection = (HttpURLConnection) url.openConnection();
      urlConnection.setRequestMethod("GET");
      urlConnection.connect();

      InputStream inputStream = urlConnection.getInputStream();
      StringBuffer buffer = new StringBuffer();
      if (inputStream == null) {
        return null;
      }

      reader = new BufferedReader(new InputStreamReader(inputStream));

      String line;
      while ((line = reader.readLine()) != null) {
        buffer.append(line + "\n");
      }

      if (buffer.length() == 0) {
        return null;
      }
      String movieJsonStr = buffer.toString();

      try {
        return getMoviesDataFromJson(movieJsonStr, appid);
      } catch (JSONException e) {
        Log.e("MovieAPP", e.getMessage(), e);
        e.printStackTrace();
      }

    } catch (IOException e) {
      Log.e("MovieAPP", "Error", e);
      e.printStackTrace();
      return null;
    } finally {
      if (urlConnection != null) {
        urlConnection.disconnect();
      }
      if (reader != null) {
        try {
          reader.close();
        } catch (final IOException e) {
          Log.e("MovieAPP", "Error", e);
          e.printStackTrace();
        }
      }
    }
    return null;
  }