aboutsummaryrefslogtreecommitdiff
path: root/bridges/ExtremeDownloadBridge.php
blob: 074045dff88ef72ffdb7082f772f794f0709e1f0 (plain) (blame)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php

class ExtremeDownloadBridge extends BridgeAbstract
{
    const NAME = 'Extreme Download';
    const URI = 'https://www.extreme-down.plus/';
    const DESCRIPTION = 'Suivi de série sur Extreme Download';
    const MAINTAINER = 'sysadminstory';
    const PARAMETERS = [
        'Suivre la publication des épisodes d\'une série en cours de diffusion' => [
            'url' => [
                'name' => 'URL de la série',
                'type' => 'text',
                'required' => true,
                'title' => 'URL d\'une série sans le https://www.extreme-down.plus/',
                'exampleValue' => 'series-hd/hd-series-vostfr/46631-halt-and-catch-fire-saison-04-vostfr-hdtv-720p.html'],
            'filter' => [
                'name' => 'Type de contenu',
                'type' => 'list',
                'title' => 'Type de contenu à suivre : Téléchargement, Streaming ou les deux',
                'values' => [
                    'Streaming et Téléchargement' => 'both',
                    'Téléchargement' => 'download',
                    'Streaming' => 'streaming'
                    ]
                ]
            ]
        ];

    public function collectData()
    {
        $html = getSimpleHTMLDOM(self::URI . $this->getInput('url'));

        $filter = $this->getInput('filter');

        $typesText = [
            'download' => 'Téléchargement',
            'streaming' => 'Streaming'
        ];

        // Get the TV show title
        $this->showTitle = trim($html->find('span[id=news-title]', 0)->plaintext);

        $list = $html->find('div[class=prez_7]');
        foreach ($list as $element) {
            $add = false;
            // Link type is needed is needed to generate an unique link
            $type = $this->findLinkType($element);
            if ($filter == 'both') {
                $add = true;
            } else {
                if ($type == $filter) {
                    $add = true;
                }
            }
            if ($add == true) {
                $item = [];

                // Get the element name
                $title = $element->plaintext;

                // Get thee element links
                $links = $element->next_sibling()->innertext;

                $item['content'] = $links;
                $item['title'] = $this->showTitle . ' ' . $title . ' - ' . $typesText[$type];
                // As RSS Bridge use the URI as GUID they need to be unique : adding a md5 hash of the title element
                // should geneerate unique URI to prevent confusion for RSS readers
                $item['uri'] = self::URI . $this->getInput('url') . '#' . hash('md5', $item['title']);

                $this->items[] = $item;
            }
        }
    }

    public function getName()
    {
        switch ($this->queriedContext) {
            case 'Suivre la publication des épisodes d\'une série en cours de diffusion':
                return $this->showTitle . ' - ' . self::NAME;
            break;
            default:
                return self::NAME;
        }
    }

    public function getURI()
    {
        switch ($this->queriedContext) {
            case 'Suivre la publication des épisodes d\'une série en cours de diffusion':
                return self::URI . $this->getInput('url');
            break;
            default:
                return self::URI;
        }
    }

    private function findLinkType($element)
    {
        $return = '';
        // Walk through all elements in the reverse order until finding one with class 'presz_2'
        while ($element->class != 'prez_2') {
            $element = $element->prev_sibling();
        }
        $text = html_entity_decode($element->plaintext);

        // Regarding the text of the element, return the according link type
        if (stristr($text, 'téléchargement') != false) {
            $return = 'download';
        } elseif (stristr($text, 'streaming') != false) {
            $return = 'streaming';
        }

        return $return;
    }
}