This file is indexed.

/usr/share/amsn/plugins/jake/youtube.tcl is in amsn-data 0.98.9-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
proc youtubeparseArgs { string_text } {
    #element 1 from list = text to search
    #element 2 from list = number of results to show
    #element 3 from list = status (ok if everything is ok, else err) 

    #if string starts with " and ends with " there are no other args
    #elseif string starts with " and has at least one more ". We might have aditional args!
    #else string isn't well formatted.
    if { [regexp -- {^".*"$} $string_text] } {
	#remove first char
	set string_text [string range $string_text 1 end]
	#remove last char
	set string_text [string range $string_text 0 [expr [string length $string_text] - 2]]
	set arguments [list $string_text $::jake::config(nresultsyoutube) "ok"]
    } elseif { [regexp -- {^".*"} $string_text] } {
	#search for the first index of "
	set first_index [string first \" $string_text]
	#search for the last index of "
	set last_index [string last \" $string_text]
	#get the number of results to show and remove spaces
	set number_of_results [string range $string_text [expr $last_index + 1] [string length $string_text]]
	regsub -all { +} $number_of_results {} number_of_results
	#get the string between "
	set string_text [string range $string_text 1 [expr $last_index - 1]]
	#check if the string containing the number of results is integer
	if { [string is integer -strict $number_of_results] } {
	    set arguments [list $string_text $number_of_results "ok"]
	} else {
	    set arguments [list "" 0 "err"]
	}
    } else {
	set arguments [list "" 0 "err"]
    }
    return $arguments
}

proc youtubesearchVideos { string_text number_of_results } {
    #we need this
    package require http

    set query [httpformatQuery q $string_text max-results $number_of_results v 2]
    set token [::http::geturl http://gdata.youtube.com/feeds/api/videos?$query -timeout 8000]
    set ncode [::http::ncode $token]
    set data [::http::data $token]
    ::http::cleanup $token

    set matches [regexp -all -inline {<title>.*?href='.*?'/>} $data]
    set count 0
    foreach match $matches {
	regexp {<title>(.*?)</title>.*href='(.*?)'/>} $match => title url
	incr count
	if { $count > 1 } {
	    append results [expr $count - 1].\ $title " - " $url \n\n
	}
    }
    #remove the last \n\n
    set results [string range $results 0 [expr [string length $results] - 3]]
    return $results
}

proc youtubedownloadMp3 { url } {
    #TODO
}

proc youtubedownloadVideo { url } {
    #TODO
}