PHP Classes
elePHPant
Icontem

Little YouTube PHP: Search and get data from YouTube videos

Recommend this page to a friend!
  Info   View files Documentation   View files View files (7)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2017-08-25 (26 days ago) RSS 2.0 feedNot yet rated by the usersTotal: 85 This week: 5All time: 8,833 This week: 128Up
Version License PHP version Categories
little-youtube-php 1.0The PHP License5PHP 5, Web services
Description Author

This package can search and get data from YouTube videos.

It calls YouTube API to retrieves several types of information about videos, playlist, channels and search results. Currently it can:

- Video: get video image preview, get embed link, parse subtitle, get video data
- Channel: get RSS URL, get channel data,
- Playlist: get playlist data
- Search: get search data, next result, previous result

  Performance   Level  
Name: StefansArya <contact>
Classes: 1 package by
Country: Indonesia Indonesia
Age: 21
All time rank: 408972 in Indonesia Indonesia
Week rank: 139 Up2 in Indonesia Indonesia Up

Details

<a href="https://www.patreon.com/stefansarya"><img src="http://anisics.stream/assets/img/support-badge.png" height="20"></a> Build Status Latest Version Software License

LittleYoutube

Have you ever dreamed put your own channel on your own website? LittleYoutube is here to help you

> Note: > Please use this library for fair use when downloading any youtube content. If you want to display youtube video to your website, please embed youtube link rather than download it. And don't ever use this for commercial use.

Table of contents

- LittleYoutube - Table of contents - Getting Started - Download via composer - Sample Usage - Documentation - LittleYoutube Options - Video Class

  - Get video image preview
  - Get embed link
  - Parse subtitle
  - Get video data

- Channel Class

  - Get RSS URL
  - Get channel data

- Playlist Class

  - Get playlist data

- Search Class

  - Get search data
  - Next result
  - Previous result

- Get last error message - Change settings dynamically - Contribution - License

Getting Started

> * Clone/download this repo > * Include LittleYoutube.php to your php script

Download via composer

Add LittleYoutube to composer.json configuration file.

$ composer require scarletsfiction/littleyoutube

And update it

$ composer update

Sample Usage

<?php
    // require 'vendor/autoload.php';
    require_once "LittleYoutube.php";

    use ScarletsFiction\LittleYoutube;

    $video = LittleYoutube::video("https://www.youtube.com/watch?v=xQomv1gqmb4");
    echo("Video ID:".$video->data['videoID']."\n");
    print_r($video->getVideoImages());

Documentation

LittleYoutube Options

Available options

{
    "temporaryDirectory"=>realpath(__DIR__."/temp"),
    "signatureDebug"=>false,
    "loadVideoSize"=>false,
    "processDetail"=>true
}

Video Class

> $video = LittleYoutube::video("videoURLHere", options); > > //Reinit video class > $video->init("videoURLHere");

Return video class

Get video image preview

> $video->getImage();

Return Indexed Array

[ "HighQualityURL", "MediumQualityURL", "DefaultQualityURL" ]

Get embed link

> $video->getEmbedLink();

// Usually we will wrap it with iframe

echo('<iframe width="480" height="360" src="'.$video->getEmbedLink().'" frameborder="0" allowfullscreen></iframe>');

Parse subtitle

> $video->parseSubtitle(args, asSRT); > > * args: subtitle index or xml string > * asSRT: return as srt format > * note: if you pass subtitle index, ProcessDetails must be enabled/called

[
    [0]=>[
        [time] => 1.31,
        [duration] => 6.609,
        [text]=>"in a single lifetime we can take a days"
    ],
    ...
]

Get video data

> $video->data; > > * You can also call $video->processDetails() to refresh data

Return Associative Array of current video data

{
    "videoID",

    //When ProcessDetail was enabled/called
    "playerID", "title", "duration", "viewCount", "like", "dislike", "author", "subtitle", "uploaded", "description", "metatag", "channelID",

    // Not available when ProcessDetails = false
    video=>{
        "encoded"=>[
            [0] => {
                "itag",
                "type"=>[
                    [0] => Media    //video
                    [1] => Format   //mp4
                    [2] => Encoder  //avc1.64001F, mp4a.40.2
                ],
                "expire",  //timestamp
                "quality", //hd720, medium, small
                "url",
                "size" //When loadVideoSize was enabled
            },
            ...
        ],
        "adaptive"=>[
            [0] => {
                "itag",
                "type"=>[
                    [0] => Media    //video
                    [1] => Format   //mp4
                    [2] => Encoder  //avc1.4d401f
                ],
                "expire",  //timestamp
                "quality", //1080p, 720p, 192k, 144k
                "url",
                "size" //When loadVideoSize was enabled
            },
            ...
        ],

        //If it's a live stream, then return m3u8 url only
        "stream"
    }

    //When signatureDebug was enabled
    "signature"=>{
        "playerID", //Log for current playerID 
        "log" //Last video log
    },
    ...
}

Channel Class

> $channel = LittleYoutube::channel("channelURLHere", options); > > //Reinit channel class > $channel->init("channelURLHere");

Return channel class

Get RSS URL

> $channel->getChannelRSS();

Return string

https://www.youtube.com/feeds/videos.xml?channel_id=...

Get channel data

> $channel->data; > > * You can also call $channel->processDetails() to refresh data

Return Associative Array of current channel data

{
    //Some data will available when ProcessDetail was enabled/called
    "channelID", "userID",

    "playlists"=>[
        [0]=>{
            "title", "playlistID"
        },
        ...
    ],
    "videos"=> [
        [0]=>{
            "title", "duration", "videoID"
         },
         ...
    ]
}

Playlist Class

> $playlist = LittleYoutube::playlist("playlistURLHere", options); > > //Reinit playlist class > $playlist->init("playlistURLHere");

Return playlist class

Get playlist data

> $playlist->data; > > * You can also call $playlist->processDetails() to refresh data

Return string

{
  //Some data will available when ProcessDetail was enabled/called
  "playlistID", "channelID", "userID",

  "userData"=>{
    "name", image
  },

  "videos"=>[
    [0]=>{
      "title", "videoID"
    }, 
    ...
  ]
}

Search Class

> $search = LittleYoutube::search("searchQueryHere", options); > > //Reinit search class > $search->init("searchQueryHere");

Return search class

Get search data

> $search->data; > > * You can also call $search->processDetails() to refresh data

Return string

{
  "query",

  // Not available when ProcessDetails = false
  "video"=>[
    [0]=>{
      "videoID", "title", "duration", "userID", "userName", "uploaded", "views"
    }
  ],

  //When available
  "next", "previous"
}

Next result

> $search->next();

This will add result from the next page to current data

Previous result

> $search->previous();

This will add result from the previous page to current data > Actually this is useless might

Get last error message

> $classes->error;

Return string

errorMsg //Failed to do stuff

Change settings dynamically

You can also change the settings after initialize LittleYoutube class > $classes->settings[options] = value;

Contribution

If you want to help in LittleYoutube library, please make it even better and start a pull request into it.

Keep it simple and keep it clear.

License

LittleYoutube is under the GPL license.

  Files folder image Files  
File Role Description
Files folder imagetests (1 file)
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file LICENSE Lic. License text
Plain text file LittleYoutube.php Class Class source
Accessible without login Plain text file phpunit.xml Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  tests  
File Role Description
  Accessible without login Plain text file index.php Example Example script

 Version Control Unique User Downloads Download Rankings  
 100%
Total:85
This week:5
All time:8,833
This week:128Up