Saturday, August 18, 2012

Custom Progressive Audio Streaming with MediaPlayer and Tom And Jerry Episode Lists


NOTE #1: This tutorial was written for Android v1.0.  I have just updated theAndroid streaming media player tutorial/code to v1.5 (Cupcake) with some additional information on the updated code.  You should read that post as well as this one.
NOTE #2: This tutorial is about progressive audio.  If you want to stream live media, then please read my post on live and progressive streaming with Android.
This is a long tutorial, but for those of you that have been struggling with streaming of .mp3 audio to Google’s Android’s MediaPlayer, then I hope this tutorial proves useful as you finalize your entries into Google’s Android Challenge
This tutorial will show how to roll your own streaming audio utility for Android’s MediaPlayer. We will buffer 10 seconds of audio and start playing that audio while the rest of the audio loads in the background. We store the streamed audio locally so you could cache it on device for later use or simply let it be garbage collected.
Here’s the source code for those that just want to jump in. You’ll also notice code for the other tutorials as I didn’t have time to strip them out.
Here are a few screenshots of what we’ll be creating:
Tutorial #3 results screenshots
Basic Layout
The tutorial consists of just two classes:
Tutorial3: Contains the UI layout and process button clicks
StreamingMediaPlayer: Connects to the server, downloads audio into the buffer, and controls the functionality to ensure the audio continues to play seamlessly.
We’ll assume you know about UI layout using Android’s XML resource files and will instead jump right into the audio streaming code.
Start Your Streaming
Upon clicking the “Start Streaming” button, Tutorial3 creates an instance of StreamingMediaPlayer.
new StreamingMediaPlayer(textStreamed, playButton, streamButton,progressBar);
All UI elements are passed to StreamingMediaPlayer so it can perform UI update itself. In a more robust implementation, StreamingMediaPlayer would fire relevant update events and Tutorial3 would handle the UI updates. For simplicity & cleaner code in this tutorial however, StreamingMediaPlayer will be directly updating the UI.
Tutorial3 then calls StreamingMediaPlayer.startStreaming():
audioStreamer.startStreaming(“http://www.pocketjourney.com/audio.mp3″,1444, 180);
Three variables are passed to startStreaming(): a url for the media to stream (link to an .mp3 file in this tutorial), the length in kilobytes of the media file, and the lenght in seconds of the media file. These last two values will be used when updating the progress bar.
AudioStreamer.startStreaming() creates a new thread for streaming the content so we can immediately return control back to the user interface.
public void startStreaming(final String mediaUrl, long mediaLengthInKb, long mediaLengthInSeconds) throws IOException {
this.mediaLengthInKb = mediaLengthInKb;
this.mediaLengthInSeconds = mediaLengthInSeconds;
Runnable r = new Runnable() {
public void run() {
try {
downloadAudioIncrement(mediaUrl);
} catch (IOException e) {
Log.e(getClass().getName(), “Initialization error for fileUrl=” + mediaUrl, e);
return;
}
}
};
new Thread(r).start();
}
Incremental Media Download
This is where the magic happens as we download media content from the the url stream until we have enough content buffered to start the MediaPlayer. We then let the MediaPlayer play in the background while we download the remaining audio. If the MediaPlayer reaches the end of the buffered audio, then we transfer any newly downloaded audio to the MediaPlayer and let it start playing again.
Things get a little tricky here because:
(a) The MediaPlayer seems to lock the file so we can’t simply append our content to the existing file.
(b) Pausing the MediaPlayer to load the new content takes awhile so we only want to interrupt it when absolutely necessary.
(c) Accessing the MediaPlayer from a separate thread causes it to crash.
So with those caveats in mind, here’s the method that bufferes the media content to a temporary file:
public void downloadAudioIncrement(String mediaUrl) throws IOException {
// First establish connection to the media provider
URLConnection cn = new URL(mediaUrl).openConnection();
cn.connect();
InputStream stream = cn.getInputStream();
if (stream == null) {
Log.e(getClass().getName(), “Unable to create InputStream for mediaUrl:” + mediaUrl);
}
// Create the temporary file for buffering data into
downloadingMediaFile = File.createTempFile(“downloadingMedia”, “.dat”);
FileOutputStream out = new FileOutputStream(downloadingMediaFile);
// Start reading data from the URL streambyte buf[] = new byte[16384];
int totalBytesRead = 0, incrementalBytesRead = 0;
do {
int numread = stream.read(buf);
if (numread <= 0) {
// Nothing left to read so quit
break;
} else {
out.write(buf, 0, numread);
totalBytesRead += numread;
incrementalBytesRead += numread;
totalKbRead = totalBytesRead/1000;
// Test whether we need to transfer buffered data to the MediaPlayer
testMediaBuffer();

// Update the status for ProgressBar and TextFields
fireDataLoadUpdate();
}
} while (true);
// Lastly transfer fully loaded audio to the MediaPlayer and close the InputStream
fireDataFullyLoaded();
stream.close();
}
What’s up with testMediaBuffer()?
So if you were paying attention, an important piece of functionality must reside in the testMediaBuffer() method. You’re right. That’s the method where we determine whether we need to transfer buffered data to the MediaPlayer because we have enough to start the MediaPlayer or because the MediaPlayer has already played out its previous buffer content.
Before we jump into that, please take note that interacting with a MediaPlayer on non-main UI thread can cause crashes so we always ensure we are interacting with the UI on the main-UI Thread by using a Handler when necessary. For example, we must do so in the following method because it is being called by the media streaming Thread.
private void testMediaBuffer() {
// We’ll place our following code into a Runnable so the Handler can call it for running
// on the main UI thread

Runnable updater = new Runnable() {
public void run() {
if (mediaPlayer == null) {
// The MediaPlayer has not yet been created so see if we have
// the minimum buffered data yet.
// For our purposes, we take the minimum buffered requirement to be:
// INTIAL_KB_BUFFER = 96*10/8;//assume 96kbps*10secs/8bits per byte

if ( totalKbRead >= INTIAL_KB_BUFFER) {
try {
// We have enough buffered content so start the MediaPlayer
startMediaPlayer(bufferedFile);
} catch (Exception e) {
Log.e(getClass().getName(), “Error copying buffered conent.”, e);
}
}
} else if ( mediaPlayer.getDuration() – mediaPlayer.getCurrentPosition() <= 1000 ){
// The MediaPlayer has been started and has reached the end of its buffered
// content. We test for < 1second of data (i.e. 1000ms) because the media
// player will often stop when there are still a few milliseconds of data left to play

transferBufferToMediaPlayer();
}
}
};
handler.post(updater);
}
Starting the MediaPlayer with Initial Content Buffer
Starting the MediaPlayer is very straightforward now. We simply copy all the currently buffered content
into a new Ffile and start the MediaPlayer with it.
private void startMediaPlayer(File bufferedFile) {
try {
File bufferedFile = File.createTempFile(“playingMedia”, “.dat”);
FileUtils.copyFile(downloadingMediaFile,bufferedFile);
} catch (IOException e) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(bufferedFile.getAbsolutePath());
mediaPlayer.prepare();
fireDataPreloadComplete();
Log.e(getClass().getName(), “Error initializing the MediaPlaer.”, e);
return;
}
}
Transferring Buffered Content to a MediaPlayer That is Already Playing
This is a little trickier but not much. We simply pause the MediaPlayer if it was playing (i.e. the user had not pressed pause), copy over the currently downloaded media content (which may be all of it by now) and then restart the MediaPlayer if it was previously running or had hit the end of its buffer due to a slow network.
private void transferBufferToMediaPlayer() {
try {
// Determine if we need to restart the player after transferring data (e.g. perhaps the user
// pressed pause) & also store the current audio position so we can reset it later. 

boolean wasPlaying = mediaPlayer.isPlaying();
int curPosition = mediaPlayer.getCurrentPosition();
mediaPlayer.pause();
// Copy the current buffer file as we can’t download content into the same file that
// the MediaPlayer is reading from.

File bufferedFile = File.createTempFile(“playingMedia”, “.dat”);
FileUtils.copyFile(downloadingMediaFile,bufferedFile);
// Create a new MediaPlayer. We’ve tried reusing them but that seems to result in
// more system crashes than simply creating new ones.

mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(bufferedFile.getAbsolutePath());
mediaPlayer.prepare();
mediaPlayer.seekTo(curPosition);
// Restart if at end of prior beuffered content or mediaPlayer was previously playing.
// NOTE: We test for < 1second of data because the media player can stop when there is still
// a few milliseconds of data left to play

boolean atEndOfFile = mediaPlayer.getDuration() – mediaPlayer.getCurrentPosition() <= 1000;
if (wasPlaying || atEndOfFile){
mediaPlayer.start();
}
}catch (Exception e) {
Log.e(getClass().getName(), “Error updating to newly loaded content.”, e);
}
}
Conclusion
To get the real feel for how your audio will download, make sure to set it to a slower network speed. I recommend setting to AT&T’s EDGE network setting as it should give a lower limit on expected performance. You can make these setting’s easy in Eclipse by setting going into your Run or Debug setting’s dialog and making these selections.
EDGE settings in Eclipse
Well that’s it. I’ve inluded additional code for handling the ProgressBar and TextField updates but that should all be sufficiently easy to understand once you understand the rest of the code. Good luck during the next week as you finish your Android Challenge submissions.
And of course, here’s the source code. Please post a comment below if I need to explain anything in more detail. You’ll also notice code for the other tutorials as I didn’t have time to strip them out.

Android radio buttons example 

 

1. Custom String

Open “res/values/strings.xml” file, add some custom string for radio button.
File : res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, MyAndroidAppActivity!</string>
    <string name="app_name">MyAndroidApp</string>
    <string name="radio_male">Male</string>
    <string name="radio_female">Female</string>
    <string name="btn_display">Display</string>
</resources>
 

2. RadioButton

Open “res/layout/main.xml” file, add “RadioGroup“, “RadioButton” and a button, inside the LinearLayout.
File : res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <RadioGroup
        android:id="@+id/radioSex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
 
        <RadioButton
            android:id="@+id/radioMale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/radio_male" 
            android:checked="true" />
 
        <RadioButton
            android:id="@+id/radioFemale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/radio_female" />
 
    </RadioGroup>
 
    <Button
        android:id="@+id/btnDisplay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_display" />
 
</LinearLayout>
Radio button selected by default.
To make a radio button is selected by default, put android:checked="true" within the RadioButton element. In this case, radio option “Male” is selected by default.

3. Code Code

Inside activity “onCreate()” method, attach a click listener on button.
File : MyAndroidAppActivity.java
package com.mkyong.android;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
 
public class MyAndroidAppActivity extends Activity {
 
  private RadioGroup radioSexGroup;
  private RadioButton radioSexButton;
  private Button btnDisplay;
 
  @Override
  public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 
 addListenerOnButton();
 
  }
 
  public void addListenerOnButton() {
 
 radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
 btnDisplay = (Button) findViewById(R.id.btnDisplay);
 
 btnDisplay.setOnClickListener(new OnClickListener() {
 
  @Override
  public void onClick(View v) {
 
          // get selected radio button from radioGroup
   int selectedId = radioSexGroup.getCheckedRadioButtonId();
 
   // find the radiobutton by returned id
          radioSexButton = (RadioButton) findViewById(selectedId);
 
   Toast.makeText(MyAndroidAppActivity.this,
    radioSexButton.getText(), Toast.LENGTH_SHORT).show();
 
  }
 
 });
 
  }
}

4. Demo

Run the application.
1. Result, radio option “Male” is selected.
android radio button demo1
2. Select “Female” and click on the “display” button, the selected radio button value is displayed.
android radio button demo2
 
 

Download Source Code HERE




Introduction to android Development

The BlackBerry and iPhone, which have appealing and high-volume mobile platforms, are addressing opposite ends of a spectrum. The BlackBerry is rock-solid for the enterprise business user. For a consumer device, it's hard to compete with the iPhone for ease of use and the "cool factor." Android, a young and yet-unproven platform, has the potential to play at both ends of the mobile-phone spectrum and perhaps even bridge the gulf between work and play.
Today, many network-based or network-capable appliances run a flavor of the Linux kernel. It's a solid platform: cost-effective to deploy and support and readily accepted as a good design approach for deployment. The UI for such devices is often HTML-based and viewable with a PC or Mac browser. But not every appliance needs to be controlled by a general computing device. Consider a conventional appliance, such as a stove, microwave or bread maker. What if your household appliances were controlled by Android and boasted a color touch screen? With an Android UI on the stove-top, the author might even be able to cook something.
In this article, learn about the Android platform and how it can be used for mobile and nonmobile applications. Install the Android SDK and build a simple application. Download the source code for the example application in this article.
The Android platform is the product of the Open Handset Alliance, a group of organizations collaborating to build a better mobile phone. The group, led by Google, includes mobile operators, device handset manufacturers, component manufacturers, software solution and platform providers, and marketing companies. From a software development standpoint, Android sits smack in the middle of the open source world.
The first Android-capable handset on the market was the G1 device manufactured by HTC and provisioned on T-Mobile. The device became available after almost a year of speculation, where the only software development tools available were some incrementally improving SDK releases. As the G1 release date neared, the Android team released SDK V1.0 and applications began surfacing for the new platform.
To spur innovation, Google sponsored two rounds of "Android Developer Challenges," where millions of dollars were given to top contest submissions. A few months after the G1, the Android Market was released, allowing users to browse and download applications directly to their phones. Over about 18 months, a new mobile platform entered the public arena.
With Android's breadth of capabilities, it would be easy to confuse it with a desktop operating system. Android is a layered environment built upon a foundation of the Linux kernel, and it includes rich functions. The UI subsystem includes:
  • Windows
  • Views
  • Widgets for displaying common elements such as edit boxes, lists, and drop-down lists
Android includes an embeddable browser built upon WebKit, the same open source browser engine powering the iPhone's Mobile Safari browser.
Android boasts a healthy array of connectivity options, including WiFi, Bluetooth, and wireless data over a cellular connection (for example, GPRS, EDGE, and 3G). A popular technique in Android applications is to link to Google Maps to display an address directly within an application. Support for location-based services (such as GPS) and accelerometers is also available in the Android software stack, though not all Android devices are equipped with the required hardware. There is also camera support.
Historically, two areas where mobile applications have struggled to keep pace with their desktop counterparts are graphics/media, and data storage methods. Android addresses the graphics challenge with built-in support for 2-D and 3-D graphics, including the OpenGL library. The data-storage burden is eased because the Android platform includes the popular open source SQLite database. Figure 1 shows a simplified view of the Android software layers.

Figure 1. Android software layers
The Android software layers 

As mentioned, Android runs atop a Linux kernel. Android applications are written in the Java programming language, and they run within a virtual machine (VM). It's important to note that the VM is not a JVM as you might expect, but is the Dalvik Virtual Machine, an open source technology. Each Android application runs within an instance of the Dalvik VM, which in turn resides within a Linux-kernel managed process, as shown below.

Figure 2. Dalvik VM
Dalvik VM 

An Android application consists of one or more of the following classifications:
Activities
An application that has a visible UI is implemented with an activity. When a user selects an application from the home screen or application launcher, an activity is started.
Services
A service should be used for any application that needs to persist for a long time, such as a network monitor or update-checking application.
Content providers
You can think of content providers as a database server. A content provider's job is to manage access to persisted data, such as a SQLite database. If your application is very simple, you might not necessarily create a content provider. If you're building a larger application, or one that makes data available to multiple activities or applications, a content provider is the means of accessing your data.
Broadcast receivers
An Android application may be launched to process a element of data or respond to an event, such as the receipt of a text message.
An Android application, along with a file called AndroidManifest.xml, is deployed to a device. AndroidManifest.xml contains the necessary configuration information to properly install it to the device. It includes the required class names and types of events the application is able to process, and the required permissions the application needs to run. For example, if an application requires access to the network — to download a file, for example — this permission must be explicitly stated in the manifest file. Many applications may have this specific permission enabled. Such declarative security helps reduce the likelihood that a rogue application can cause damage on your device.
The next section discusses the development environment required to build an Android application.
The easiest way to start developing Android applications is to download the Android SDK and the Eclipse IDE (see Resources). Android development can take place on Microsoft® Windows®, Mac OS X, or Linux.
This article assumes you are using the Eclipse IDE and the Android Developer Tools plug-in for Eclipse. Android applications are written in the Java language, but compiled and executed in the Dalvik VM (a non-Java virtual machine). Coding in the Java language within Eclipse is very intuitive; Eclipse provides a rich Java environment, including context-sensitive help and code suggestion hints. Once your Java code is compiled cleanly, the Android Developer Tools make sure the application is packaged properly, including the AndroidManifest.xml file.
It's possible to develop Android applications without Eclipse and the Android Developer Tools plug-in, but you would need to know your way around the Android SDK.
The Android SDK is distributed as a ZIP file that unpacks to a directory on your hard drive. Since there have been several SDK updates, it is recommended that you keep your development environment well organized so you can easily switch between SDK installations. The SDK includes:
android.jar
Java archive file containing all of the Android SDK classes necessary to build your application.
documention.html and docs directory
The SDK documentation is provided locally and on the Web. It's largely in the form of JavaDocs, making it easy to navigate the many packages in the SDK. The documentation also includes a high-level Development Guide and links to the broader Android community.
Samples directory
The samples subdirectory contains full source code for a variety of applications, including ApiDemo, which exercises many APIs. The sample application is a great place to explore when starting Android application development.
Tools directory
Contains all of the command-line tools to build Android applications. The most commonly employed and useful tool is the adb utility (Android Debug Bridge).
usb_driver
Directory containing the necessary drivers to connect the development environment to an Android-enabled device, such as the G1 or the Android Dev 1 unlocked development phone. These files are only required for developers using the Windows platform.
Android applications may be run on a real device or on the Android Emulator, which ships with the Android SDK. Figure 3 shows the Android Emulator's home screen.

Figure 3. Android Emulator
The Android Emulator 

The adb utility supports several optional command-line arguments that provide powerful features, such as copying files to and from the device. The shell command-line argument lets you connect to the phone itself and issue rudimentary shell commands. Figure 4 shows the adb shell command against a real device connected to a Windows laptop with a USB cable.

Figure 4. Using the adb shell command
Using the adb shell command 

Within this shell environment, you can:
  • Display the network configuration that shows multiple network connections. Note the multiple network connections:
    • lo is the local or loopback connection.
    • tiwlan0 is the WiFi connection with an address provisioned by a local DHCP server.
  • Display the contents of the PATH environment variable.
  • Execute the su command to become the super-user.
  • Change the directory to /data/app, where user applications are stored.
  • Do a directory listing where you see a single application. Android application files are actually archive files that are viewable with WinZip or equivalent. The extension is apk.
  • Issue a ping command to see if Google.com is available.
From this same command-prompt environment, you can also interact with SQLite databases, start programs, and many other system-level tasks. This is fairly remarkable function, considering you're connected to a telephone.
In the next section, you'll create a simple Android application.
This section provides a whirlwind tour of building an Android application. The example application is about as simple as you can imagine: a modified "Hello Android" application. You'll add a minor modification to make the screen background color all white so you can use the phone as a flashlight. Not very original, but it will be useful as an example. Download the full source code.
To create an application in Eclipse, select File > New > Android project, which starts the New Android Project wizard.

Figure 5. New Android project wizard
The new Android project wizard 

Next, you create a simple application with a single activity, along with a UI layout stored in main.xml. The layout contains a text element you're going to modify to say Android FlashLight. The simple layout is shown below.

Listing 1. Flashlight layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/all_white">
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" android:textColor="@color/all_black" 
   android:gravity="center_horizontal"/>
</LinearLayout>

Create a couple of color resources in strings.xml.

Listing 2. Color in strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Android FlashLight</string>
    <string name="app_name">FlashLight</string>
    <color name="all_white">#FFFFFF</color>
    <color name="all_black">#000000</color>
</resources>

The main screen layout has a background color defined as all_white. In the strings.xml file, you see that all_white is defined as an RGB triplet value of #FFFFFF, or all white.
The layout contains a single TextView, which is really just a piece of static text; it is not editable. The text is set to be black and is centered horizontally with the gravity attribute.
The application has a Java source file called FlashLight.java, as shown below.

Listing 3. Flashlight.java
package com.msi.flashlight;
import android.app.Activity;
import android.os.Bundle;
public class FlashLight extends Activity {
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

The code is boiler-plate directly from the New Project wizard:
  • It is part of a Java package called com.msi.flashlight.
  • It has two imports:
    • One for the activity class
    • One for the bundle class
  • When this activity is initiated, the onCreate method is invoked, passing in a savedInstanceState. Don't be concerned with this bundle for our purposes; it is used when an activity is suspended and then resumed.
  • The onCreate method is an override of the activity class method of the same name. It calls the super class's onCreatemethod.
  • A call to setContentView() associates the UI layout defined in the file main.xml. Anything in main.xml and strings.xml gets automatically mapped to constants defined in the R.java source file. Never edit this file directly, as it is changed upon every build.
Running the application presents a white screen with black text.

Figure 6. White screen of flashlight
White screen of flashlight 

The AndroidManifest.xml file setup for the FlashLight application is shown below.

Listing 4. AndroidManifest.xml for FlashLight
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.msi.flashlight"
      android:versionCode="1"
      android:versionName="1.0.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FlashLight"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

This file was created automatically by the Android Developer Tools plug-in for Eclipse. You didn't have to do anything.
Of course, the application is not terribly magnificent. But it could come in handy if you want to do some reading without disturbing your sleeping spouse, or if you need to find your way to the fuse box in the basement during a power outage.
In this article, you learned about Android at a very high level and built a small application. Hopefully, the example got you excited enough to explore more of the Android platform. Android promises to be a market-moving open source platform that will be useful well beyond cell phones.












  • Season 4
  • Season 3
  • Season 2

    • Bowling Alley Cat
      Episode 60
      6/27/11
      0.0



    • Tot Watchers
      Episode 57
      8/1/58
      9.5
      Babysitter Jeannie, still attached to the phone, unintentionally forces Tom and Jerry to take care of the baby, who still keeps getting into mischief.
    • Robin Hoodwinked
      Episode 56
      6/6/58
      8.5
      Daring mice Jerry and Tuffy try to break Robin Hood out of prison, but in order to do that, they have to get past the guard, Tom.
    • The Vanishing Duck
      Episode 55
      5/2/58
      9.2
      Little Quacker plays a singing duck, who becomes Jerry's partner in crime when the two of them discover the delights of vanishing cream.
    • Royal Cat Nap
      Episode 54
      3/7/58
      9.8
      The king is about to take a nap, and tells Tom that if he hears one sound and wakes up, it's off with his head! Jerry and Tuffy of course do their best to make that scenario happen.
    • Happy Go Ducky
      Episode 53
      1/3/58
      9.3
      When the Easter Bunny leaves an egg for Tom and Jerry, it hatches into Quacker. The little duckling insists on swimming as much as he can, eventually flooding the entire house in order to do just that.
    • Tom's Photo Finish
      Episode 52
      11/1/57
      9.9
      When Tom frames Spike for stealing food from the fridge, he only ends up getting caught on tape by Jerry. Jerry decides to use this footage to try and get Tom into trouble.
    • Mucho Mouse
      Episode 51
      9/6/57
      10
      Taking place in Spain, Meathead the Cat is ordered by his owner to catch El Magnifico (Jerry) at once, but Meathead says that's impossible because of El Magnifico's world-renowned escaping skills. So the owner decides to call up Tom, theMORE
    • Feedin' The Kiddie
      Episode 50
      6/7/57
      9.5
      This is a CinemaScope remake of the 1949 episode, The Little Orphan.
    • Timid Tabby
      Episode 49
      4/19/57
      9.4
      George, Tom's fraidy-cat-look-alike cousin, comes for a visit. Jerry has no knowledge of this, however, so when he sees George freak out upon seeing him, he decides to scare him some more, but not always working as he sometimes getsMORE
    • Tops With Pops
      Episode 48
      2/22/57
      10
      This is a CinemaScope remake of the 1949 episode, Love That Pup.

    • Barbecue Brawl
      Episode 47
      12/14/56
      9.0
      Spike's perfect pool-side barbecue with Tyke turns into a disaster when Tom and Jerry come crashing through with their usual chasing antics.

    • Blue Cat Blues
      Episode 46
      11/6/56
      9.7
      Tom is sitting on the railroad tracks, feeling miserable about losing his girlfriend to his rival Butch again. Feeling sad for him, Jerry narrates the whole story as he watches on.
    • Downbeat Bear
      Episode 45
      10/21/56
      9.5
      Tom and Jerry hear on the radio about a bear that escaped from the circus who always dances whenever music is playing. When the bear finds it's way to their house, and music starts playing, it takes Tom as it'sMORE

    • Muscle Beach Tom
      Episode 44
      9/7/56
      8.7
      Tom and Butch both try to impress a female cat with their muscle building abilities, with not only each other, but Jerry, for competition.
    • Busy Buddies
      Episode 43
      5/4/56
      9.5
      Jeannie is a babysitter whose primary interest is talking with her friends on the phone. The baby she's supposed to watch over is always getting into mischief, but when Tom and Jerry try to keep the baby out of trouble, Jeannie always scolds them for bothering the baby.
    • The Egg And Jerry
      Episode 42
      3/23/56
      10
      A CinemaScope remake of the 1949 episode,Hatch Up Your Troubles.
    • 1/27/56
      9.8
      When Tom is scolded by his owner for always breaking things while chasing Jerry, he decides to get a job. He soon finds one that sounds good to him, but it turns out to be the job of a witch'sMORE
    • That's My Mommy
      Episode 40
      11/19/55
      9.7
      When a duck egg hatches right in front of Tom, the ducking believes that Tom is his mother. Only problem is that Tom wants to eat him. Jerry sees this and does his best to stop him, while at theMORE

    • Pecos Pest
      Episode 39
      11/11/55
      8.7
      Jerry gets a telegram from his Uncle Pecos that says that he's going to spend the night with him before his big debut on TV. Arriving quickly, he gives Jerry a demonstration of his guitar skills. But when one ofMORE
    • Smarty Cat
      Episode 38
      10/14/55
      9.7
      Tom and his alley cat palls are going through home movies, and Jerry wants to watch them, too. But Tom and his buddies don't want him around and toss him out the window. Annoyed, Jerry decides to get back atMORE

    • Tom And Chérie
      Episode 37
      9/9/55
      10
      Hopelessly in love with a female mouse named Lilli, Jerry uses Nibbles as an errand boy to send letters back and forth between them. Unfortunately for Nibbles, he has to deal with Tom during these back-and-forth trips.
    • Designs On Jerry
      Episode 36
      9/2/55
      10
      Knowing that he can make a lot of money this way, Tom designs the ultimate mouse trap. But after he goes to sleep, the mouse in his blueprints comes to life and warns Jerry about the upcoming threat that this mouse trap puts upon him...
    • Mouse For Sale
      Episode 35
      5/21/55
      10
      With white mice being the new rage, Tom paints Jerry white and sells him for a bucketful of money, which he hides under the carpet back home. Everything is going great for him, until the lady of the house finds the money and buys Jerry back.
    • Pup On A Picnic
      Episode 34
      4/30/55
      9.4
      Spike and his son, Tyke, are on a picnic, but happen do have one in the same place in which Tom and Jerry's chasing antics are going on, and the two groups collide. It's then an array of food fightMORE

    • Southbound Duckling
      Episode 33
      3/12/55
      9.6
      Little Quacker is stubbornly convinced that all ducks fly south for the winter, and refuses to stay home with his domestic buddies. To complicate things, Tom is hungry for a duck meal.

    • Touché, Pussy Cat!
      Episode 32
      12/18/54
      9.7
      Nibbles' father sends him to Jerry for Mouseketeer training. Nibbles does his best, but fails miserably, resulting in Jerry sending him home. But before Nibbles can do anything of the sort, Tom attacks out of nowhere, and Nibbles courageously fights back. What will be the result of the battle?

    • Pet Peeve
      Episode 31
      11/20/54
      9.8
      Husband and wife are complaining about the large bills, and realize that they're all from cat and dog food. So they make up their minds that either Tom or Spike has to go, and tell them that whoever catches Jerry first gets to stay.
    • 11/13/54
      9.9
      After reading the book, The Ugly Duckling, a duckling feels sad because he thinks he's ugly, too. While crying, Jerry finds him and tries to cheer him up. But it's no good, as the duckling is so sad that itMORE
    • Neapolitan Mouse
      Episode 29
      10/2/54
      8.9
      While touring Naples, Italy, Tom and Jerry are befriended by an Italian mouse named Topo, a champion of justice who helps his new friends fight off some tough Italian dogs.
    • Mice Follies
      Episode 28
      9/4/54
      10
      It's icy fun in the kitchen, as Jerry and Nibbles turn the floor into an ice-skating rink by freezing overflowing faucets.

    • Baby Butch
      Episode 27
      8/14/54
      10
      Butch is going shopping... in an alley. He finds what he can in trash cans, and takes them with him. But a bottle of fresh milk on a doorstep catches his attention, and he goes over to get it. ButMORE

    • Little School Mouse
      Episode 26
      5/29/54
      9.9
      After being chased by Tom once again, Professor Jerry escapes into his classroom (mouse hole). Once there, he proceeds to teach his only student, Nibbles, how to outwit a cat. And the subject for the lesson is none other than Tom.

    • Hic-cup Pup
      Episode 25
      4/17/54
      9.9
      Tom accidentally gives Tyke the hiccups when he, also accidentally, awakens him from his nap. Spike is not pleased about this, and won't stop standing over Tom until he gets rid of Tyke's hiccups.
    • Posse Cat
      Episode 24
      1/30/54
      9.9
      The ranch cook tells Tom that he won't be getting any more food unless he gets rid of Jerry. After making a deal with Jerry to split the food, they stage a fight that gets rid of Jerry. Tom gets fed, but then double-crosses him.
    • Puppy Tale
      Episode 23
      1/23/54
      9.4
      After Jerry rescues a sackful of puppies from a storm swollen river, one of the puppies follows him home. Tom, being the cat that he is, doesn't want any sort of dog around.
    • Life With Tom
      Episode 22
      11/21/53
      9.8
      The third episode composed primarily of flashbacks, Tom settles down to read Jerry's book, entitled Life With Tom.
    • Two Little Indians
      Episode 21
      10/17/53
      9.9
      Scoutmaster Jerry has his hands full when two little orphans from the Bide-a-Wee Mouse Home come to stay with him. Outfitted in Indian feathers and diapers, the two little mice are quite bold and reckless, and end up getting bothMORE
    • Just Ducky
      Episode 20
      9/5/53
      9.8
      Six eggs of a mother duck have just hatched. Delighted, the mother duck goes swimming, with five of her ducklings close behind. But unfortunately, the last duckling can't swim, and becomes sad. Jerry finds it, and decides to teach itMORE
    • That's My Pup!
      Episode 19
      4/25/53
      9.8
      Spike and his son, Tyke, are watching Tom and Jerry's chasing antics. Spike then decides to teach Tyke on how to really be a dog. First lesson? Chasing cats. Object of the lesson? Tom, of course.

    • Johann Mouse
      Episode 18
      3/21/53
      9.9
      The narrator tells the story of a waltzing mouse named Johann (Jerry) who lives in Vienna in Johann Strauss' home. Tom tries to catch Jerry each time he's dancing to Johann Strauss' piano music, but when a day arrives inMORE

    • Jerry And Jumbo
      Episode 17
      2/21/53
      9.9
      It's nighttime, and a circus train is passing through town. But a baby elephant is sleeping too close to the edge of the car he's in, and tumbles out, rolls down the hill, into a house, and right into Tom'sMORE
    • The Missing Mouse
      Episode 16
      1/10/53
      10
      Tom is chasing Jerry as usual, when he knocks him into a wall. The radio then reports that a white mouse had escaped from a laboratory, and it had consumed enough explosives to blow up an entire city. At thatMORE
    • The Dog House
      Episode 15
      11/29/52
      9.9
      Spike is building a dog house of his very own. Though unfortunately for him, Tom and Jerry's chasing antics keep destroying his efforts over and over again...

    • Cruise Cat
      Episode 14
      10/18/52
      9.9
      A luxury cruise ship is bound for Honolulu, Hawaii, and Tom is the ship's mascot. The captain tells Tom that if he sees one mouse on the ship, he'll be kicked off and replaced with a new mascot. Of course,MORE
    • Push-Button Kitty
      Episode 13
      9/6/52
      10
      Mammy Two-Shoes is tired of Tom lazing around doing nothing. She soon gets a package that contains a robot cat, saying that it's going to replace Tom in the mouse catching business. Tom laughs at this until the robot catMORE
    • Fit To Be Tied
      Episode 12
      7/26/52
      9.8
      When Spike hurts his foot by stepping on a tack, Jerry pulls it out for him. Grateful, Spike repays him by giving him a bell, telling him to just ring it whenever he's in trouble. Felling confident with the protecting,MORE
    • Little Runaway
      Episode 11
      6/14/52
      9.5
      When a baby seal escapes from the circus, it's befriended by Jerry. Tom hears that there's a big reward for the return of the seal, so he tries to catch it, with Jerry doing his best to protect it.
    • Triplet Trouble
      Episode 10
      4/19/52
      10
      Tom is using Jerry as a paddle-ball, when the doorbell rings and Mammy Two-Shoes brings in three cute kittens. Mammy is about to go to the store to get some milk for them, when the kittens attempt to blow TomMORE
    • Smitten Kitten
      Episode 9
      4/12/52
      8.2
      Jerry gets annoyed when he sees Tom fall for a female cat once again. With the help of his evil self, he remembers all of Tom's past relationships and all of the trouble that they caused him.
    • 3/15/52
      10
      Taking place in medieval times, Tom is ordered by the tyrannical king to guard the banquet table with his life, especially from the Mouseketeers, or it's off with his head! The two Mouseketeers, Jerry and Nibbles, heard every word ofMORE
    • The Duck Doctor
      Episode 7
      2/16/52
      9.8
      It's the time of year for ducks to be migrating, and little Quacker is among them. Unfortunately, Tom is out hunting ducks, and manages to shoot Quacker's wing, causing him to fall. Delighted, Tom goes after him, but Jerry savesMORE
    • The Flying Cat
      Episode 6
      1/12/52
      9.8
      Tom is chasing both Jerry and the house canary, but the two go out of reach by taking refuge in the canary's birdhouse. Tom tries everything to get up to them, but everything fails, ultimately resulting in him crashing throughMORE
    • Cat Napping
      Episode 5
      12/8/51
      9.1
      It's a sunny day, and Tom walks out into the backyard with some lemonade and a pillow, ready to relax to his heart's content on a hammock. But when he finds out that Jerry is already sleeping there, he tossesMORE
    • Nit-Witty Kitty
      Episode 4
      10/6/51
      9.6
      Tom is chasing Jerry as usual, with Mammy Two-Shoes cheering him on. But when she attempts to crush Jerry herself by whacking him with a broom, she accidentally whacks Tom on the head instead. This causes Tom to suffer aMORE
    • Slicked-Up Pup
      Episode 3
      9/8/51
      9.9
      Spike is giving his son, Tyke, a bath. Once finished, he leaves him on the porch to go get some meat. But he doesn't go too far before Tom and Jerry's chasing antics cause Tyke to fall into the mudMORE

    • His Mouse Friday
      Episode 2
      7/7/51
      9.8
      When Tom becomes lost at sea, he washes up on a deserted island. On the island, he runs into Jerry, who's posing as a cannibal.
    • Sleepy-Time Tom
      Episode 1
      5/26/51
      8.9
      Tom and his friends come back from a night of partying. Exhausted, Tom falls asleep right on the windowsill. But when Mammy Two-Shoes catches him sleeping by daytime, she wakes him up, tells him to go on mouse patrol, andMORE
  • Season 1

    • Mouse in Manhattan
      Episode 61
      7/7/45
      9.8
      Jerry decides to move out of the country and into the big city. He writes a note for Tom, telling him about his departure. He arrives in the city to have bad luck everywhere he goes. Jerry sees that theMORE

    • Puttin' on the Dog
      Episode 60
      10/28/44
      9.6
      Tom is chasing Jerry as usual, but makes the big mistake of chasing him right into a dog pound. Tom barely escapes with his life. Knowing that he's safe there, Jerry relaxes with one of the dogs (Spike). Annoyed byMORE

    • Lonesome Mouse
      Episode 59
      3/7/11
      0.0

    • 5/6/44
      9.8
      Tom is chasing Jerry as usual until a telegram arrives. Interested, Tom goes to read it. Not understanding, he puts it back down and starts to walk away, but immediately reads it again, realizing that it states that he inheritedMORE

    • Jerry's Cousin
      Episode 57
      4/7/51
      9.9
      A bunch of alley cats are betting beaten to a pulp, and it's all at the hands of the super-strong Muscles Mouse. He also happens to be Jerry's cousin, and gets a telegram from Jerry asking for help on dealingMORE
    • 3/3/51
      9.7
      Tom is visiting his new friend, Goldy the Goldfish. At the same time, Tom hears a delicious recipe on the radio involving fish, and decides to cook it right away. So he runs over to Goldy, picks him up bowlMORE
    • Casanova Cat
      Episode 55
      1/6/51
      9.7
      Tom is once again trying to impress a female cat (Toodles). He forces Jerry to do embarrassing things a-plenty, which angers him to no end. As a result of this anger, Jerry calls Butch so that both him and Tom will have to battle it out for who gets Toodles.
    • Cue Ball Cat
      Episode 54
      11/25/50
      10
      In a pool room, Tom sets up a game of Pool to play by himself. But when his game disturbs Jerry, the chase begins again... only this time, it's pool ball style.
    • The Framed Cat
      Episode 53
      10/21/50
      9.8
      When Jerry gets framed for stealing a piece of chicken, Mammy Two-Shoes has Tom go after him. Angered by this, Jerry frames Tom for stealing Spike's bone... and the frame-ups continue as a result.

    • 9/16/50
      9.5
      Taking place in front of a huge audience at the Hollywood Bowl, Tom is conducting an orchestra. But Jerry wants to conduct it, too, resulting in a fight between the two rivals for the conductor's position.
    • Safety Second
      Episode 51
      7/1/50
      9.6
      It's the 4th of July, and Nibbles is looking forward to an exciting day with lots of fireworks. But Jerry is against this, considering safety first. Nibbles still sneaks out the fireworks anyway, which eventually leads to an explosive battle against Tom.
    • Jerry and the Lion
      Episode 50
      4/8/50
      9.8
      When Tom hears on the radio that a ferocious lion has escaped from the circus, he immediately shuts all the windows, grabs his gun, and prepares for the worst. Jerry hears this, too, and actually encounters the lion in theMORE
    • Texas Tom
      Episode 49
      3/11/50
      9.7
      It's the Texas desert, and Tom, Jerry, a female cat, and a bull are all involved in cowboy craziness.
    • 1/14/50
      9.9
      Mammy Two-Shoes goes out to play cards with some friends, so Tom calls his friends over for a party at the house. Unfortunately for Jerry, the partying disturbs him greatly, so he does his best get in contact with MammyMORE

    • Little Quacker
      Episode 47
      1/7/50
      9.1
      When Tom snatches a duck egg, he quickly cracks it open onto a frying pan in preparation to cook it. But instead of a yolk, a little duckling named Quacker pops out. Upon seeing that Tom is trying to cookMORE
    • Tennis Chumps
      Episode 46
      12/10/49
      9.8
      Tom is competing against Butch in a tennis tournament, but bad luck keeps falling upon the two throughout the game. Jerry, of course, decides to use this to his advantage.
    • Jerry's Diary
      Episode 45
      10/22/49
      9.4
      Tired of chasing Jerry, Tom settles down for the rest of the day, and happens to come across Jerry's diary. Going through it, clips of the two rivals' past adventures are shown.
    • Love That Pup
      Episode 44
      10/1/49
      9.9
      When chasing Jerry, Tom misses his target and mistakenly grabs Spike's son, Tyke, instead. After snatching his son back, Spike beats Tom to a pulp. Realizing that he's safe around them, Jerry cuddles up against the two dogs. Tom thenMORE
    • 9/3/49
      9.8
      Tom falls into a lake and sinks to the bottom. Once there, it's an underwater adventure as he attempts to catch a mermouse (Jerry), with various events happening along the way.

    • Heavenly Puss
      Episode 42
      7/9/49
      10
      Tom is chasing Jerry as usual, when during the chase, a piano comes tumbling down the stairs, smashing into Tom and killing him. Tom then floats up the gates of Heaven, but the gatekeeper refuses to let him through sinceMORE
    • 5/14/49
      9.8
      A woodpecker egg hatches after rolling up to Jerry's door. Jerry puts the woodpecker back in it's nest, but when the woodpecker notices Tom, it starts to head toward him...
    • The Little Orphan
      Episode 40
      4/30/49
      9.8
      Nibbles the Mouse is sent to Jerry's place by the Bide-a-Wee Mouse Home to spend Thanksgiving with him. The big Thanksgiving meal is all set up, and Jerry and Nibbles go to feast. But this wakes up Tom, and a battle soon ensures between the three.

    • Polka-Dot Puss
      Episode 39
      2/26/49
      10
      Mammy Two-Shoes is about to put Tom out for the night, but since there's a lightning storm going on, Tom fakes being sick in order to stay in. Mammy falls for it, and allows Tom to sleep indoors. Tom isMORE
    • Mouse Cleaning
      Episode 38
      12/11/48
      10
      Mammy Two-Shoes has finally finished cleaning the house, but Tom and Jerry's chasing antics get it all dirty again. Mammy cleans it up once more, then tells Tom that if the house is dirty yet again by the time sheMORE

    • Professor Tom
      Episode 37
      10/30/48
      9.7
      Tom is doing his best to teach a younger cat how to catch a mouse, but the youngster isn't able to focus very well. When Tom finally tells the young cat to do a test run by catching Jerry, theMORE
    • 9/18/48
      10
      Mammy Two-Shoes is being "attacked" by Jerry again, so she once more orders Tom to get rid of him. When he epically fails once again, Mammy decides that Tom is too old to work in the mouse-catching business anymore, andMORE
    • The Truce Hurts
      Episode 35
      7/17/48
      9.9
      Tired of fighting, Tom, Jerry, and Spike sign a truce to never harm each other again, and to be best buds. They do everything together, including protect each other from harm. That is... until they start to fight over a hunk of meat.

    • Kitty Foiled
      Episode 34
      6/1/48
      9.8
      Tom has finally caught Jerry and is about to eat him. But the house canary can't bare that and comes to Jerry's rescue. With that, Tom goes after the both of them, but the teamwork between Jerry and the canary outdoes Tom completely.
    • The Invisible Mouse
      Episode 33
      9/27/47
      9.5
      Tom is chasing Jerry as usual, when Jerry dives into a bottle of ink to hide. Not noticing, Tom dashes off in which he thinks is the direction the mouse went. When Jerry emerges from the bottle, he finds theMORE

    • 8/30/47
      9.9
      Mammy Two-Shoes is sick and tired of Jerry, period. So she enlists both Tom and Butch to catch him, saying that whichever cat is successful in the capture gets to stay in the house, and whoever fails gets kicked out along with Jerry.
    • Salt Water Tabby
      Episode 31
      7/12/47
      9.1
      Tom is ready to have some fun in the sun at the beach, and proceeds to woo a female cat (Toodles). But when he finds Jerry in a lunch basket, the chase begins again, with beach pranks galore.
    • 6/14/47
      9.8
      Jerry drinks a potion that makes him grow super-strong. He decides to go after Tom because this time, he's stronger. Once the potion wears off, Tom drinks some of it himself and grows bigger and super-strong. But he then immediatelyMORE
    • The Cat Concerto
      Episode 29
      4/26/47
      9.9
      Tom is on stage in front of a huge audience, about to play a piece on the piano. He gets off to a good start, but hitting the piano keys wakes up Jerry, who's sleeping inside the piano, and sendsMORE
    • Part Time Pal
      Episode 28
      3/15/47
      9.9
      Tom is told by his owner, Mammy Two-Shoes, to guard the refrigerator for the night and keep Jerry away from it, or else he'll be thrown out of the house. Upon hearing this, Jerry outwits Tom, but goes too far...MORE
    • Cat Fishin'
      Episode 27
      2/22/47
      9.6
      It's beautiful day at a lake... one that's surrounded by a fence that's plastered all over with "keep out" and "no fishing" signs. Not to mention the bulldog (Spike) who guards it. But that doesn't stop Tom, as he takesMORE
    • Solid Serenade
      Episode 26
      8/31/46
      9.8
      It's a moonlit night, and Tom wants to impress a cute female kitten (Toodles). So he brings a guitar, ties up Spike, the one guarding Toodles' property, and plays a serenade for Toodles. Unfortunately for Jerry, who happens to dwellMORE

    • Trap Happy
      Episode 25
      6/29/46
      9.8
      When Tom loses his patience with chasing Jerry constantly, he hires a mouse exterminator (Butch) to get rid of Jerry once and for all. Once Butch arrives, everything goes according to plan... but not for long. Jerry quickly gains theMORE
    • The Milky Waif
      Episode 24
      5/18/46
      9.6
      A baby mouse named Nibbles is sent to Jerry's mouse hole by the Bide-a-Wee Mouse Home with a request to take care of him. Since Nibbles is always hungry, particularly for milk, the two sneak over to a sleeping Tom'sMORE

    • 3/30/46
      9.7
      Tom is love with a white cat (Toodles) and does everything he can to please her. But Jerry is annoyed that Tom is ignoring him, so he sends a fake love letter to Butch that says it's from Toodles in order to break up the romance.
    • Quiet Please!
      Episode 22
      12/22/45
      9.9
      Tom is chasing Jerry as usual, but with all the ruckus, Spike can't get any sleep. At last, Spike grabs Tom by the collar and warns him that if he hears one more sound, he'll pulverize Tom. Upon listening toMORE
    • Flirty Birdy
      Episode 21
      9/22/45
      9.4
      Tom finally catches Jerry, but just when he's about to eat him, an eagle swoops in and snatches up Jerry for himself. Tom tries to get Jerry back, but the eagle won't allow it. So Tom comes up with aMORE

    • Tee for Two
      Episode 20
      7/21/45
      9.8
      Tom is at a gold course having fun golfing. But Jerry happens to live in one of the golf holes, and is annoyed whenever the golf ball falls on his head. Tom then decides to turn Jerry into a tee,MORE

    • Truce Hurts
      Episode 19
      3/7/11
      0.0
    • 5/5/45
      9.9
      Tom calls his girlfriend (Toots) on the phone and invites her over for dinner. She gladly accepts, and comes over quickly. Tom uses Jerry as a servant to serve all of the food. This annoys Jerry greatly, so he does his best to ruin the evening for Tom.
    • Mouse Trouble
      Episode 17
      11/23/44
      9.9
      Tom finally receives a book in the mail that he'd been waiting for called How to Catch a Mouse. He attempts all of the tricks in the book on Jerry, but every single one of them backfires.

    • Flying Sorceress
      Episode 16
      3/7/11
      0.0

    • The Bodyguard
      Episode 15
      7/22/44
      9.8
      In a heroic effort, Jerry rescues Spike from the dogcatcher. Delighted, Spike repays him by saying whenever he needs help, just whistle; then dashes off. Feeling pleased with himself, Jerry is walking along but runs into Tom, who quickly luresMORE


    • The Zoot Cat
      Episode 13
      2/26/44
      9.7
      Tom goes to the house of a female cat that he's in love with (Sheikie) to give her Jerry as a gift. But Sheikie not only denies the gift, she calls Tom names including corny, and slams the door inMORE
    • Baby Puss
      Episode 12
      12/25/43
      9.1
      A little girl dresses up Tom to look like a baby. Jerry thinks this is hilarious, so when the girl leaves, he whistles to three alley cats to come see in order to humiliate Tom.
    • 6/26/43
      9.6
      It's not an ordinary cat-and-mouse chase between Tom and Jerry now. This time, it's an all-out war! Using everything from hen grenades to cheese graders to wooden boards to dynamite to fireworks, Tom and Jerry battle each other to the very end...
    • The Lonesome Mouse
      Episode 10
      5/22/43
      9.2
      After being framed by Jerry for breaking a vase, Mammy Two-Shoes permanently kicks Tom out of the house. Jerry is overjoyed that he has finally won. He indulges in all of Tom's pleasures, such as his milk and bed. ButMORE
    • Sufferin' Cats!
      Episode 9
      1/16/43
      9.2
      Tom is chasing Jerry as usual, but Jerry runs straight into another cat (Meathead). Meathead wants to eat Jerry, but Tom steps in and snatches him back. The two cats fight each other over Jerry, as the clever mouse runsMORE

    • 10/10/42
      9.3
      Tom is chasing Jerry on a farm, and Jerry hides behind a hen. The hen gets startled when Tom comes running over to where Jerry is, so she gives Tom a barrage of pecks on the head. Jerry dresses himselfMORE
    • 7/18/42
      8.8
      Tom and Jerry are at a bowling alley. Tom attempts to run Jerry over with a bowling ball again and again, but misses with every attempt, also getting himself hurt in the process.
    • Puss 'n' Toots
      Episode 6
      5/30/42
      9.7
      Mammy Two-Shoes brings home a cute little female kitten whom Tom immediately becomes smitten with. Tom tries to act cool around the kitten and presents her with gifts, and who else would want to sabotage this but Jerry?
    • Dog Trouble
      Episode 5
      4/18/42
      9.5
      Tom is chasing Jerry again, when they run into a bulldog (Spike). Spike gets angry and starts to chase Tom and Jerry. So instead of chasing each other, they decide to team up for the time in order to get back at Spike.
    • Fraidy Cat
      Episode 4
      1/17/42
      9.1
      On the radio, Tom listens to The Witching Hour, a radio show that tells scary stories that almost give Tom a heart attack. After seeing Tom's reaction to the radio show, Jerry schemes a way to scare Tom some more.MORE
    • 12/6/41
      9.7
      It's Christmas Eve, and Jerry is playing around the Christmas Tree. Jerry accidentally wakes up Tom, and a chase begins, ultimately taking Jerry out into the snow, and Tom shutting him out. Tom starts to regret this, however, and at the same time, Jerry starts to freeze...
    • The Midnight Snack
      Episode 2
      7/19/41
      9.8
      Jerry decides to have a midnight snack, but Tom prevents that from happening and has a snack himself. Mammy Two-Shoes thinks it was only Jerry and orders Tom to go after him.

    • Puss Gets the Boot
      Episode 1
      2/10/40
      9.1
      Tom's owner, Mammy Two-Shoes, warns Tom that if he breaks one more thing, he'll be thrown outside. Jerry takes advantage of this threat and does everything he can to frame Tom by breaking multiple objects.

Season 1 → View Guide

Season 2 → View Guide

Season 3 → View Guide