scarletsfiction/littleyoutube

This package is abandoned and no longer maintained. The author suggests using the scarletsfiction/littleyoutube package instead.

LittleYoutube is a library for retrieving youtube data with PHP script

1.3.0 2019-08-09 12:26 UTC

This package is auto-updated.

Last update: 2020-10-26 06:09:59 UTC


README

687474703a2f2f616e69736963732e73747265616d2f6173736574732f696d672f737570706f72742d62616467652e706e67 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

Warn:
Youtube doesn't like their content being scraped. Please respect their service by not use this library as a scraping bot or a replacement for their website.

This library is developed to help the community.

Table of contents

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

{
    // Must be set to save the decipher logic
    "temporaryDirectory"=>realpath("./temp"),

    // View the decipher logic as a text
    "signatureDebug"=>false || realpath("./signatureDebug.log"),

    // Get the detailed info
    "processDetail"=>true,

    // Optional if the video can't be downloaded on some country
    "useRedirector"=>false,

    // Will be slow because all url header will be checked
    "loadVideoSize"=>false,

    // Parse from VideoInfo or VideoPage
    "processVideoFrom"=>"VideoInfo" || "VideoPage"
}

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"
    }
}

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]=>{
            "playlistID"=>""
            "title"=>"",
            "length"=>0
        },
        ...
    ]

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

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

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.

Don't forget to follow me ^.^)/

License

LittleYoutube is under the MIT license.