2022-02-26 10:45:43 +00:00
<!doctype html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2022-03-26 17:56:06 +00:00
< meta name = "generator" content = "pdoc 10.0.4" / >
2022-02-26 10:45:43 +00:00
< title > piped_api API documentation< / title >
< style > / * ! * B o o t s t r a p R e b o o t v 5 . 0 . 0 ( h t t p s : / / g e t b o o t s t r a p . c o m / ) * C o p y r i g h t 2 0 1 1 - 2 0 2 1 T h e B o o t s t r a p A u t h o r s * C o p y r i g h t 2 0 1 1 - 2 0 2 1 T w i t t e r , I n c . * L i c e n s e d u n d e r M I T ( h t t p s : / / g i t h u b . c o m / t w b s / b o o t s t r a p / b l o b / m a i n / L I C E N S E ) * F o r k e d f r o m N o r m a l i z e . c s s , l i c e n s e d M I T ( h t t p s : / / g i t h u b . c o m / n e c o l a s / n o r m a l i z e . c s s / b l o b / m a s t e r / L I C E N S E . m d ) * / * , : : a f t e r , : : b e f o r e { b o x - s i z i n g : b o r d e r - b o x } @ m e d i a ( p r e f e r s - r e d u c e d - m o t i o n : n o - p r e f e r e n c e ) { : r o o t { s c r o l l - b e h a v i o r : s m o o t h } } b o d y { m a r g i n : 0 ; f o n t - f a m i l y : s y s t e m - u i , - a p p l e - s y s t e m , " S e g o e U I " , R o b o t o , " H e l v e t i c a N e u e " , A r i a l , " N o t o S a n s " , " L i b e r a t i o n S a n s " , s a n s - s e r i f , " A p p l e C o l o r E m o j i " , " S e g o e U I E m o j i " , " S e g o e U I S y m b o l " , " N o t o C o l o r E m o j i " ; f o n t - s i z e : 1 r e m ; f o n t - w e i g h t : 4 0 0 ; l i n e - h e i g h t : 1 . 5 ; c o l o r : # 2 1 2 5 2 9 ; b a c k g r o u n d - c o l o r : # f f f ; - w e b k i t - t e x t - s i z e - a d j u s t : 1 0 0 % ; - w e b k i t - t a p - h i g h l i g h t - c o l o r : t r a n s p a r e n t } h r { m a r g i n : 1 r e m 0 ; c o l o r : i n h e r i t ; b a c k g r o u n d - c o l o r : c u r r e n t C o l o r ; b o r d e r : 0 ; o p a c i t y : . 2 5 } h r : n o t ( [ s i z e ] ) { h e i g h t : 1 p x } h 1 , h 2 , h 3 , h 4 , h 5 , h 6 { m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : . 5 r e m ; f o n t - w e i g h t : 5 0 0 ; l i n e - h e i g h t : 1 . 2 } h 1 { f o n t - s i z e : c a l c ( 1 . 3 7 5 r e m + 1 . 5 v w ) } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { h 1 { f o n t - s i z e : 2 . 5 r e m } } h 2 { f o n t - s i z e : c a l c ( 1 . 3 2 5 r e m + . 9 v w ) } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { h 2 { f o n t - s i z e : 2 r e m } } h 3 { f o n t - s i z e : c a l c ( 1 . 3 r e m + . 6 v w ) } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { h 3 { f o n t - s i z e : 1 . 7 5 r e m } } h 4 { f o n t - s i z e : c a l c ( 1 . 2 7 5 r e m + . 3 v w ) } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { h 4 { f o n t - s i z e : 1 . 5 r e m } } h 5 { f o n t - s i z e : 1 . 2 5 r e m } h 6 { f o n t - s i z e : 1 r e m } p { m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : 1 r e m } a b b r [ d a t a - b s - o r i g i n a l - t i t l e ] , a b b r [ t i t l e ] { - w e b k i t - t e x t - d e c o r a t i o n : u n d e r l i n e d o t t e d ; t e x t - d e c o r a t i o n : u n d e r l i n e d o t t e d ; c u r s o r : h e l p ; - w e b k i t - t e x t - d e c o r a t i o n - s k i p - i n k : n o n e ; t e x t - d e c o r a t i o n - s k i p - i n k : n o n e } a d d r e s s { m a r g i n - b o t t o m : 1 r e m ; f o n t - s t y l e : n o r m a l ; l i n e - h e i g h t : i n h e r i t } o l , u l { p a d d i n g - l e f t : 2 r e m } d l , o l , u l { m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : 1 r e m } o l o l , o l u l , u l o l , u l u l { m a r g i n - b o t t o m : 0 } d t { f o n t - w e i g h t : 7 0 0 } d d { m a r g i n - b o t t o m : . 5 r e m ; m a r g i n - l e f t : 0 } b l o c k q u o t e { m a r g i n : 0 0 1 r e m } b , s t r o n g { f o n t - w e i g h t : b o l d e r } s m a l l { f o n t - s i z e : . 8 7 5 e m } m a r k { p a d d i n g : . 2 e m ; b a c k g r o u n d - c o l o r : # f c f 8 e 3 } s u b , s u p { p o s i t i o n : r e l a t i v e ; f o n t - s i z e : . 7 5 e m ; l i n e - h e i g h t : 0 ; v e r t i c a l - a l i g n : b a s e l i n e } s u b { b o t t o m : - . 2 5 e m } s u p { t o p : - . 5 e m } a { c o l o r : # 0 d 6 e f d ; t e x t - d e c o r a t i o n : u n d e r l i n e } a : h o v e r { c o l o r : # 0 a 5 8 c a } a : n o t ( [ h r e f ] ) : n o t ( [ c l a s s ] ) , a : n o t ( [ h r e f ] ) : n o t ( [ c l a s s ] ) : h o v e r { c o l o r : i n h e r i t ; t e x t - d e c o r a t i o n : n o n e } c o d e , k b d , p r e , s a m p { f o n t - f a m i l y : S F M o n o - R e g u l a r , M e n l o , M o n a c o , C o n s o l a s , " L i b e r a t i o n M o n o " , " C o u r i e r N e w " , m o n o s p a c e ; f o n t - s i z e : 1 e m ; d i r e c t i o n : l t r ; u n i c o d e - b i d i : b i d i - o v e r r i d e } p r e { d i s p l a y : b l o c k ; m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : 1 r e m ; o v e r f l o w : a u t o ; f o n t - s i z e : . 8 7 5 e m } p r e c o d e { f o n t - s i z e : i n h e r i t ; c o l o r : i n h e r i t ; w o r d - b r e a k : n o r m a l } c o d e { f o n t - s i z e : . 8 7 5 e m ; c o l o r : # d 6 3 3 8 4 ; w o r d - w r a p : b r e a k - w o r d } a > c o d e { c o l o r : i n h e r i t } k b d { p a d d i n g : . 2 r e m . 4 r e m ; f o n t - s i z e : . 8 7 5 e m ; c o l o r : # f f f ; b a c k g r o u n d - c o l o r : # 2 1 2 5 2 9 ; b o r d e r - r a d i u s : . 2 r e m } k b d k b d { p a d d i n g : 0 ; f o n t - s i z e : 1 e m ; f o n t - w e i g h t : 7 0 0 } f i g u r e { m a r g i n : 0 0 1 r e m } i m g , s v g { v e r t i c a l - a l i g n : m i d d l e } t a b l e { c a p t i o n - s i d e : b o t t o m ; b o r d e r - c o l l a p s e : c o l l a p s e } c a p t i o n { p a d d i n g - t o p : . 5 r e m ; p a d d i n g - b o t t o m : . 5 r e m ; c o l o r : # 6 c 7 5 7 d ; t e x t - a l i g n : l e f t } t h { t e x t - a l i g n : i n h e r i t ; t e x t - a l i g n : - w e b k i t - m a t c h - p a r e n t } t b o d y , t d , t f o o t , t h , t h e a d , t r { b o r d e r - c o l o r : i n h e r i t ; b o r d e r - s t y l e : s o l i d ; b o r d e r - w i d t h : 0 } l a b e l { d i s p l a y : i n l i n e - b l o c k } b u t t o n { b o r d e r - r a d i u s : 0 } b u t t o n : f o c u s : n o t ( : f o c u s - v i s i b l e ) { o u t l i n e : 0 } b u t t o n , i n p u t , o p t g r o u p , s e l e c t , t e x t a r e a { m a r g i n : 0 ; f o n t - f a m i l y : i n h e r i t ; f o n t - s i z e : i n h e r i t ; l i n e - h e i g h t : i n h e r i t } b u t t o n , s e l e c t { t e x t - t r a n s f o r m : n o n e } [ r o l e = b u t t o n ] { c u r s o r : p o i n t e r } s e l e c t { w o r d - w r a p : n o r m a l } s e l e c t : d i s a b l e d { o p a c i t y : 1 } [ l i s t ] : : - w e b k i t - c a l e n d a r - p i c k e r - i n d i c a t o r { d i s p l a y : n o n e } [ t y p e = b u t t o n ] , [ t y p e = r e s e t ] , [ t y p e = s u b m i t ] , b u t t o n { - w e b k i t - a p p e a r a n c e : b u t t o n } [ t y p e = b u t t o n ] : n o t ( : d i s a b l e d ) , [ t y p e = r e s e t ] : n o t ( : d i s a b l e d ) , [ t y p e = s u b m i t ] : n o t ( : d i s a b l e d ) , b u t t o n : n o t ( : d i s a b l e d ) { c u r s o r : p o i n t e r } : : - m o z - f o c u s - i n n e r { p a d d i n g : 0 ; b o r d e r - s t y l e : n o n e } t e x t a r e a { r e s i z e : v e r t i c a l } f i e l d s e t { m i n - w i d t h : 0 ; p a d d i n g : 0 ; m a r g i n : 0 ; b o r d e r : 0 } l e g e n d { f l o a t : l e f t ; w i d t h : 1 0 0 % ; p a d d i n g : 0 ; m a r g i n - b o t t o m : . 5 r e m ; f o n t - s i z e : c a l c ( 1 . 2 7 5 r e m + . 3 v w ) ; l i n e - h e i g h t : i n h e r i t } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { l e g e n d { f o n t - s i z e : 1 . 5 r e m } } l e g e n d + * { c l e a r : l e f t } : : - w e b k i t - d a t e t i m e - e d i t - d a y - f i e l d , : : - w e b k i t - d a t e t i m e - e d i t - f i e l d s - w r a p p e r , : : - w e b k i t - d a t e t i m e - e d i t - h o u r - f i e l d , : : - w e b k i t - d a t e t i m e - e d i t - m i n u t e , : : - w e b k i t - d a t e t i m e - e d i t - m o n t h - f i e
< style > /*! syntax-highlighting.css */ pre { line-height : 125 % ; } span . linenos { color : inherit ; background-color : transparent ; padding-left : 5 px ; padding-right : 20 px ; } . pdoc-code . hll { background-color : #ffffcc } . pdoc-code { background : #f8f8f8 ; } . pdoc-code . c { color : #3D7B7B ; font-style : italic } . pdoc-code . err { border : 1 px solid #FF0000 } . pdoc-code . k { color : #008000 ; font-weight : bold } . pdoc-code . o { color : #666666 } . pdoc-code . ch { color : #3D7B7B ; font-style : italic } . pdoc-code . cm { color : #3D7B7B ; font-style : italic } . pdoc-code . cp { color : #9C6500 } . pdoc-code . cpf { color : #3D7B7B ; font-style : italic } . pdoc-code . c1 { color : #3D7B7B ; font-style : italic } . pdoc-code . cs { color : #3D7B7B ; font-style : italic } . pdoc-code . gd { color : #A00000 } . pdoc-code . ge { font-style : italic } . pdoc-code . gr { color : #E40000 } . pdoc-code . gh { color : #000080 ; font-weight : bold } . pdoc-code . gi { color : #008400 } . pdoc-code . go { color : #717171 } . pdoc-code . gp { color : #000080 ; font-weight : bold } . pdoc-code . gs { font-weight : bold } . pdoc-code . gu { color : #800080 ; font-weight : bold } . pdoc-code . gt { color : #0044DD } . pdoc-code . kc { color : #008000 ; font-weight : bold } . pdoc-code . kd { color : #008000 ; font-weight : bold } . pdoc-code . kn { color : #008000 ; font-weight : bold } . pdoc-code . kp { color : #008000 } . pdoc-code . kr { color : #008000 ; font-weight : bold } . pdoc-code . kt { color : #B00040 } . pdoc-code . m { color : #666666 } . pdoc-code . s { color : #BA2121 } . pdoc-code . na { color : #687822 } . pdoc-code . nb { color : #008000 } . pdoc-code . nc { color : #0000FF ; font-weight : bold } . pdoc-code . no { color : #880000 } . pdoc-code . nd { color : #AA22FF } . pdoc-code . ni { color : #717171 ; font-weight : bold } . pdoc-code . ne { color : #CB3F38 ; font-weight : bold } . pdoc-code . nf { color : #0000FF } . pdoc-code . nl { color : #767600 } . pdoc-code . nn { color : #0000FF ; font-weight : bold } . pdoc-code . nt { color : #008000 ; font-weight : bold } . pdoc-code . nv { color : #19177C } . pdoc-code . ow { color : #AA22FF ; font-weight : bold } . pdoc-code . w { color : #bbbbbb } . pdoc-code . mb { color : #666666 } . pdoc-code . mf { color : #666666 } . pdoc-code . mh { color : #666666 } . pdoc-code . mi { color : #666666 } . pdoc-code . mo { color : #666666 } . pdoc-code . sa { color : #BA2121 } . pdoc-code . sb { color : #BA2121 } . pdoc-code . sc { color : #BA2121 } . pdoc-code . dl { color : #BA2121 } . pdoc-code . sd { color : #BA2121 ; font-style : italic } . pdoc-code . s2 { color : #BA2121 } . pdoc-code . se { color : #AA5D1F ; font-weight : bold } . pdoc-code . sh { color : #BA2121 } . pdoc-code . si { color : #A45A77 ; font-weight : bold } . pdoc-code . sx { color : #008000 } . pdoc-code . sr { color : #A45A77 } . pdoc-code . s1 { color : #BA2121 } . pdoc-code . ss { color : #19177C } . pdoc-code . bp { color : #008000 } . pdoc-code . fm { color : #0000FF } . pdoc-code . vc { color : #19177C } . pdoc-code . vg { color : #19177C } . pdoc-code . vi { color : #19177C } . pdoc-code . vm { color : #19177C } . pdoc-code . il { color : #666666 } < / style >
< style > /*! theme.css */ : root { --pdoc-background : #fff ; } . pdoc { --text : #212529 ; --muted : #6c757d ; --link : #3660a5 ; --link-hover : #1659c5 ; --code : #f8f8f8 ; --active : #fff598 ; --accent : #eee ; --accent2 : #c1c1c1 ; --nav-hover : rgba ( 255 , 255 , 255 , 0.5 ) ; --name : #0066BB ; --def : #008800 ; --annotation : #007020 ; } < / style >
< style > /*! layout.css */ html , body { width : 100 % ; height : 100 % ; } html , main { scroll-behavior : smooth ; } body { background-color : var ( - - pdoc - background ) ; } @ media ( max-width : 769px ) { # navtoggle { cursor : pointer ; position : absolute ; width : 50 px ; height : 40 px ; top : 1 rem ; right : 1 rem ; border-color : var ( - - text ) ; color : var ( - - text ) ; display : flex ; opacity : 0.8 ; } # navtoggle : hover { opacity : 1 ; } # togglestate + div { display : none ; } # togglestate : checked + div { display : inherit ; } main , header { padding : 2 rem 3 vw ; } header + main { margin-top : -3 rem ; } . git-button { display : none !important ; } nav input [ type = "search" ] { max-width : 77 % ; } nav input [ type = "search" ] : first-child { margin-top : -6 px ; } nav input [ type = "search" ] : valid ~ * { display : none !important ; } } @ media ( min-width : 770px ) { : root { --sidebar-width : clamp ( 12.5 rem , 28 vw , 22 rem ) ; } nav { position : fixed ; overflow : auto ; height : 100 vh ; width : var ( - - sidebar - width ) ; } main , header { padding : 3 rem 2 rem 3 rem calc ( var ( - - sidebar - width ) + 3 rem ) ; width : calc ( 54 rem + var ( - - sidebar - width ) ) ; max-width : 100 % ; } header + main { margin-top : -4 rem ; } # navtoggle { display : none ; } } # togglestate { position : absolute ; height : 0 ; } nav . pdoc { --pad : 1.75 rem ; --indent : 1.5 rem ; background-color : var ( - - accent ) ; border-right : 1 px solid var ( - - accent2 ) ; box-shadow : 0 0 20 px rgba ( 50 , 50 , 50 , .2 ) inset ; padding : 0 0 0 var ( - - pad ) ; overflow-wrap : anywhere ; scrollbar-width : thin ; scrollbar-color : var ( - - accent2 ) transparent } nav . pdoc :: -webkit-scrollbar { width : .4 rem ; } nav . pdoc :: -webkit-scrollbar-thumb { background-color : var ( - - accent2 ) ; } nav . pdoc > div { padding : var ( - - pad ) 0 ; } nav . pdoc . module-list-button { display : inline-flex ; align-items : center ; color : var ( - - text ) ; border-color : var ( - - muted ) ; margin-bottom : 1 rem ; } nav . pdoc . module-list-button : hover { border-color : var ( - - text ) ; } nav . pdoc input [ type = search ] { display : block ; outline-offset : 0 ; width : calc ( 100 % - var ( - - pad ) ) ; } nav . pdoc . logo { max-width : calc ( 100 % - var ( - - pad ) ) ; max-height : 35 vh ; display : block ; margin : 0 auto 1 rem ; transform : translate ( calc ( -.5 * var ( - - pad ) ) , 0 ) ; } nav . pdoc ul { list-style : none ; padding-left : 0 ; } nav . pdoc li { display : block ; margin : 0 ; padding : .2 rem 0 .2 rem var ( - - indent ) ; transition : all 100 ms ; } nav . pdoc > div > ul > li { padding-left : 0 ; } nav . pdoc li : hover { background-color : var ( - - nav - hover ) ; } nav . pdoc a , nav . pdoc a : hover { color : var ( - - text ) ; } nav . pdoc a { display : block ; } nav . pdoc > h2 : first-of-type { margin-top : 1.5 rem ; } nav . pdoc . class : before { content : "class " ; color : var ( - - muted ) ; } nav . pdoc . function : after { content : "()" ; color : var ( - - muted ) ; } nav . pdoc footer : before { content : "" ; display : block ; width : calc ( 100 % - var ( - - pad ) ) ; border-top : solid var ( - - accent2 ) 1 px ; margin-top : 1.5 rem ; padding-top : .5 rem ; } nav . pdoc footer { font-size : small ; } < / style >
2022-03-26 17:56:06 +00:00
< style > /*! content.css */ . pdoc { color : var ( - - text ) ; box-sizing : border-box ; line-height : 1.5 ; background : none ; } . pdoc . pdoc-button { display : inline-block ; border : solid black 1 px ; border-radius : 2 px ; font-size : .75 rem ; padding : calc ( 0.5 em - 1 px ) 1 em ; transition : 100 ms all ; } . pdoc . visually-hidden { position : absolute !important ; width : 1 px !important ; height : 1 px !important ; padding : 0 !important ; margin : -1 px !important ; overflow : hidden !important ; clip : rect ( 0 , 0 , 0 , 0 ) !important ; white-space : nowrap !important ; border : 0 !important ; } . pdoc h1 , . pdoc h2 , . pdoc h3 { font-weight : 300 ; margin : .3 em 0 ; padding : .2 em 0 ; } . pdoc a { text-decoration : none ; color : var ( - - link ) ; } . pdoc a : hover { color : var ( - - link - hover ) ; } . pdoc blockquote { margin-left : 2 rem ; } . pdoc pre { border-top : 1 px solid var ( - - accent2 ) ; border-bottom : 1 px solid var ( - - accent2 ) ; margin-top : 0 ; margin-bottom : 1 em ; padding : .5 rem 0 .5 rem .5 rem ; overflow-x : auto ; background-color : var ( - - code ) ; } . pdoc code { color : var ( - - text ) ; padding : .2 em .4 em ; margin : 0 ; font-size : 85 % ; background-color : var ( - - code ) ; border-radius : 6 px ; } . pdoc a > code { color : inherit ; } . pdoc pre > code { display : inline-block ; font-size : inherit ; background : none ; border : none ; padding : 0 ; } . pdoc section { margin-bottom : 1.5 rem ; } . pdoc . modulename { margin-top : 0 ; font-weight : bold ; } . pdoc . modulename a { color : var ( - - link ) ; transition : 100 ms all ; } . pdoc . git-button { float : right ; border : solid var ( - - link ) 1 px ; } . pdoc . git-button : hover { background-color : var ( - - link ) ; color : var ( - - pdoc - background ) ; } . pdoc details { filter : opacity ( 1 ) ; } . pdoc details : not ( [ open ] ) { height : 0 ; } . pdoc details > summary { position : absolute ; top : -35 px ; right : 0 ; font-size : .75 rem ; color : var ( - - muted ) ; padding : 0 .7 em ; user-select : none ; cursor : pointer ; } . pdoc details > summary : focus { outline : 0 ; } . pdoc . docstring { margin-bottom : 1.5 rem ; } . pdoc > section : first-of-type > . docstring { margin-bottom : 2.5 rem ; } . pdoc . docstring . pdoc-code { margin-left : 1 em ; margin-right : 1 em ; } . pdoc h1 : target , . pdoc h2 : target , . pdoc h3 : target , . pdoc h4 : target , . pdoc h5 : target , . pdoc h6 : target { background-color : var ( - - active ) ; box-shadow : -1 rem 0 0 0 var ( - - active ) ; } . pdoc div : target > . attr , . pdoc section : target > . attr , . pdoc dd : target > a { background-color : var ( - - active ) ; } . pdoc . attr : hover { filter : contrast ( 0.95 ) ; } . pdoc . headerlink { position : absolute ; width : 0 ; margin-left : -1.5 rem ; line-height : 1.4 rem ; font-size : 1.5 rem ; font-weight : normal ; transition : all 100 ms ease-in-out ; opacity : 0 ; user-select : none ; } . pdoc . attr > . headerlink { margin-left : -2.5 rem ; } . pdoc * : hover > . headerlink , . pdoc * : target > . attr > . headerlink { opacity : 1 ; } . pdoc . attr { display : block ; color : var ( - - text ) ; margin : .5 rem 0 .5 rem ; padding : .4 rem 5 rem .4 rem 1 rem ; background-color : var ( - - accent ) ; } . pdoc . classattr { margin-left : 2 rem ; } . pdoc . name { color : var ( - - name ) ; font-weight : bold ; } . pdoc . def { color : var ( - - def ) ; font-weight : bold ; } . pdoc . signature { white-space : pre-wrap ; } . pdoc . annotation { color : var ( - - annotation ) ; } . pdoc . inherited { margin-left : 2 rem ; } . pdoc . inherited dt { font-weight : 700 ; } . pdoc . inherited dt , . pdoc . inherited dd { display : inline ; margin-left : 0 ; margin-bottom : .5 rem ; } . pdoc . inherited dd : not ( : last-child ) : after { content : ", " ; } . pdoc . inherited . class : before { content : "class " ; } . pdoc . inherited . function a : after { content : "()" ; } . pdoc . search-result . docstring { overflow : auto ; max-height : 25 vh ; } . pdoc . search-result . focused > . attr { background-color : var ( - - active ) ; } . pdoc . attribution { margin-top : 2 rem ; display : block ; opacity : 0.5 ; transition : all 200 ms ; filter : grayscale ( 100 % ) ; } . pdoc . attribution : hover { opacity : 1 ; filter : grayscale ( 0 % ) ; } . pdoc . attribution img { margin-left : 5 px ; height : 35 px ; vertical-align : middle ; width : 70 px ; transition : all 200 ms ; } . pdoc table { display : block ; width : max-content ; max-width : 100 % ; overflow : auto ; margin-bottom : 1 rem ; } . pdoc table th { font-weight : 600 ; } . pdoc table th , . pdoc table td { padding : 6 px 13 px ; border : 1 px solid var ( - - accent2 ) ; } < / style >
2022-02-26 10:45:43 +00:00
< style > /*! custom.css */ < / style > < / head >
< body >
< nav class = "pdoc" >
< label id = "navtoggle" for = "togglestate" class = "pdoc-button" > < svg xmlns = 'http://www.w3.org/2000/svg' viewBox = '0 0 30 30' > < path stroke-linecap = 'round' stroke = "currentColor" stroke-miterlimit = '10' stroke-width = '2' d = 'M4 7h22M4 15h22M4 23h22' / > < / svg > < / label >
< input id = "togglestate" type = "checkbox" aria-hidden = "true" tabindex = "-1" >
< div >
< input type = "search" placeholder = "Search..." role = "searchbox" aria-label = "search"
pattern=".+" required>
2022-02-27 08:43:55 +00:00
< h2 > Contents< / h2 >
< ul >
< li > < a href = "#piped-api-client-python" > Piped API client (Python)< / a >
< ul >
< li > < a href = "#installation" > Installation< / a > < / li >
< li > < a href = "#quickstart" > Quickstart< / a > < / li >
< li > < a href = "#why" > Why?< / a > < / li >
< li > < a href = "#useful-links" > Useful links< / a > < / li >
< li > < a href = "#support-me" > 🎁 Support me< / a > < / li >
< / ul > < / li >
< / ul >
2022-02-26 10:45:43 +00:00
< h2 > Submodules< / h2 >
< ul >
< li > < a href = "piped_api/client.html" > piped_api.client< / a > < / li >
< li > < a href = "piped_api/models.html" > piped_api.models< / a > < / li >
< / ul >
< a class = "attribution" title = "pdoc: Python API documentation generator" href = "https://pdoc.dev" >
built with < span class = "visually-hidden" > pdoc< / span > < img
alt="pdoc logo"
src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.365-.306.49.49%200%200%200-.286-.196c-1.718-1.06-4.931-1.47-7.353.191l-.219.15c-1.707%201.187-3.413%202.131-4.328%201.03-.02-.027-.49-.685-.141-1.763.233-.721.546-2.408.772-4.076.042-.09.067-.187.046-.288.166-1.347.277-2.625.241-3.351%201.378-1.008%202.271-2.586%202.271-4.362%200-.976-.272-1.935-.788-2.774-.057-.094-.122-.18-.184-.268.033-.167.052-.339.052-.516%200-1.477-1.202-2.679-2.679-2.679-.791%200-1.496.352-1.987.9a6.3%206.3%200%200%200-1.001.029c-.492-.564-1.207-.929-2.012-.929-1.477%200-2.679%201.202-2.679%202.679A2.65%202.65%200%200%200%20.97%206.554c-.383.747-.595%201.572-.595%202.41%200%202.311%201.507%204.29%203.635%205.107-.037.699-.147%202.27-.423%203.294l-.137.461c-.622%202.042-2.515%208.257%201.727%2010.643%201.614.908%203.06%201.248%204.317%201.248%202.665%200%204.492-1.524%205.322-2.401%201.476-1.559%202.886-1.854%206.491.82%201.877%201.393%203.514%201.753%204.861%201.068%202.223-1.713%202.811-3.867%203.399-6.374.077-.846.056-1.469.054-1.537zm-4.835%204.313c-.054.305-.156.586-.242.629-.034-.007-.131-.022-.307-.157-.145-.111-.314-.478-.456-.908.221.121.432.25.675.355.115.039.219.051.33.081zm-2.251-1.238c-.05.33-.158.648-.252.694-.022.001-.125-.018-.307-.157-.217-.166-.488-.906-.639-1.573.358.344.754.693%201.198%201.036zm-3.887-2.337c-.006-.116-.018-.231-.041-.342.635.145%201.189.368%201.599.625.097.231.166.481.174.642-.03.049-.055.101-.067.158-.046.013-.128.026-.298.004-.278-.037-.901-.57-1.367-1.087zm-1.127-.497c.116.306.176.625.12.71-.019.014-.117.045-.345.016-.206-.027-.604-.332-.986-.695.41-.051.816-.056%201.211-.031zm-4.535%201.535c.209.22.379.47.358.598-.006.041-.088.138-.351.234-.144.055-.539-.063-.979-.259a11.66%2011.66%200%200%200%20.972-.573zm.983-.664c.359-.237.738-.418%201.126-.554.25.237.479.548.457.694-.006.042-.087.138-.351.235-.174.064-.694-.105-1.232-.375zm-3.381%201.794c-.022.145-.061.29-.149.401-.133.166-.358.248-.69.251h-.002c-.133%200-.306-.26-.45-.621.417.091.854.07%201.291-.031zm-2.066-8.077a4.78%204.78%200%200%201-.775-.584c.172-.115.505-.254.88-.378l-.105.962zm-.331%202.302a10.32%2010.32%200%200%201-.828-.502c.202-.143.576-.328.984-.49l-.156.992zm-.45%202.157l-.701-.403c.214-.115.536-.249.891-.376a11.57%2011.57%200%200%201-.19.779zm-.181%201.716c.064.398.194.702.298.893-.194-.051-.435-.162-.736-.398.061-.119.224-.3.438-.495zM8.87%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zm-.735-.389a1.15%201.15%200%200%200-.314.783%201.16%201.16%200%200%200%201.162%201.162c.457%200%20.842-.27%201.032-.653.026.117.042.238.042.362a1.68%201.68%200%200%201-1.679%201.679%201.68%201.68%200%200%201-1.679-1.679c0-.843.626-1.535%201.436-1.654zM5.059%205.406A1.68%201.68%200%200%201%203.38%207.085a1.68%201.68%200%200%201-1.679-1.679c0-.037.009-.072.011-.109.21.3.541.508.935.508a1.16%201.16%200%200%200%201.162-1.162%201.14%201.14%200%200%200-.474-.912c.015%200%20.03-.005.045-.005.926.001%201.679.754%201.679%201.68zM3.198%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zM1.375%208.964c0-.52.103-1.035.288-1.52.466.394%201.06.64%201.717.64%201.144%200%202.116-.725%202.499-1.738.383%201.012%201.355%201.738%202.499%201.738.867%200%201.631-.421%202.121-1.062.307.605.478%201.267.478%201.942%200%202.486-2.153%204.51-4.801%204.51s-4.801-2.023-4.801-4.51zm24.342%2019.349c-.985.498-2.267.168-3.813-.979-3.073-2.281-5.453-3.199-7.813-.705-1.315%201.391-4.163%203.365-8.423.97-3.174-1.786-2.239-6.266-1.261-9.479l.146-.492c.276-1.02.395-2.457.444-3.268a6.11%206.11%200%200%200%201.18.115%206.01%206.01%200%200%200%202.536-.562l-.006.175c-.802.215-1.848.612
< / a >
< / div >
< / nav >
< main class = "pdoc" >
< section >
< h1 class = "modulename" >
piped_api < / h1 >
2022-02-27 08:43:55 +00:00
< div class = "docstring" > < h1 id = "piped-api-client-python" > Piped API client (Python)< / h1 >
< p > < a href = "https://github.com/CWKevo/python-piped-api-client/actions/workflows/pytest.yml" > < img src = "https://github.com/CWKevo/python-piped-api-client/actions/workflows/pytest.yml/badge.svg?branch=master" alt = "Test with pyTest" / > < / a > < / p >
< p > A Python API wrapper for < a href = "https://piped-docs.kavin.rocks/" > Piped< / a > . This can essentially be used as an alternative way to access YouTube's API, without needing to use an API key.< / p >
< h2 id = "installation" > Installation< / h2 >
< div class = "pdoc-code codehilite" > < pre > < span > < / span > < code > pip install piped-api
< / code > < / pre > < / div >
< h2 id = "quickstart" > Quickstart< / h2 >
< p > Getting started is very easy:< / p >
< div class = "pdoc-code codehilite" > < pre > < span > < / span > < code > < span class = "kn" > from< / span > < span class = "nn" > piped_api< / span > < span class = "kn" > import< / span > < span class = "n" > PipedClient< / span >
< span class = "n" > CLIENT< / span > < span class = "o" > =< / span > < span class = "n" > PipedClient< / span > < span class = "p" > ()< / span >
< span class = "c1" > # Print out the first audio stream URL for a video:< / span >
< span class = "n" > video< / span > < span class = "o" > =< / span > < span class = "n" > CLIENT< / span > < span class = "o" > .< / span > < span class = "n" > get_video< / span > < span class = "p" > (< / span > < span class = "n" > video_id< / span > < span class = "p" > )< / span >
< span class = "n" > audio_stream< / span > < span class = "o" > =< / span > < span class = "n" > video< / span > < span class = "o" > .< / span > < span class = "n" > get_streams< / span > < span class = "p" > (< / span > < span class = "s1" > ' audio' < / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "sa" > f< / span > < span class = "s2" > " Audio stream URL: < / span > < span class = "si" > {< / span > < span class = "n" > audio_stream< / span > < span class = "o" > .< / span > < span class = "n" > url< / span > < span class = "si" > }< / span > < span class = "s2" > (< / span > < span class = "si" > {< / span > < span class = "n" > audio_stream< / span > < span class = "o" > .< / span > < span class = "n" > mime_type< / span > < span class = "si" > }< / span > < span class = "s2" > )" < / span > < span class = "p" > )< / span >
< / code > < / pre > < / div >
2022-03-26 17:56:06 +00:00
< p > You can find more examples in the < a href = "https://github.com/CWKevo/python-piped-api-client/tree/master/tests" > < code > tests< / code > < / a > folder.< / p >
2022-02-27 08:43:55 +00:00
< h2 id = "why" > Why?< / h2 >
2022-03-26 17:56:06 +00:00
<!-- Soon... maybe.
This package has allowed me to start creating my open-source project, [ArchiveTube](https://github.com/CWKevo/ArchiveTube) - a scrapper and archive for YouTube content (videos and comments) - to preserve them and make them available to anyone, with ability to search for comments and videos. View hall of fame (most liked comments and videos), bring back dislikes via [ReturnYouTubeDislike.com](https://returnyoutubedislike.com), view deleted content and much more!
Google has showed us that they make YouTube own us by harvesting our data. This is also followed by non-throught out decisions, which their users aren't happy with. Let's do it the other way around this time by reclaiming our content and entertainment back & make YouTube great again!
-->
2022-02-27 08:43:55 +00:00
2022-03-26 17:56:06 +00:00
< p > The creation of this package was primarily fueled by the same type of motivation < a href = "https://piped-docs.kavin.rocks/docs/why/" > Piped has< / a > .< / p >
2022-02-27 08:43:55 +00:00
< p > Google's API is not very easy-to-use - you must obtain some JSON thingy to use it, and it is very low-level and not very user-friendly.
On the other hand, this package accessed the < a href = "https://piped.kavin.rocks/" > Piped API< / a > , which has a much more high-level API and doesn't need an account or API keys.< / p >
< p > It is not meant to be a replacement for the official YouTube API, but it can help you to cut the strings that Google attaches to you when using their API.< / p >
< h2 id = "useful-links" > Useful links< / h2 >
< ul >
< li > < a href = "https://piped-docs.kavin.rocks/docs/api-documentation/" > Piped's official API documentation< / a > < / li >
< li > < a href = "https://cwkevo.github.io/python-piped-api-client/" > Documentation for this package< / a > < / li >
< / ul >
< h2 id = "support-me" > 🎁 Support me< / h2 >
< p > I create free software to benefit people.
If this project helps you and you like it, consider supporting me by donating via cryptocurrency:< / p >
2022-02-27 09:17:34 +00:00
< table >
< thead >
< tr >
< th > Crypto< / th >
< th > Address< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > Bitcoin< / td >
< td > < a href = "mailto:me@kevo.link" > E-mail me< / a > < / td >
< / tr >
< tr >
< td > Ethereum< / td >
< td > < code > 0x12C598b3bC084710507c9d6d19C9434fD26864Cc< / code > < / td >
< / tr >
< tr >
< td > Litecoin< / td >
< td > < code > LgHQK1NQrRQ56AKvVtSxMubqbjSWh7DTD2< / code > < / td >
< / tr >
< tr >
< td > Dash< / td >
< td > < code > Xe7TYoRCYPdZyiQYDjgzCGxR5juPWV8PgZ< / code > < / td >
< / tr >
< tr >
< td > Zcash:< / td >
< td > < code > t1Pesobv3SShMHGfrZWe926nsnBo2pyqN3f< / code > < / td >
< / tr >
< tr >
< td > Dogecoin:< / td >
< td > < code > DALxrKSbcCXz619QqLj9qKXFnTp8u2cS12< / code > < / td >
< / tr >
< tr >
< td > Ripple:< / td >
< td > < code > rNQsgQvMbbBAd957XyDeNudA4jLH1ANERL< / code > < / td >
< / tr >
< tr >
< td > Monero:< / td >
< td > < code > 48TfTddnpgnKBn13MdJNJwHfxDwwGngPgL3v6bNSTwGaXveeaUWzJcMUVrbWUyDSyPDwEJVoup2gmDuskkcFuNG99zatYFS< / code > < / td >
< / tr >
< tr >
< td > Bitcoin Cash:< / td >
< td > < code > qzx6pqzcltm7ely24wnhpzp65r8ltrqgeuevtrsj9n< / code > < / td >
< / tr >
< tr >
< td > Ethereum Classic:< / td >
< td > < code > 0x383Dc3B83afBD66b4a5e64511525FbFeb2C023Db< / code > < / td >
< / tr >
< / tbody >
< / table >
2022-02-27 08:43:55 +00:00
< p > More cryptocurrencies are supported. If you are interested in donating with a different one, please < a href = "mailto:me@kevo.link" > E-mail me< / a > .
No other forms of donation are currently supported.< / p >
2022-02-27 08:38:29 +00:00
< / div >
2022-02-26 10:45:43 +00:00
< details >
< summary > View Source< / summary >
< div class = "pdoc-code codehilite" > < pre > < span > < / span > < span class = "kn" > import< / span > < span class = "nn" > typing< / span > < span class = "k" > as< / span > < span class = "nn" > t< / span >
2022-02-27 08:38:29 +00:00
< span class = "kn" > from< / span > < span class = "nn" > pathlib< / span > < span class = "kn" > import< / span > < span class = "n" > Path< / span >
2022-02-26 10:45:43 +00:00
< span class = "kn" > from< / span > < span class = "nn" > .client< / span > < span class = "kn" > import< / span > < span class = "n" > PipedClient< / span >
< span class = "kn" > from< / span > < span class = "nn" > .models.comments< / span > < span class = "kn" > import< / span > < span class = "n" > Comments< / span >
2022-02-27 08:38:29 +00:00
< span class = "c1" > # For pdoc:< / span >
2022-02-27 08:43:55 +00:00
< span class = "n" > README_PATH< / span > < span class = "o" > =< / span > < span class = "n" > Path< / span > < span class = "p" > (< / span > < span class = "vm" > __file__< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > parent< / span > < span class = "o" > .< / span > < span class = "n" > parent< / span > < span class = "o" > .< / span > < span class = "n" > absolute< / span > < span class = "p" > ()< / span > < span class = "o" > /< / span > < span class = "n" > Path< / span > < span class = "p" > (< / span > < span class = "s1" > ' README.md' < / span > < span class = "p" > )< / span >
2022-02-27 08:38:29 +00:00
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "k" > with< / span > < span class = "nb" > open< / span > < span class = "p" > (< / span > < span class = "n" > README_PATH< / span > < span class = "p" > ,< / span > < span class = "s1" > ' r' < / span > < span class = "p" > ,< / span > < span class = "n" > encoding< / span > < span class = "o" > =< / span > < span class = "s2" > " UTF-8" < / span > < span class = "p" > )< / span > < span class = "k" > as< / span > < span class = "n" > readme< / span > < span class = "p" > :< / span >
< span class = "n" > __readme__< / span > < span class = "o" > =< / span > < span class = "n" > readme< / span > < span class = "o" > .< / span > < span class = "n" > read< / span > < span class = "p" > ()< / span >
< span class = "k" > except< / span > < span class = "p" > :< / span >
< span class = "n" > __readme__< / span > < span class = "o" > =< / span > < span class = "s2" > " Failed to read README.md!" < / span >
< span class = "vm" > __doc__< / span > < span class = "o" > =< / span > < span class = "n" > __readme__< / span >
2022-02-26 10:45:43 +00:00
< span class = "c1" > # Supress unused-import warnings:< / span >
< span class = "k" > if< / span > < span class = "n" > t< / span > < span class = "o" > .< / span > < span class = "n" > TYPE_CHECKING< / span > < span class = "p" > :< / span >
< span class = "n" > _< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > PipedClient< / span > < span class = "p" > ,< / span > < span class = "n" > Comments< / span > < span class = "p" > ]< / span >
< / pre > < / div >
< / details >
< / section >
< / main >
< script >
function escapeHTML(html) {
return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML;
}
const originalContent = document.querySelector("main.pdoc");
let currentContent = originalContent;
function setContent(innerHTML) {
let elem;
if (innerHTML) {
elem = document.createElement("main");
elem.classList.add("pdoc");
elem.innerHTML = innerHTML;
} else {
elem = originalContent;
}
if (currentContent !== elem) {
currentContent.replaceWith(elem);
currentContent = elem;
}
}
function getSearchTerm() {
return (new URL(window.location)).searchParams.get("search");
}
const searchBox = document.querySelector(".pdoc input[type=search]");
searchBox.addEventListener("input", function () {
let url = new URL(window.location);
if (searchBox.value.trim()) {
url.hash = "";
url.searchParams.set("search", searchBox.value);
} else {
url.searchParams.delete("search");
}
history.replaceState("", "", url.toString());
onInput();
});
window.addEventListener("popstate", onInput);
let search, searchErr;
async function initialize() {
try {
search = await new Promise((resolve, reject) => {
const script = document.createElement("script");
script.type = "text/javascript";
script.async = true;
script.onload = () => resolve(window.pdocSearch);
script.onerror = (e) => reject(e);
script.src = "search.js";
document.getElementsByTagName("head")[0].appendChild(script);
});
} catch (e) {
console.error("Cannot fetch pdoc search index");
searchErr = "Cannot fetch search index.";
}
onInput();
document.querySelector("nav.pdoc").addEventListener("click", e => {
if (e.target.hash) {
searchBox.value = "";
searchBox.dispatchEvent(new Event("input"));
}
});
}
function onInput() {
setContent((() => {
const term = getSearchTerm();
if (!term) {
return null
}
if (searchErr) {
return `< h3 > Error: ${searchErr}< / h3 > `
}
if (!search) {
return "< h3 > Searching...< / h3 > "
}
window.scrollTo({top: 0, left: 0, behavior: 'auto'});
const results = search(term);
let html;
if (results.length === 0) {
html = `No search results for '${escapeHTML(term)}'.`
} else {
html = `< h4 > ${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.< / h4 > `;
}
for (let result of results.slice(0, 10)) {
let doc = result.doc;
let url = `${doc.modulename.replaceAll(".", "/")}.html`;
if (doc.qualname) {
url += `#${doc.qualname}`;
}
let heading;
switch (result.doc.type) {
case "function":
heading = `< span class = "def" > ${doc.funcdef}< / span > < span class = "name" > ${doc.fullname}< / span > < span class = "signature" > ${doc.signature}:< / span > `;
break;
case "class":
heading = `< span class = "def" > class< / span > < span class = "name" > ${doc.fullname}< / span > `;
if (doc.bases)
heading += `< wbr > (< span class = "base" > ${doc.bases}< / span > )`;
heading += `:`;
break;
case "variable":
heading = `< span class = "name" > ${doc.fullname}< / span > `;
if (doc.annotation)
heading += `< span class = "annotation" > ${doc.annotation}< / span > `;
if (doc.default_value)
heading += `< span class = "default_value" > ${doc.default_value}< / span > `;
break;
default:
heading = `< span class = "name" > ${doc.fullname}< / span > `;
break;
}
html += `
< section class = "search-result" >
< a href = "${url}" class = "attr ${doc.type}" > ${heading}< / a >
< div class = "docstring" > ${doc.doc}< / div >
< / section >
`;
}
return html;
})());
}
if (getSearchTerm()) {
initialize();
searchBox.value = getSearchTerm();
onInput();
} else {
searchBox.addEventListener("focus", initialize, {once: true});
}
searchBox.addEventListener("keydown", e => {
if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) {
let focused = currentContent.querySelector(".search-result.focused");
if (!focused) {
currentContent.querySelector(".search-result").classList.add("focused");
} else if (
e.key === "ArrowDown"
& & focused.nextElementSibling
& & focused.nextElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.nextElementSibling.classList.add("focused");
focused.nextElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "ArrowUp"
& & focused.previousElementSibling
& & focused.previousElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.previousElementSibling.classList.add("focused");
focused.previousElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "Enter"
) {
focused.querySelector("a").click();
}
}
});
< / script > < / body >
< / html >