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()); } } }
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; }
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; }
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; }