Página 4 de 5

Re: semplice guida per creare un canale in Sod

Publicado: 06 Oct 2016, 07:30
por costaplus
Buongiorno @djdiabolik,
ti ha risposto @dentaku alla tua domanda, però ti consiglio di focalizzarti su di un problema alla volta e non cercare di capire tante cose insieme.
Per il momento pensa che devi creare con la nuova e prossima releases 2 file .py e .xml che avranno lo stesso nome e diverso da tutti gli altri canali.
Ora ti ho anche dato una bozza per iniziare e osserva bene i vari passaggi utilizzati, alcuni nomi che potrebbero sembrarti incomprensibili sono nomenclature che vengono lasciate per una questione di compatibilità e conoscenza di tutti gli sviluppatori, esempio il patron e il filtro regex.
Volevo anche farti presente che io ho iniziato nemmeno un'anno fa e non sapevo una cippa come te, ti assicuro che per avere risposte esaustive a volte passavano settimane e/o spesso non ricevevo nemmeno una risposta ancora oggi! e questo non perchè sono antipatici e/o sgorbutici, ma perchè anche loro/noi abbiamo una vita oltre a SoD, quindi tante cose le ho scoperte veramente da solo e altre ancora per me sono un mistero e ti consiglio di fare come me, prendile per buono!
Ora fai tutte le tue prove, magari avessi avuto io un'esempio completo di quello che volevo realizzare. Io ti sto aiutando perchè possa servire a tante altre persone che vorrebbero affacciarsi a questo mondo, quindi ti chiedo di pubblicare una richiesta alla volta!

Quindi prova e riprova come ho fatto io.

Costaplus

Re: semplice guida per creare un canale in Sod

Publicado: 06 Oct 2016, 12:02
por Nathan Drake
costaplus escribió:Ciao a tutti,
avevo dato un compitino facile facile da fare a casa.... ma nessuno lo ha calcolato! quindi inizio a postare una prima bozza di soluzione, iniziamo:

Link:http://filmhdstreaming.net/ e fin qui tutto ok

iniziamo a creare i 2 file in channels:

-fimlhdstreaming.py
-filmhdstreaming.xml

in filmhdstreaming.xml mettiamo questo:

Código: Seleccionar todo

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<channel>
	<id>filmhdstreaming</id>
	<name>Filmhdstreaming</name>

	<active>true</active>
	<adult>false</adult>
	<language>it</language>

	<fanart></fanart>
	<thumbnail>http://filmhdstreaming.net/css/images/logo3.png</thumbnail>
	<bannermenu>http://filmhdstreaming.net/css/images/logo3.png</bannermenu>

	<update_url>https://raw.githubusercontent.com/streamondemand/plugin.video.streamondemand/master/channels/</update_url>
	<version>1</version>
	<date>05/10/2016</date>
	<changes>New channel</changes>

	<categories>
		<category>movie</category>

	</categories>

	<settings>
		<id>include_in_global_search</id>
		<type>bool</type>
		<label>Includi ricerca globale</label>
		<default>true</default>
		<enabled>true</enabled>
		<visible>true</visible>
	</settings>
</channel>
ora vi posto una bozza iniziale del file fimlhdstreaming.py

questo però ve lo andate ad osservare su pastebin, qui sul forum si presenta male e in modo confuso...

http://pastebin.com/raw/aHiVrUQS

Bene ora osservate ed esercitatevi.... poi ne discutiamo insieme.

Costaplus

Ma nel file .py per completarlo manca solo findvid?

def findvid(item):
logger.info("[filmhdstreaming.py] findvideos")

# Downloads page
data = item.url

itemlist = scrapertools.cache_page(data=data)
for videoitem in itemlist:
videoitem.title = item.title + videoitem.title
videoitem.fulltitle = item.fulltitle
videoitem.thumbnail = item.thumbnail
videoitem.channel = __channel__

return itemlist

Re: semplice guida per creare un canale in Sod

Publicado: 06 Oct 2016, 14:56
por DjDiabolik
dentaku65 escribió:@djdiabolik i file .pyo sono generati automaticamente da python, vengono creati dinamicamente ogni volta che viene chiamato/eseguito il .py corrispondente; immaginali come una sorta di eseguibile memorizzato, non hanno nulla a che vedere con il codice
Ok grande.......... ora sto cercando di capire una cosa fondamentale :)
Cioè una volta che io lancio e carico il canale dal SOD questo, se ho capito bene, non fa altro che andare a riprendere il sorgente della pagina principale del mio sito (in questo caso tvshow.me appunto) giusto ?

Poi ho capito appunto che il pardon appunto è l'espressione regolare che dai sorgenti completi usa per ottenere i vari link.............. sto cercando di capire com'è che funzionano le espressioni regolari però c'è una cosa che non ho capito di fondo:
Cioè io devo partire dalle sorgenti complete oppure il SOD fa già una scrematura di base al momento che scarica la home page diciamo ?

Cioè io per esempio partendo dai channel già presenti di default stavo ieri sera creando qualcosa di simile (si può vedere che non ho fatto ancora tutte le modifiche):

Código: Seleccionar todo

# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# streamondemand.- XBMC Plugin
# Canal para strfilm
# http://blog.tvalacarta.info/plugin-xbmc/streamondemand.
# ------------------------------------------------------------
import re
import urlparse

from core import config
from core import logger
from core import scrapertools
from core.item import Item
from core.tmdb import infoSod

__channel__ = "tvshowme"
__category__ = "S"
__type__ = "generic"
__title__ = "Tvshow.me TEST"
__language__ = "IT"

DEBUG = config.get_setting("debug")

host = "http://www.tvshow.me/"


def isGeneric():
    return True
	
def mainlist(item):
    logger.info("streamondemand.tvshowme mainlist")
    itemlist = [Item(channel=__channel__,
                     title="[COLOR azure]Ultimi Film Inseriti[/COLOR]",
                     action="peliculas",
                     url=host,
                     thumbnail="http://orig03.deviantart.net/6889/f/2014/079/7/b/movies_and_popcorn_folder_icon_by_matheusgrilo-d7ay4tw.png")]
	return itemlist
	
def peliculas(item):
    logger.info("streamondemand.tvshowme peliculas")
    itemlist = []

    # Descarga la pagina
    data = scrapertools.cache_page(item.url)	
Appunto poi dopo di questo c'è il primo pardon e la prima espressione regolare....... però io vorrei sapere una cosa:
Ho visto anche il sito per il test delle espressioni regolari e sembra essere funzionante dopo che aver settato appunto phyton .py ma c'è un paio di cose che non ho capito.... su quale porzione di codice sorgente devo andare a lavorare per trovare l'espressione e cosa poi alla fine devo arrivare ad ottenere.............

Sembra facile.......... ma non lo è affatto se poi non si conosce come lavora il sod stesso.....

Re: semplice guida per creare un canale in Sod

Publicado: 07 Oct 2016, 14:50
por angel27
Ciao a tutti, mi sono appena iscritto e non vedo l'ora di mettere in pratica tutto quello che riuscirò ad apprendere da questa guida. Spero solo di riuscire a creare un canale, sarebbe davvero fantastico poter contribuire a questo fantastico progetto. Per il momento sto rileggendo tutti i post e come indicato sono in procinto di creare i 3 file indicati nella guida. Chiedo solo un po' di pazienza a costaplus nelle fasi in cui sono sicuro mi perdero'. :)

Re: semplice guida per creare un canale in Sod

Publicado: 07 Oct 2016, 18:45
por costaplus
Benvenuto Angel,
Non preoccuparti scrivi qualsiasi dubbio, se posso rispondo volentieri.
Volevo solo ricordare a tutti che i file nella nuova release diventano 2!
Di tanto in tanto aggiorno il post iniziale per non perdersi.

@nathan sei sulla strada giusta, appena posso vi spiego il magico findvideos.

A presto.

Costaplus

Re: semplice guida per creare un canale in Sod

Publicado: 10 Oct 2016, 22:50
por bakiko
Salve a tutti. Colgo l occasione per ringraziare colui che ha fatto questa guida.
Io avevo iniziato da poco e stavo cercando di realizzare qualche cosa. In particolare stavo cercando di aggiungere i link da [url]http://www.eurostreaming.video/category/films/.

Código: Seleccionar todo

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<channel>
    <id>eurostreamingvideo</id>
    <name>Eurostreamingvideo</name>

    <active>true</active>
    <adult>false</adult>
    <language>it</language>

    <fanart></fanart>
    <thumbnail>http://www.eurostreaming.video/wp-content/themes/eurostreaming/images/logo.png</thumbnail>
    <bannermenu>http://www.eurostreaming.video/wp-content/themes/eurostreaming/images/logo.png</bannermenu>

    <update_url>https://raw.githubusercontent.com/streamondemand/plugin.video.streamondemand/master/channels/</update_url>
    <version>1</version>
    <date>24/09/2016</date>
    <changes>update</changes>

    <categories>
        <category>movie</category>
        <category>serie</category>
        <category>anime</category>
    </categories>

    <settings>
        <include_in_global_search>true</include_in_global_search>
    </settings>
</channel>
mentre il file .py

Código: Seleccionar todo

__channel__ = "eurostreamingvideo"
__category__ = "F"
__type__ = "generic"
__title__ = "Eurostreaming.video"
__language__ = "IT"

host = "http://www.eurostreaming.video"

headers = [
    ['User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0'],
    ['Accept-Encoding', 'gzip, deflate'],
    ['Referer', host]
]

DEBUG = config.get_setting("debug")


def isGeneric():
    return True


def mainlist(item):
    logger.info("streamondemand.eurostreamingvideo mainlist")
    itemlist = [Item(channel=__channel__,
                     title="[COLOR azure]Film[/COLOR]",
                     action="list_films",
                     url="%s/category/films/" % host,
                     thumbnail="https://s-media-cache-ak0.pinimg.com/originals/5b/e7/20/5be7200f111104bc1aa81b8cf1914356.jpg"),
                Item(channel=__channel__,
                     title="[COLOR azure]Serie TV[/COLOR]",
                     action="list_serie_tv",
                     url="%s/category/serie/" % host,
                     thumbnail="https://infoserietelevisive.files.wordpress.com/2014/06/cropped-serie-tv-logo1.png"),
                Item(channel=__channel__,
                     title="[COLOR azure]Anime-Cartoni[/COLOR]",
                     action="list_anime",
                     url="%s/category/anime-cartoni-animati/" % host,
                     thumbnail="http://www.animecel.eu/EN/immagini/Holly%20e%20Benji_001.jpg")]
    return itemlist


def list_films(item):
    logger.info("streamondemand.eurostreamingvideo list_films")
    itemlist = []
    data = scrapertools.cache_page(item.url)

    #Extrae las entradas (carpetas)
    patron = '<div class="container-index-post col-xs-6 col-sm-4 col-md-2-5 col-lg-2-5">.*?'
    patron += '<a href="([^"]+)">'
    patron += '<img src="([^"]+)"'

    matches = re.compile(patron, re.DOTALL).findall(data)

    for scrapedurl, scrapedthumbnail, scrapedtitle in matches:
        scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle)

        itemlist.append(infoSod(
            Item(channel=__channel__,
                 action="findvideos",
                 title=scrapedtitle,
                 url=scrapedurl,
                 thumbnail=urlparse.urljoin(host, scrapedthumbnail),
                 fulltitle=scrapedtitle,
                 show=scrapedtitle), tipo='movie'))

    # Paginación
    #next_page = scrapertools.find_single_match(data, '<span>\d+</span> <a href="([^"]+)">')
    #if next_page != "":
    #    itemlist.append(
    #        Item(channel=__channel__,
    #             action="serietv",
    #             title="[COLOR orange]Successivo >>[/COLOR]",
    #             url=next_page))

    return itemlist
Piccole curiosità che volevo chiedere:
- esiste una libreria tipo jsoup per il parsing Html in python?
- come faccio a testare/debuggare ?
- è possibile ricevere qualche info in più sul parsing da effettuare, perché non riesco a capire come muovermi tra i vari nodi.

Grazie mille per il lavoro che fate, avevo realizzato anche il file json che però è stato eliminato nell'ultima release.

Re: semplice guida per creare un canale in Sod

Publicado: 13 Oct 2016, 16:25
por costaplus
bakiko escribió:Salve a tutti. Colgo l occasione per ringraziare colui che ha fatto questa guida.
Io avevo iniziato da poco e stavo cercando di realizzare qualche cosa. In particolare stavo cercando di aggiungere i link da [url]http://www.eurostreaming.video/category/films/.

Código: Seleccionar todo

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<channel>
    <id>eurostreamingvideo</id>
    <name>Eurostreamingvideo</name>

    <active>true</active>
    <adult>false</adult>
    <language>it</language>

    <fanart></fanart>
    <thumbnail>http://www.eurostreaming.video/wp-content/themes/eurostreaming/images/logo.png</thumbnail>
    <bannermenu>http://www.eurostreaming.video/wp-content/themes/eurostreaming/images/logo.png</bannermenu>

    <update_url>https://raw.githubusercontent.com/streamondemand/plugin.video.streamondemand/master/channels/</update_url>
    <version>1</version>
    <date>24/09/2016</date>
    <changes>update</changes>

    <categories>
        <category>movie</category>
        <category>serie</category>
        <category>anime</category>
    </categories>

    <settings>
        <include_in_global_search>true</include_in_global_search>
    </settings>
</channel>
mentre il file .py

Código: Seleccionar todo

__channel__ = "eurostreamingvideo"
__category__ = "F"
__type__ = "generic"
__title__ = "Eurostreaming.video"
__language__ = "IT"

host = "http://www.eurostreaming.video"

headers = [
    ['User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0'],
    ['Accept-Encoding', 'gzip, deflate'],
    ['Referer', host]
]

DEBUG = config.get_setting("debug")


def isGeneric():
    return True


def mainlist(item):
    logger.info("streamondemand.eurostreamingvideo mainlist")
    itemlist = [Item(channel=__channel__,
                     title="[COLOR azure]Film[/COLOR]",
                     action="list_films",
                     url="%s/category/films/" % host,
                     thumbnail="https://s-media-cache-ak0.pinimg.com/originals/5b/e7/20/5be7200f111104bc1aa81b8cf1914356.jpg"),
                Item(channel=__channel__,
                     title="[COLOR azure]Serie TV[/COLOR]",
                     action="list_serie_tv",
                     url="%s/category/serie/" % host,
                     thumbnail="https://infoserietelevisive.files.wordpress.com/2014/06/cropped-serie-tv-logo1.png"),
                Item(channel=__channel__,
                     title="[COLOR azure]Anime-Cartoni[/COLOR]",
                     action="list_anime",
                     url="%s/category/anime-cartoni-animati/" % host,
                     thumbnail="http://www.animecel.eu/EN/immagini/Holly%20e%20Benji_001.jpg")]
    return itemlist


def list_films(item):
    logger.info("streamondemand.eurostreamingvideo list_films")
    itemlist = []
    data = scrapertools.cache_page(item.url)

    #Extrae las entradas (carpetas)
    patron = '<div class="container-index-post col-xs-6 col-sm-4 col-md-2-5 col-lg-2-5">.*?'
    patron += '<a href="([^"]+)">'
    patron += '<img src="([^"]+)"'

    matches = re.compile(patron, re.DOTALL).findall(data)

    for scrapedurl, scrapedthumbnail, scrapedtitle in matches:
        scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle)

        itemlist.append(infoSod(
            Item(channel=__channel__,
                 action="findvideos",
                 title=scrapedtitle,
                 url=scrapedurl,
                 thumbnail=urlparse.urljoin(host, scrapedthumbnail),
                 fulltitle=scrapedtitle,
                 show=scrapedtitle), tipo='movie'))

    # Paginación
    #next_page = scrapertools.find_single_match(data, '<span>\d+</span> <a href="([^"]+)">')
    #if next_page != "":
    #    itemlist.append(
    #        Item(channel=__channel__,
    #             action="serietv",
    #             title="[COLOR orange]Successivo >>[/COLOR]",
    #             url=next_page))

    return itemlist
Piccole curiosità che volevo chiedere:
- esiste una libreria tipo jsoup per il parsing Html in python?
- come faccio a testare/debuggare ?
- è possibile ricevere qualche info in più sul parsing da effettuare, perché non riesco a capire come muovermi tra i vari nodi.

Grazie mille per il lavoro che fate, avevo realizzato anche il file json che però è stato eliminato nell'ultima release.
Ciao bakiko,
Eccoti chi ha scritto la guida, puoi fare riferimento a me per qualsiasi dubbio!
Non ho avuto modo di testare il tuo canale di prova, ma posso aiutarti a portare a termine la tua missione a patto che ci aiuti!! :lol:

Se non ricordo male nella guida c'era scritto.. pii tardi ti illumino, nel frattempo fammi delle domande più precise, nel senso quali cosa vuoi ottenere, e ti spiego come faccio io, facciamo prima.

Ti aspetto.

Costaplus

Re: semplice guida per creare un canale in Sod

Publicado: 06 Nov 2016, 15:50
por pesi
Ciao, tornando al primo post di questo thread, come si implemantano le funzioni "scarica tutti gli episodi" e "aggiungi [nomeserie] alla libreria" alla fine della lista degli episodi? Grazie in anticipo.

Re: semplice guida per creare un canale in Sod

Publicado: 06 Nov 2016, 16:35
por costaplus
pesi escribió:Ciao, tornando al primo post di questo thread, come si implemantano le funzioni "scarica tutti gli episodi" e "aggiungi [nomeserie] alla libreria" alla fine della lista degli episodi? Grazie in anticipo.

Código: Seleccionar todo

   if config.get_library_support() and len(itemlist) != 0:
        itemlist.append(
            Item(channel=__channel__,
                 title=item.title + " (Add Serie to Library)",
                 url=item.url,
                 action="add_serie_to_library",
                 extra="episodios",
                 show=item.show))
        itemlist.append(
            Item(channel=item.channel,
                 title="Scarica tutti gli episodi della serie",
                 url=item.url,
                 action="download_all_episodes",
                 extra="episodios",
                 show=item.show))

Eccoti la parte che ti serve.. ovviamente è da sistemare...
Costaplus

Re: semplice guida per creare un canale in Sod

Publicado: 06 Nov 2016, 20:08
por pesi
Grazie della risposta, guardando i files py degli altri siti avevo capito che era quella la parte da aggiungere ma purtroppo a causa della mia niubbagine non riesco ad implementare la funzione su animevision. Aspetterò pazientemente che qualche anima pia più competente ci metta le mani. Grazie ancora