ok, after looking at your code, I decided to tweak my recommendations above.
Before anything else, we need to do some refactoring on your codes. All of the methods responsible for video data shares the same properties and variables.
for example let us take a look at the simple table below
+------------+-------+------+-------+--------+-------+-------+-------+
+ Provider + thumb + size + embed + iframe + url + site + title +
+------------+-------+------+-------+--------+-------+-------+-------+
+ youtube + false + true + false + false + false + false + true +
+------------+-------+------+-------+--------+-------+-------+-------+
+ imgur + true + true + false + false + false + false + true +
+------------+-------+------+-------+--------+-------+-------+-------+
+ deviantart + true + true + false + false + false + false + true +
+------------+-------+------+-------+--------+-------+-------+-------+
+ soundcloud + true + true + false + true + true + false + true +
+------------+------------+---------+--------+-------+-------+-------+
With simple analysis of the table above, we can easily draw a simple conclusion that the nearest values of the columns where the video providers can have very minimal differences is when we define the default values as shown on the table below..
+------------+-------+------+-------+--------+-------+-------+-------+
+ Provider + thumb + size + embed + iframe + url + site + title +
+------------+-------+------+-------+--------+-------+-------+-------+
+ default + true + true + false + false + false + false + true +
+------------+-------+------+-------+--------+-------+-------+-------+
All video providers are also utilizing either oembed_size() and oembed_title() OR og_size() and og_title methods. All video providers also uses these variables $code and $res.
Those …